Version: dev

HNO3Equilibria

HNO3 gas-aqueous dissolution and dissociation equilibria. Migrated from Aerosol.jl@c8c640bb src/aqueous_equilibria.jl:438 (`HNO3Equilibria` @component). Implements Seinfeld & Pandis Ch 7 §7.3.5 (Eq 7.53–7.54, 7.58, 7.61): K_H(HNO3, 298 K) = 2.1×10⁵ M/atm (temperature-independent, dH≈0), K_n1(HNO3, 298 K) = 15.4 M (temperature-independent). HNO3 is a strong acid (pKa ≈ −1.2) that essentially completely dissociates at all atmospheric pH values. Parameterized as observed-only: T, H_plus, and p_HNO3 are inputs; H_HNO3, K_n1, HNO3_aq, NO3_minus, HNO3_total, H_HNO3_eff are algebraic outputs.

.esm schema
1.0.0
Source
components/aerosol/aq_eq/hno3.esm

Description

HNO3 gas-aqueous dissolution and dissociation equilibria. Migrated from Aerosol.jl@c8c640bb src/aqueous_equilibria.jl:438 (HNO3Equilibria @component). Implements Seinfeld & Pandis Ch 7 §7.3.5 (Eq 7.53–7.54, 7.58, 7.61): K_H(HNO3, 298 K) = 2.1×10⁵ M/atm (temperature-independent, dH≈0), K_n1(HNO3, 298 K) = 15.4 M (temperature-independent). HNO3 is a strong acid (pKa ≈ −1.2) that essentially completely dissociates at all atmospheric pH values. Parameterized as observed-only: T, H_plus, and p_HNO3 are inputs; H_HNO3, K_n1, HNO3_aq, NO3_minus, HNO3_total, H_HNO3_eff are algebraic outputs.

Reference

_source_ref: Aerosol.jl@c8c640bb:src/aqueous_equilibria.jl:438

Upstream HNO3Equilibria is an MTK @component where T, H_plus, and p_HNO3 are @variables driven by a parent AqueousEquilibria system. For standalone serialization (and to make the component well-posed in isolation), T, H_plus, and p_HNO3 are declared as parameters here — matching the bead’s (S, observed-only) classification. The six algebraic equations are unchanged from upstream.

Key property: HNO3 is a strong acid (K_n1 = 15.4 M, pKa ≈ −1.2). At all atmospheric pH values (pH 0–7), K_n1/[H+] ≫ 1: e.g. at pH 4 K_n1/H+ = 1.54×10⁵, at pH 2 K_n1/H+ = 1540. This means NO3⁻ ≫ HNO3(aq) and H*_HNO3 ≫ H_HNO3 for virtually all atmospheric conditions. Only at [H+] ≥ K_n1 (≥ 15.4 mol/L, extremely concentrated acid) does incomplete dissociation occur.

Key difference from SO2/CO2/NH3/H2O2: both dH_H_HNO3 and the temperature dependence of K_n1 are zero (upstream uses K_n1 ~ K_n1_298 with no van’t Hoff correction). The van’t Hoff form for H_HNO3 is retained for interface consistency, but exp(0) = 1 so H_HNO3 = H_HNO3_298 at all temperatures.

H_HNO3_298 = 2.1×10⁵ M/atm × 1000 mol·m⁻³/M ÷ 101325 Pa/atm = 2072.5389 mol/(m³·Pa). K_n1_298 = 15.4 M × 1000 = 15400 mol/m³.

Tolerance rationale (model-level rel=1e-6): observed-only algebraic system (no ODE integration); 1e-6 covers float64 roundoff in the simple arithmetic expressions. Since dH=0 the van’t Hoff exp() evaluates to exactly 1.0 at any T; all other operations are multiplications, divisions, and additions._

Parameters

