Version: dev

EffectiveHenrysLaw

Effective Henry's law constant for species that dissociate in water, accounting for the enhancement due to aqueous dissociation products. The effective constant H* exceeds the intrinsic H because dissolved dissociation products add to the total aqueous loading. Covers diprotic species (CO₂, SO₂) and monoprotic species (HNO₃, K₂=0). From Seinfeld & Pandis Chapter 7, Equations 7.24 (CO₂), 7.41 (SO₂), 7.61 (HNO₃).

Domain
aerosol
Subdomain
henrys_law
Type
model
.esm schema
1.0.0
Source
components/aerosol/henrys_law/effective_henrys_law.esm
Tags
#aerosol #henrys_law #model #henrys-law #aqueous-chemistry #dissociation

Description

Effective Henry’s law constant for species that dissociate in water, accounting for the enhancement due to aqueous dissociation products. The effective constant H* exceeds the intrinsic H because dissolved dissociation products add to the total aqueous loading. Covers diprotic species (CO₂, SO₂) and monoprotic species (HNO₃, K₂=0). From Seinfeld & Pandis Chapter 7, Equations 7.24 (CO₂), 7.41 (SO₂), 7.61 (HNO₃).

Reference

Seinfeld, J. H. and Pandis, S. N. (2006) Atmospheric Chemistry and Physics, 2nd Edition, Chapter 7, Eq. 7.24/7.41/7.61 — effective Henry’s law constant for dissociating species. Migrated from Aerosol.jl src/henrys_law.jl EffectiveHenrysLaw (esm-kon).

_source_ref: Aerosol.jl@main:src/henrys_law.jl:240 Upstream EffectiveHenrysLaw is an MTK @component with three parameters (H_intrinsic, K_1, K_2), and two variables (H_plus, H_eff). The equation is: • H_eff ~ H_intrinsic * (1 + K_1/H_plus + K_1*K_2/H_plus^2) The equation is algebraic (no derivatives), making this an observed-only component.

Observability classification: observed-only — the single output H_eff is given by an algebraic equation in terms of input H_plus and three parameters. Test scenarios use time_span: [0, 1] and sample at t=0.

ESM representation note: in the upstream MTK component H_plus is an @variable supplied externally as the input; in this .esm it is represented as a parameter (not a state) so the system is well-posed under the schema’s equation-count rule (one equation per state) and to match the observed-only pattern used elsewhere in this rig (see components/aerosol/organic/bet.esm). Tests vary H_plus via parameter_overrides, and the ph_sweep example sweeps H_plus as a parameter dimension.

Monoprotic acid limit: setting K_2=0 collapses the third term, giving H_eff = H_intrinsic*(1 + K_1/H_plus), which models HNO₃-like singly dissociating species (Eq. 7.61).

All concentrations (H_intrinsic, K_1, K_2, H_plus) use SI units mol/m³ and mol/m³/Pa so the ratios K_1/H_plus and K_1*K_2/H_plus² are dimensionless.

Tolerance rationale (model-level rel=1e-9): observed-only algebraic system (no ODE integration); the equation involves only arithmetic operations. Floating-point round-off is ~1e-15. 1e-9 leaves comfortable headroom._

Parameters

NameUnitsDefaultDescription
H_intrinsicmol/m^3/Pa1.0Intrinsic (physical) Henry’s law constant at reference conditions
K_1mol/m^31.0First dissociation constant (e.g., K_s1 for SO₂, K_c1 for CO₂, K_n1 for HNO₃)
K_2mol/m^30.0Second dissociation constant (e.g., K_s2 for SO₂, K_c2 for CO₂). Set to 0 for monoprotic acids.
H_plusmol/m^31.0Hydrogen ion concentration [H⁺]. Input parameter — the observed-only model has one algebraic equation for H_eff given H_plus. Higher H_plus (lower pH) reduces enhancement; lower H_plus (higher pH) increases enhancement.

Observed

NameUnitsDefaultDescription
H_effmol/m^3/PaEffective Henry’s law constant accounting for dissociation. Always >= H_intrinsic.

Observed expressions

$$ H_{eff} = H_{intrinsic} \cdot \left(1 + \frac{K_{1}}{H_{plus}} + \frac{K_{1} \cdot K_{2}}{H_{plus}^{2}}\right) $$

Effective Henry’s law constant accounting for dissociation. Always >= H_intrinsic.

Analyses

ph_sweep

Sweep H⁺ concentration from 0.01 to 10.0 mol/m³ (pH sweep from high to low) to show how the effective Henry’s law constant decreases as H_plus increases. At low H_plus the dissociation terms dominate, greatly amplifying solubility. SO₂-like parameters: H_intrinsic=1.0, K_1=1.0, K_2=0.01.

Time span: 0.0 → 1.0

Swept over: H_plus

Effective Henry’s law constant H_eff vs H⁺ concentration — shows strong enhancement at low H_plus (high pH) where dissociation products dominate.

Raw .esm

Raw .esm JSON (this component)
{
  "reference": {
    "citation": "Seinfeld, J. H. and Pandis, S. N. (2006) Atmospheric Chemistry and Physics, 2nd Edition, Chapter 7, Eq. 7.24/7.41/7.61 — effective Henry's law constant for dissociating species. Migrated from Aerosol.jl src/henrys_law.jl `EffectiveHenrysLaw` (esm-kon).",
    "notes": "source_ref: Aerosol.jl@main:src/henrys_law.jl:240\nUpstream `EffectiveHenrysLaw` is an MTK `@component` with three parameters (H_intrinsic, K_1, K_2), and two variables (H_plus, H_eff). The equation is:\n  • H_eff ~ H_intrinsic * (1 + K_1/H_plus + K_1*K_2/H_plus^2)\nThe equation is algebraic (no derivatives), making this an observed-only component.\n\nObservability classification: observed-only — the single output H_eff is given by an algebraic equation in terms of input H_plus and three parameters. Test scenarios use `time_span: [0, 1]` and sample at t=0.\n\nESM representation note: in the upstream MTK component H_plus is an `@variable` supplied externally as the input; in this .esm it is represented as a `parameter` (not a state) so the system is well-posed under the schema's equation-count rule (one equation per state) and to match the observed-only pattern used elsewhere in this rig (see components/aerosol/organic/bet.esm). Tests vary H_plus via `parameter_overrides`, and the `ph_sweep` example sweeps H_plus as a parameter dimension.\n\nMonoprotic acid limit: setting K_2=0 collapses the third term, giving H_eff = H_intrinsic*(1 + K_1/H_plus), which models HNO₃-like singly dissociating species (Eq. 7.61).\n\nAll concentrations (H_intrinsic, K_1, K_2, H_plus) use SI units mol/m³ and mol/m³/Pa so the ratios K_1/H_plus and K_1*K_2/H_plus² are dimensionless.\n\nTolerance rationale (model-level rel=1e-9): observed-only algebraic system (no ODE integration); the equation involves only arithmetic operations. Floating-point round-off is ~1e-15. 1e-9 leaves comfortable headroom."
  },
  "tolerance": {
    "rel": 1e-09
  },
  "variables": {
    "H_intrinsic": {
      "type": "parameter",
      "units": "mol/m^3/Pa",
      "default": 1.0,
      "description": "Intrinsic (physical) Henry's law constant at reference conditions"
    },
    "K_1": {
      "type": "parameter",
      "units": "mol/m^3",
      "default": 1.0,
      "description": "First dissociation constant (e.g., K_s1 for SO₂, K_c1 for CO₂, K_n1 for HNO₃)"
    },
    "K_2": {
      "type": "parameter",
      "units": "mol/m^3",
      "default": 0.0,
      "description": "Second dissociation constant (e.g., K_s2 for SO₂, K_c2 for CO₂). Set to 0 for monoprotic acids."
    },
    "H_plus": {
      "type": "parameter",
      "units": "mol/m^3",
      "default": 1.0,
      "description": "Hydrogen ion concentration [H⁺]. Input parameter — the observed-only model has one algebraic equation for H_eff given H_plus. Higher H_plus (lower pH) reduces enhancement; lower H_plus (higher pH) increases enhancement."
    },
    "H_eff": {
      "type": "unknown",
      "units": "mol/m^3/Pa",
      "description": "Effective Henry's law constant accounting for dissociation. Always >= H_intrinsic."
    }
  },
  "equations": [
    {
      "lhs": "H_eff",
      "rhs": {
        "op": "*",
        "args": [
          "H_intrinsic",
          {
            "op": "+",
            "args": [
              {
                "op": "+",
                "args": [
                  1,
                  {
                    "op": "/",
                    "args": [
                      "K_1",
                      "H_plus"
                    ]
                  }
                ]
              },
              {
                "op": "/",
                "args": [
                  {
                    "op": "*",
                    "args": [
                      "K_1",
                      "K_2"
                    ]
                  },
                  {
                    "op": "^",
                    "args": [
                      "H_plus",
                      2
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    }
  ],
  "tests": [
    {
      "id": "unit_parameters",
      "description": "All parameters equal to 1.0. H_eff = 1.0 * (1 + 1/1 + 1*1/1^2) = 3.0 mol/m^3/Pa.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_overrides": {
        "H_intrinsic": 1.0,
        "K_1": 1.0,
        "K_2": 1.0,
        "H_plus": 1.0
      },
      "assertions": [
        {
          "variable": "H_eff",
          "time": 0.0,
          "expected": 3.0,
          "tolerance": {
            "rel": 1e-06
          }
        }
      ]
    },
    {
      "id": "monoprotic_acid",
      "description": "Monoprotic acid limit (K_2=0): H_eff = H_intrinsic*(1 + K_1/H_plus). With H_intrinsic=2.0, K_1=3.0, K_2=0.0, H_plus=1.0: H_eff = 2.0*(1+3) = 8.0 mol/m^3/Pa.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_overrides": {
        "H_intrinsic": 2.0,
        "K_1": 3.0,
        "K_2": 0.0,
        "H_plus": 1.0
      },
      "assertions": [
        {
          "variable": "H_eff",
          "time": 0.0,
          "expected": 8.0,
          "tolerance": {
            "rel": 1e-06
          }
        }
      ]
    },
    {
      "id": "high_ph_large_enhancement",
      "description": "Low H_plus (high pH) gives large enhancement. H_intrinsic=1.0, K_1=1.0, K_2=1.0, H_plus=0.1: H_eff = 1*(1 + 10 + 100) = 111.0 mol/m^3/Pa.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_overrides": {
        "H_intrinsic": 1.0,
        "K_1": 1.0,
        "K_2": 1.0,
        "H_plus": 0.1
      },
      "assertions": [
        {
          "variable": "H_eff",
          "time": 0.0,
          "expected": 111.0,
          "tolerance": {
            "rel": 1e-06
          }
        }
      ]
    },
    {
      "id": "low_ph_minimal_enhancement",
      "description": "High H_plus (low pH) → enhancement ≈ 1. H_intrinsic=1.0, K_1=1.0, K_2=1.0, H_plus=100.0: H_eff = 1*(1 + 0.01 + 0.0001) = 1.0101 mol/m^3/Pa.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_overrides": {
        "H_intrinsic": 1.0,
        "K_1": 1.0,
        "K_2": 1.0,
        "H_plus": 100.0
      },
      "assertions": [
        {
          "variable": "H_eff",
          "time": 0.0,
          "expected": 1.0101,
          "tolerance": {
            "rel": 1e-06
          }
        }
      ]
    }
  ],
  "analyses": [
    {
      "id": "ph_sweep",
      "description": "Sweep H⁺ concentration from 0.01 to 10.0 mol/m³ (pH sweep from high to low) to show how the effective Henry's law constant decreases as H_plus increases. At low H_plus the dissociation terms dominate, greatly amplifying solubility. SO₂-like parameters: H_intrinsic=1.0, K_1=1.0, K_2=0.01.",
      "initial_state": {},
      "parameters": {
        "H_intrinsic": 1.0,
        "K_1": 1.0,
        "K_2": 0.01
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_sweep": {
        "type": "cartesian",
        "dimensions": [
          {
            "parameter": "H_plus",
            "range": {
              "start": 0.01,
              "stop": 10.0,
              "count": 50
            }
          }
        ]
      },
      "plots": [
        {
          "id": "effective_heff_vs_hplus",
          "type": "line",
          "description": "Effective Henry's law constant H_eff vs H⁺ concentration — shows strong enhancement at low H_plus (high pH) where dissociation products dominate.",
          "x": {
            "variable": "H_plus",
            "label": "H⁺ (mol/m³)"
          },
          "y": {
            "variable": "H_eff",
            "label": "H_eff (mol/m³/Pa)"
          }
        }
      ]
    }
  ]
}