NameUnitsDefaultDescription
TK298.0Temperature
H_plusmol/m^30.0001Hydrogen ion concentration (1e-4 mol/m³ = pH 7 in pure water at 298 K)
p_HNO3Pa1.0Partial pressure of HNO3
R_gasJ/mol/K8.314Gas constant
T_refK298.0Reference temperature
H_HNO3_298mol/m^3/Pa2072.53886010363Henry’s law constant for HNO3 at 298 K (2.1×10⁵ M/atm converted to mol/(m³·Pa): 2.1e5 / 101325.0 * 1000.0)
dH_H_HNO3J/mol0.0Heat of dissolution for HNO3 (negligible temperature dependence; Seinfeld & Pandis Table 7.4)
K_n1_298mol/m^315400.0Dissociation constant for HNO3 → H⁺ + NO3⁻ at 298 K (15.4 M converted to mol/m³; temperature-independent in upstream source; pKa ≈ −1.2)

Observed

NameUnitsDefaultDescription
H_HNO3mol/m^3/PaTemperature-dependent Henry’s law constant for HNO3 (equals H_HNO3_298 since dH=0)
K_n1mol/m^3Dissociation constant HNO3 → H⁺ + NO3⁻ (temperature-independent: K_n1 = K_n1_298)
HNO3_aqmol/m^3Undissociated aqueous HNO3 concentration
NO3_minusmol/m^3Nitrate anion concentration [NO3-]
HNO3_totalmol/m^3Total dissolved nitric acid: [HNO3(aq)] + [NO3-]
H_HNO3_effmol/m^3/PaEffective Henry’s law constant for HNO3 accounting for dissociation: H_HNO3 × (1 + K_n1/[H+])

Observed expressions

$$ H_{HNO3} = H_{HNO3\,298} \cdot e^{\frac{dH_{H\,HNO3}}{R_{gas}} \cdot \left(\frac{1}{T_{ref}} + \frac{-1}{T}\right)} $$

Temperature-dependent Henry’s law constant for HNO3 (equals H_HNO3_298 since dH=0)

$$ K_{n1} = K_{n1\,298} $$

Dissociation constant HNO3 → H⁺ + NO3⁻ (temperature-independent: K_n1 = K_n1_298)

$$ HNO3_{aq} = H_{HNO3} \cdot p_{HNO3} $$

Undissociated aqueous HNO3 concentration

$$ NO3_{minus} = \frac{K_{n1} \cdot HNO3_{aq}}{H_{plus}} $$

Nitrate anion concentration [NO3-]

$$ HNO3_{total} = HNO3_{aq} + NO3_{minus} $$

Total dissolved nitric acid: [HNO3(aq)] + [NO3-]

$$ H_{HNO3\,eff} = H_{HNO3} \cdot \left(1 + \frac{K_{n1}}{H_{plus}}\right) $$

Effective Henry’s law constant for HNO3 accounting for dissociation: H_HNO3 × (1 + K_n1/[H+])

Analyses

H_HNO3_eff_vs_pH

Effective Henry’s constant H*_HNO3 = H_HNO3 × (1 + K_n1/[H+]) vs [H+] at 298 K. HNO3 pKa ≈ −1.2, so K_n1/[H+] ≫ 1 across the entire atmospheric pH range (pH 0–7). H*_HNO3 decreases proportionally with increasing [H+]: at pH 7 H*_HNO3 ≈ 1.54×10⁸ × H_HNO3; at pH 2 H*_HNO3 ≈ 1540 × H_HNO3. Only at [H+] ≥ K_n1 (> 15 mol/L, beyond physically realizable aqueous solutions) does incomplete dissociation occur.

Time span: 0.0 → 1.0

Swept over: H_plus

H*_HNO3 vs (H+) — steeply decreasing effective Henry’s constant showing nearly complete dissociation at all atmospheric (H+) values.

NO3⁻ fraction of total dissolved HNO3 vs (H+). Fraction = K_n1/(K_n1 + H_plus). Equals 1 (complete dissociation) for all atmospheric conditions, approaching 0.5 only at (H+) = K_n1 ≈ 15 mol/L.

NO3_minus_vs_p_HNO3

Aqueous nitrate concentration [NO3-] as a function of HNO3 partial pressure at pH 7. Shows perfect linearity: [NO3-] = H_HNO3 × K_n1/[H+] × p_HNO3. Since HNO3 is a strong acid, essentially all dissolved HNO3 appears as NO3⁻ at atmospheric pH, making [NO3-] ≈ HNO3_total. Henry’s law linearity spans the full atmospheric HNO3 range.

Time span: 0.0 → 1.0

Swept over: p_HNO3

(NO3-) vs p_HNO3 at pH 7 — linear Henry’s law partitioning demonstrating that dissolved HNO3 is quantitatively converted to nitrate.

temperature_invariance_sweep

H_HNO3 vs temperature from 273 K to 318 K. Unlike SO2, CO2, NH3, and H2O2 (which all have significant van’t Hoff temperature dependencies), HNO3 has dH_H_HNO3 = 0 and remains constant across the full atmospheric temperature range. This flat response is characteristic of strong inorganic acids.

Time span: 0.0 → 1.0

Swept over: T

H_HNO3(T) — flat line demonstrating temperature-independent HNO3 solubility (dH=0).

Raw .esm

Raw .esm JSON (this component)
{
  "reference": {
    "notes": "source_ref: Aerosol.jl@c8c640bb:src/aqueous_equilibria.jl:438\n\nUpstream `HNO3Equilibria` is an MTK `@component` where T, H_plus, and p_HNO3 are `@variables` driven by a parent `AqueousEquilibria` system. For standalone serialization (and to make the component well-posed in isolation), T, H_plus, and p_HNO3 are declared as parameters here — matching the bead's `(S, observed-only)` classification. The six algebraic equations are unchanged from upstream.\n\nKey property: HNO3 is a strong acid (K_n1 = 15.4 M, pKa ≈ −1.2). At all atmospheric pH values (pH 0–7), K_n1/[H+] ≫ 1: e.g. at pH 4 K_n1/H+ = 1.54×10⁵, at pH 2 K_n1/H+ = 1540. This means NO3⁻ ≫ HNO3(aq) and H*_HNO3 ≫ H_HNO3 for virtually all atmospheric conditions. Only at [H+] ≥ K_n1 (≥ 15.4 mol/L, extremely concentrated acid) does incomplete dissociation occur.\n\nKey difference from SO2/CO2/NH3/H2O2: both dH_H_HNO3 and the temperature dependence of K_n1 are zero (upstream uses K_n1 ~ K_n1_298 with no van't Hoff correction). The van't Hoff form for H_HNO3 is retained for interface consistency, but exp(0) = 1 so H_HNO3 = H_HNO3_298 at all temperatures.\n\nH_HNO3_298 = 2.1×10⁵ M/atm × 1000 mol·m⁻³/M ÷ 101325 Pa/atm = 2072.5389 mol/(m³·Pa). K_n1_298 = 15.4 M × 1000 = 15400 mol/m³.\n\nTolerance rationale (model-level rel=1e-6): observed-only algebraic system (no ODE integration); 1e-6 covers float64 roundoff in the simple arithmetic expressions. Since dH=0 the van't Hoff exp() evaluates to exactly 1.0 at any T; all other operations are multiplications, divisions, and additions."
  },
  "tolerance": {
    "rel": 1e-06
  },
  "variables": {
    "T": {
      "type": "parameter",
      "units": "K",
      "default": 298.0,
      "description": "Temperature"
    },
    "H_plus": {
      "type": "parameter",
      "units": "mol/m^3",
      "default": 0.0001,
      "description": "Hydrogen ion concentration (1e-4 mol/m³ = pH 7 in pure water at 298 K)"
    },
    "p_HNO3": {
      "type": "parameter",
      "units": "Pa",
      "default": 1.0,
      "description": "Partial pressure of HNO3"
    },
    "R_gas": {
      "type": "parameter",
      "units": "J/mol/K",
      "default": 8.314,
      "description": "Gas constant"
    },
    "T_ref": {
      "type": "parameter",
      "units": "K",
      "default": 298.0,
      "description": "Reference temperature"
    },
    "H_HNO3_298": {
      "type": "parameter",
      "units": "mol/m^3/Pa",
      "default": 2072.53886010363,
      "description": "Henry's law constant for HNO3 at 298 K (2.1×10⁵ M/atm converted to mol/(m³·Pa): 2.1e5 / 101325.0 * 1000.0)"
    },
    "dH_H_HNO3": {
      "type": "parameter",
      "units": "J/mol",
      "default": 0.0,
      "description": "Heat of dissolution for HNO3 (negligible temperature dependence; Seinfeld & Pandis Table 7.4)"
    },
    "K_n1_298": {
      "type": "parameter",
      "units": "mol/m^3",
      "default": 15400.0,
      "description": "Dissociation constant for HNO3 → H⁺ + NO3⁻ at 298 K (15.4 M converted to mol/m³; temperature-independent in upstream source; pKa ≈ −1.2)"
    },
    "H_HNO3": {
      "type": "unknown",
      "units": "mol/m^3/Pa",
      "description": "Temperature-dependent Henry's law constant for HNO3 (equals H_HNO3_298 since dH=0)"
    },
    "K_n1": {
      "type": "unknown",
      "units": "mol/m^3",
      "description": "Dissociation constant HNO3 → H⁺ + NO3⁻ (temperature-independent: K_n1 = K_n1_298)"
    },
    "HNO3_aq": {
      "type": "unknown",
      "units": "mol/m^3",
      "description": "Undissociated aqueous HNO3 concentration"
    },
    "NO3_minus": {
      "type": "unknown",
      "units": "mol/m^3",
      "description": "Nitrate anion concentration [NO3-]"
    },
    "HNO3_total": {
      "type": "unknown",
      "units": "mol/m^3",
      "description": "Total dissolved nitric acid: [HNO3(aq)] + [NO3-]"
    },
    "H_HNO3_eff": {
      "type": "unknown",
      "units": "mol/m^3/Pa",
      "description": "Effective Henry's law constant for HNO3 accounting for dissociation: H_HNO3 × (1 + K_n1/[H+])"
    }
  },
  "equations": [
    {
      "lhs": "H_HNO3",
      "rhs": {
        "op": "*",
        "args": [
          "H_HNO3_298",
          {
            "op": "exp",
            "args": [
              {
                "op": "*",
                "args": [
                  {
                    "op": "/",
                    "args": [
                      "dH_H_HNO3",
                      "R_gas"
                    ]
                  },
                  {
                    "op": "+",
                    "args": [
                      {
                        "op": "/",
                        "args": [
                          1,
                          "T_ref"
                        ]
                      },
                      {
                        "op": "/",
                        "args": [
                          -1,
                          "T"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    {
      "lhs": "K_n1",
      "rhs": "K_n1_298"
    },
    {
      "lhs": "HNO3_aq",
      "rhs": {
        "op": "*",
        "args": [
          "H_HNO3",
          "p_HNO3"
        ]
      }
    },
    {
      "lhs": "NO3_minus",
      "rhs": {
        "op": "/",
        "args": [
          {
            "op": "*",
            "args": [
              "K_n1",
              "HNO3_aq"
            ]
          },
          "H_plus"
        ]
      }
    },
    {
      "lhs": "HNO3_total",
      "rhs": {
        "op": "+",
        "args": [
          "HNO3_aq",
          "NO3_minus"
        ]
      }
    },
    {
      "lhs": "H_HNO3_eff",
      "rhs": {
        "op": "*",
        "args": [
          "H_HNO3",
          {
            "op": "+",
            "args": [
              1,
              {
                "op": "/",
                "args": [
                  "K_n1",
                  "H_plus"
                ]
              }
            ]
          }
        ]
      }
    }
  ],
  "tests": [
    {
      "id": "reference_298K_pH7",
      "description": "Reference state at 298 K with neutral water (pH 7, [H+]=1e-4 mol/m³) and 1 Pa HNO3. At T=T_ref the van't Hoff exponent is zero so H_HNO3 = H_HNO3_298. K_n1 is temperature-independent. K_n1/H_plus = 15400/1e-4 = 1.54e8 — HNO3 is essentially completely dissociated (NO3⁻ ≈ 1.54×10⁸ × HNO3_aq). H_HNO3_eff ≈ H_HNO3 × K_n1/H_plus to excellent approximation.",
      "parameter_overrides": {
        "T": 298.0,
        "H_plus": 0.0001,
        "p_HNO3": 1.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "H_HNO3",
          "time": 0.0,
          "expected": 2072.53886010363
        },
        {
          "variable": "K_n1",
          "time": 0.0,
          "expected": 15400.0
        },
        {
          "variable": "HNO3_aq",
          "time": 0.0,
          "expected": 2072.53886010363
        },
        {
          "variable": "NO3_minus",
          "time": 0.0,
          "expected": 319170984455.958
        },
        {
          "variable": "HNO3_total",
          "time": 0.0,
          "expected": 319170986528.497
        },
        {
          "variable": "H_HNO3_eff",
          "time": 0.0,
          "expected": 319170986528.497
        }
      ]
    },
    {
      "id": "temperature_invariance_cold",
      "description": "Cold cloud water at 273.15 K (0°C), pH 7. Because dH_H_HNO3 = 0, H_HNO3 = H_HNO3_298 exactly at any temperature. K_n1 is also temperature-independent. All state values are identical to the 298 K reference — unique among the aqueous equilibria models.",
      "parameter_overrides": {
        "T": 273.15,
        "H_plus": 0.0001,
        "p_HNO3": 1.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "H_HNO3",
          "time": 0.0,
          "expected": 2072.53886010363
        },
        {
          "variable": "K_n1",
          "time": 0.0,
          "expected": 15400.0
        },
        {
          "variable": "HNO3_aq",
          "time": 0.0,
          "expected": 2072.53886010363
        },
        {
          "variable": "NO3_minus",
          "time": 0.0,
          "expected": 319170984455.958
        },
        {
          "variable": "HNO3_total",
          "time": 0.0,
          "expected": 319170986528.497
        },
        {
          "variable": "H_HNO3_eff",
          "time": 0.0,
          "expected": 319170986528.497
        }
      ]
    },
    {
      "id": "temperature_invariance_warm",
      "description": "Warm cloud water at 310 K (37°C), pH 7. Same as reference and cold cases — H_HNO3 and all equilibrium values are temperature-independent for HNO3.",
      "parameter_overrides": {
        "T": 310.0,
        "H_plus": 0.0001,
        "p_HNO3": 1.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "H_HNO3",
          "time": 0.0,
          "expected": 2072.53886010363
        },
        {
          "variable": "HNO3_aq",
          "time": 0.0,
          "expected": 2072.53886010363
        },
        {
          "variable": "H_HNO3_eff",
          "time": 0.0,
          "expected": 319170986528.497
        }
      ]
    },
    {
      "id": "acidic_pH4",
      "description": "Acidic cloud water (pH 4, [H+] = 0.1 mol/m³) at 298 K. K_n1/H_plus = 15400/0.1 = 1.54×10⁵ — still nearly complete dissociation. Represents typical acid-rain conditions.",
      "parameter_overrides": {
        "T": 298.0,
        "H_plus": 0.1,
        "p_HNO3": 1.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "H_HNO3",
          "time": 0.0,
          "expected": 2072.53886010363
        },
        {
          "variable": "HNO3_aq",
          "time": 0.0,
          "expected": 2072.53886010363
        },
        {
          "variable": "NO3_minus",
          "time": 0.0,
          "expected": 319170984.455958
        },
        {
          "variable": "HNO3_total",
          "time": 0.0,
          "expected": 319173056.994819
        },
        {
          "variable": "H_HNO3_eff",
          "time": 0.0,
          "expected": 319173056.994819
        }
      ]
    },
    {
      "id": "acidic_pH2",
      "description": "Strongly acidic (pH 2, [H+] = 10 mol/m³) at 298 K. K_n1/H_plus = 15400/10 = 1540 — still >99.9% dissociated. Exercises the high-acid tail of NO3_minus and H_HNO3_eff.",
      "parameter_overrides": {
        "T": 298.0,
        "H_plus": 10.0,
        "p_HNO3": 1.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "HNO3_aq",
          "time": 0.0,
          "expected": 2072.53886010363
        },
        {
          "variable": "NO3_minus",
          "time": 0.0,
          "expected": 3191709.84455958
        },
        {
          "variable": "HNO3_total",
          "time": 0.0,
          "expected": 3193782.38341969
        },
        {
          "variable": "H_HNO3_eff",
          "time": 0.0,
          "expected": 3193782.38341969
        }
      ]
    },
    {
      "id": "very_acidic_Hplus100",
      "description": "Extreme acid regime ([H+] = 100 mol/m³) at 298 K. K_n1/H_plus = 15400/100 = 154 — still 99% dissociated. Stress-tests the NO3_minus and H_HNO3_eff expressions deep into the concentrated-acid tail.",
      "parameter_overrides": {
        "T": 298.0,
        "H_plus": 100.0,
        "p_HNO3": 1.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "HNO3_aq",
          "time": 0.0,
          "expected": 2072.53886010363
        },
        {
          "variable": "NO3_minus",
          "time": 0.0,
          "expected": 319170.984455958
        },
        {
          "variable": "HNO3_total",
          "time": 0.0,
          "expected": 321243.523316062
        },
        {
          "variable": "H_HNO3_eff",
          "time": 0.0,
          "expected": 321243.523316062
        }
      ]
    },
    {
      "id": "pKa_equiv_Hplus15400",
      "description": "At [H+] = K_n1 = 15400 mol/m³ (pKa-equivalent point), exactly 50% of dissolved HNO3 is undissociated: NO3_minus = HNO3_aq, HNO3_total = 2 × HNO3_aq, and H_HNO3_eff = 2 × H_HNO3. This extreme concentration (far beyond physical liquids) is a mathematical symmetry check.",
      "parameter_overrides": {
        "T": 298.0,
        "H_plus": 15400.0,
        "p_HNO3": 1.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "H_HNO3",
          "time": 0.0,
          "expected": 2072.53886010363
        },
        {
          "variable": "HNO3_aq",
          "time": 0.0,
          "expected": 2072.53886010363
        },
        {
          "variable": "NO3_minus",
          "time": 0.0,
          "expected": 2072.53886010363
        },
        {
          "variable": "HNO3_total",
          "time": 0.0,
          "expected": 4145.07772020725
        },
        {
          "variable": "H_HNO3_eff",
          "time": 0.0,
          "expected": 4145.07772020725
        }
      ]
    },
    {
      "id": "pressure_linearity_high",
      "description": "Henry's-law linearity check: 10× p_HNO3 at fixed T and H_plus scales HNO3_aq, NO3_minus, HNO3_total by 10× while leaving H_HNO3, K_n1, H_HNO3_eff unchanged.",
      "parameter_overrides": {
        "T": 298.0,
        "H_plus": 0.0001,
        "p_HNO3": 10.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "H_HNO3",
          "time": 0.0,
          "expected": 2072.53886010363
        },
        {
          "variable": "HNO3_aq",
          "time": 0.0,
          "expected": 20725.3886010363
        },
        {
          "variable": "NO3_minus",
          "time": 0.0,
          "expected": 3191709844559.58
        },
        {
          "variable": "HNO3_total",
          "time": 0.0,
          "expected": 3191709865284.97
        },
        {
          "variable": "H_HNO3_eff",
          "time": 0.0,
          "expected": 319170986528.497
        }
      ]
    },
    {
      "id": "pressure_linearity_low",
      "description": "Henry's-law linearity at low partial pressure: p_HNO3 = 0.01 Pa scales HNO3_aq, NO3_minus, HNO3_total by 0.01× from baseline. H_HNO3 and H_HNO3_eff are pressure-independent.",
      "parameter_overrides": {
        "T": 298.0,
        "H_plus": 0.0001,
        "p_HNO3": 0.01
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "HNO3_aq",
          "time": 0.0,
          "expected": 20.7253886010363
        },
        {
          "variable": "NO3_minus",
          "time": 0.0,
          "expected": 3191709844.55958
        },
        {
          "variable": "HNO3_total",
          "time": 0.0,
          "expected": 3191709865.28497
        },
        {
          "variable": "H_HNO3_eff",
          "time": 0.0,
          "expected": 319170986528.497
        }
      ]
    }
  ],
  "analyses": [
    {
      "id": "H_HNO3_eff_vs_pH",
      "description": "Effective Henry's constant H*_HNO3 = H_HNO3 × (1 + K_n1/[H+]) vs [H+] at 298 K. HNO3 pKa ≈ −1.2, so K_n1/[H+] ≫ 1 across the entire atmospheric pH range (pH 0–7). H*_HNO3 decreases proportionally with increasing [H+]: at pH 7 H*_HNO3 ≈ 1.54×10⁸ × H_HNO3; at pH 2 H*_HNO3 ≈ 1540 × H_HNO3. Only at [H+] ≥ K_n1 (> 15 mol/L, beyond physically realizable aqueous solutions) does incomplete dissociation occur.",
      "initial_state": {},
      "parameters": {
        "T": 298.0,
        "p_HNO3": 1.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_sweep": {
        "type": "cartesian",
        "dimensions": [
          {
            "parameter": "H_plus",
            "range": {
              "start": 1e-06,
              "stop": 10000.0,
              "count": 30,
              "scale": "log"
            }
          }
        ]
      },
      "plots": [
        {
          "id": "Hstar_curve",
          "type": "line",
          "description": "H*_HNO3 vs [H+] — steeply decreasing effective Henry's constant showing nearly complete dissociation at all atmospheric [H+] values.",
          "x": {
            "variable": "H_plus",
            "label": "[H⁺] (mol/m³, log scale)"
          },
          "y": {
            "variable": "H_HNO3_eff",
            "label": "H*_HNO3 (mol/(m³·Pa), log scale)"
          }
        },
        {
          "id": "dissociation_fraction",
          "type": "line",
          "description": "NO3⁻ fraction of total dissolved HNO3 vs [H+]. Fraction = K_n1/(K_n1 + H_plus). Equals 1 (complete dissociation) for all atmospheric conditions, approaching 0.5 only at [H+] = K_n1 ≈ 15 mol/L.",
          "x": {
            "variable": "H_plus",
            "label": "[H⁺] (mol/m³, log scale)"
          },
          "y": {
            "variable": "NO3_minus",
            "label": "[NO3-] (mol/m³, log scale)"
          }
        }
      ]
    },
    {
      "id": "NO3_minus_vs_p_HNO3",
      "description": "Aqueous nitrate concentration [NO3-] as a function of HNO3 partial pressure at pH 7. Shows perfect linearity: [NO3-] = H_HNO3 × K_n1/[H+] × p_HNO3. Since HNO3 is a strong acid, essentially all dissolved HNO3 appears as NO3⁻ at atmospheric pH, making [NO3-] ≈ HNO3_total. Henry's law linearity spans the full atmospheric HNO3 range.",
      "initial_state": {},
      "parameters": {
        "T": 298.0,
        "H_plus": 0.0001
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_sweep": {
        "type": "cartesian",
        "dimensions": [
          {
            "parameter": "p_HNO3",
            "range": {
              "start": 0.0001,
              "stop": 10.0,
              "count": 20,
              "scale": "log"
            }
          }
        ]
      },
      "plots": [
        {
          "id": "NO3_vs_p_HNO3",
          "type": "line",
          "description": "[NO3-] vs p_HNO3 at pH 7 — linear Henry's law partitioning demonstrating that dissolved HNO3 is quantitatively converted to nitrate.",
          "x": {
            "variable": "p_HNO3",
            "label": "p(HNO3) (Pa, log scale)"
          },
          "y": {
            "variable": "NO3_minus",
            "label": "[NO3-] (mol/m³, log scale)"
          }
        }
      ]
    },
    {
      "id": "temperature_invariance_sweep",
      "description": "H_HNO3 vs temperature from 273 K to 318 K. Unlike SO2, CO2, NH3, and H2O2 (which all have significant van't Hoff temperature dependencies), HNO3 has dH_H_HNO3 = 0 and remains constant across the full atmospheric temperature range. This flat response is characteristic of strong inorganic acids.",
      "initial_state": {},
      "parameters": {
        "H_plus": 0.0001,
        "p_HNO3": 1.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_sweep": {
        "type": "cartesian",
        "dimensions": [
          {
            "parameter": "T",
            "range": {
              "start": 273.15,
              "stop": 318.0,
              "count": 20,
              "scale": "linear"
            }
          }
        ]
      },
      "plots": [
        {
          "id": "H_HNO3_vs_T",
          "type": "line",
          "description": "H_HNO3(T) — flat line demonstrating temperature-independent HNO3 solubility (dH=0).",
          "x": {
            "variable": "T",
            "label": "Temperature (K)"
          },
          "y": {
            "variable": "H_HNO3",
            "label": "H_HNO3 (mol/(m³·Pa))"
          }
        }
      ]
    }
  ]
}