HenrysLawTemperature
Temperature-dependent Henry's law equilibrium for gas–liquid partitioning of soluble atmospheric species. Computes the temperature-corrected Henry's law constant H_T via the van't Hoff equation (Eq. 7.5), the aqueous concentration C_aq via Eq. 7.3, and the liquid-water distribution diagnostics w_L (Eq. 7.1), f_A (Eq. 7.7), and X_aq (Eq. 7.9). From Seinfeld & Pandis (2006), Chapter 7, Section 7.2.
Description
Temperature-dependent Henry’s law equilibrium for gas–liquid partitioning of soluble atmospheric species. Computes the temperature-corrected Henry’s law constant H_T via the van’t Hoff equation (Eq. 7.5), the aqueous concentration C_aq via Eq. 7.3, and the liquid-water distribution diagnostics w_L (Eq. 7.1), f_A (Eq. 7.7), and X_aq (Eq. 7.9). From Seinfeld & Pandis (2006), Chapter 7, Section 7.2.
Reference
Seinfeld, J. H. and Pandis, S. N. (2006) Atmospheric Chemistry and Physics, 2nd Edition, Chapter 7, Eqs. 7.1, 7.3, 7.5, 7.7, 7.9 — temperature-dependent Henry’s law equilibrium. Migrated from Aerosol.jl src/henrys_law.jl HenrysLawTemperature (esm-qs4).
_source_ref: Aerosol.jl@c8c640bb636b22f2425460e9ed5cba50793bfee1:src/henrys_law.jl:155
Upstream HenrysLawTemperature(; name=:HenrysLawTemp) is an MTK @component with three @constants (R_gas=8.314, T_ref=298.0, rho_water_inv=1e-6), three @parameters (H_298, dH_diss, L), and seven @variables (T, p_A, C_aq, H_T, w_L, f_A, X_aq). It carries five algebraic equations:
• Eq. 7.5: H_T ~ H_298 * exp((dH_diss/R_gas) * (1/T_ref - 1/T))
• Eq. 7.3: C_aq ~ H_T * p_A
• Eq. 7.1: w_L ~ rho_water_inv * L
• Eq. 7.7: f_A ~ H_T * R_gas * T * w_L
• Eq. 7.9: X_aq ~ f_A / (1 + f_A)
Observability classification: observed-only — all five outputs (H_T, C_aq, w_L, f_A, X_aq) are given by algebraic equations in terms of the two input variables (T, p_A), three parameters (H_298, dH_diss, L), and three constants. There are no differential states.
ESM representation: the purely-algebraic convention is used (matching components/aerosol/size/marine.esm and components/atmospheric_deposition/dry_aerosol.esm). The two MTK @variables supplied externally (T, p_A) migrate as type: parameter; the three MTK @parameters (H_298, dH_diss, L) also migrate as type: parameter; the three MTK @constants (R_gas, T_ref, rho_water_inv) migrate as type: parameter with fixed evaluated defaults (ESM has no constant variable type). Each of the five MTK outputs (H_T, C_aq, w_L, f_A, X_aq) migrates as a type: observed variable with its defining algebraic expression; the equations array is empty. The runner evaluates observed variables in topological order (H_T, w_L, then C_aq and f_A, then X_aq).
Constant values: R_gas = 8.314 J/(mol·K) (gas constant), T_ref = 298.0 K (reference temperature for Henry’s law constants), rho_water_inv = 1.0e-6 m³/g (reciprocal liquid water density used to convert LWC in g/m³ to the dimensionless volume ratio w_L).
Physical interpretation: H_T (Eq. 7.5) is the van’t Hoff correction of H_298 to temperature T; negative dH_diss (exothermic dissolution) means higher T reduces H_T (less soluble at higher temperature). C_aq (Eq. 7.3) is the equilibrium aqueous concentration. w_L (Eq. 7.1) is the liquid water volume ratio. f_A (Eq. 7.7) and X_aq (Eq. 7.9) are distribution diagnostics: f_A → 0 means nearly all species stay in the gas phase; X_aq → 1 means nearly all partitions into the aqueous phase.
Tolerance rationale (model-level rel=1e-9): purely algebraic system with no ODE integration. Equations involve multiplication, division, and a single exp call. Floating-point round-off is ~1e-15. rel=1e-9 leaves six orders of magnitude of headroom._
Parameters
| Name | Units | Default | Description |
|---|---|---|---|
R_gas | J/mol/K | 8.314 | Gas constant. Upstream MTK @constants entry R_gas = 8.314; migrated as a fixed-default parameter (ESM has no constant variable type). |
T_ref | K | 298.0 | Reference temperature at which Henry’s law constants H_298 are tabulated. Upstream MTK @constants entry T_ref = 298.0; migrated as a fixed-default parameter. |
rho_water_inv | m^3/g | 1e-06 | Reciprocal liquid water density used to convert liquid water content L (g/m³) to the dimensionless volume ratio w_L. Upstream MTK @constants entry rho_water_inv = 1.0e-6; migrated as a fixed-default parameter. |
H_298 | mol/m^3/Pa | 1.0 | Henry’s law constant at the reference temperature T_ref = 298 K. |
dH_diss | J/mol | -26150.0 | Molar enthalpy of dissolution (heat of dissolution). Negative for exothermic dissolution (solubility decreases with increasing temperature). Default corresponds approximately to SO₂ (-6.25 kcal/mol × 4184 J/kcal). |
L | g/m^3 | 0.3 | Liquid water content of the air parcel. Typical cloud value ~0.3 g/m³. |
T | K | 298.0 | Air temperature. Input parameter — the observed-only model computes H_T and derived quantities given T. |
p_A | Pa | 1.0 | Partial pressure of gas species A. Input parameter — the observed-only model computes C_aq given p_A. |
Observed
| Name | Units | Default | Description |
|---|---|---|---|
H_T | mol/m^3/Pa | Temperature-corrected Henry’s law constant at temperature T (Eq. 7.5). H_T = H_298 * exp((dH_diss/R_gas) * (1/T_ref - 1/T)). | |
C_aq | mol/m^3 | Aqueous concentration of species A in equilibrium with the gas phase at temperature T (Eq. 7.3). C_aq = H_T * p_A. | |
w_L | 1 | Liquid water mixing ratio — volume of liquid water per volume of air (dimensionless, Eq. 7.1). w_L = rho_water_inv * L. | |
f_A | 1 | Distribution factor — ratio of aqueous to gas-phase amount for species A (dimensionless, Eq. 7.7). f_A = H_T * R_gas * T * w_L. | |
X_aq | 1 | Aqueous fraction — fraction of total species A in the aqueous phase (dimensionless, Eq. 7.9). X_aq = f_A / (1 + f_A). Ranges from 0 (all gas phase) to 1 (all aqueous phase). |
Observed expressions
$$ H_{T} = H_{298} \cdot e^{\frac{dH_{diss}}{R_{gas}} \cdot \left(\frac{1}{T_{ref}} - \frac{1}{T}\right)} $$Temperature-corrected Henry’s law constant at temperature T (Eq. 7.5). H_T = H_298 * exp((dH_diss/R_gas) * (1/T_ref - 1/T)).
$$ C_{aq} = H_{T} \cdot p_{A} $$Aqueous concentration of species A in equilibrium with the gas phase at temperature T (Eq. 7.3). C_aq = H_T * p_A.
$$ w_{L} = rho_{water\,inv} \cdot L $$Liquid water mixing ratio — volume of liquid water per volume of air (dimensionless, Eq. 7.1). w_L = rho_water_inv * L.
$$ f_{A} = H_{T} \cdot R_{gas} \cdot T \cdot w_{L} $$Distribution factor — ratio of aqueous to gas-phase amount for species A (dimensionless, Eq. 7.7). f_A = H_T * R_gas * T * w_L.
$$ X_{aq} = \frac{f_{A}}{1 + f_{A}} $$Aqueous fraction — fraction of total species A in the aqueous phase (dimensionless, Eq. 7.9). X_aq = f_A / (1 + f_A). Ranges from 0 (all gas phase) to 1 (all aqueous phase).
Analyses
temperature_sweep
Sweep temperature from 270 K to 330 K to show how the temperature-corrected Henry’s law constant H_T varies with temperature via the van’t Hoff equation. Parameters use SO₂-like values: H_298 = 1.0, dH_diss = -26150.0 J/mol, L = 0.3 g/m³, p_A = 1.0 Pa.
Time span: 0.0 → 1.0
Swept over: T

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, Eqs. 7.1, 7.3, 7.5, 7.7, 7.9 — temperature-dependent Henry's law equilibrium. Migrated from Aerosol.jl src/henrys_law.jl `HenrysLawTemperature` (esm-qs4).",
"notes": "source_ref: Aerosol.jl@c8c640bb636b22f2425460e9ed5cba50793bfee1:src/henrys_law.jl:155\n\nUpstream `HenrysLawTemperature(; name=:HenrysLawTemp)` is an MTK `@component` with three `@constants` (R_gas=8.314, T_ref=298.0, rho_water_inv=1e-6), three `@parameters` (H_298, dH_diss, L), and seven `@variables` (T, p_A, C_aq, H_T, w_L, f_A, X_aq). It carries five algebraic equations:\n • Eq. 7.5: H_T ~ H_298 * exp((dH_diss/R_gas) * (1/T_ref - 1/T))\n • Eq. 7.3: C_aq ~ H_T * p_A\n • Eq. 7.1: w_L ~ rho_water_inv * L\n • Eq. 7.7: f_A ~ H_T * R_gas * T * w_L\n • Eq. 7.9: X_aq ~ f_A / (1 + f_A)\n\nObservability classification: observed-only — all five outputs (H_T, C_aq, w_L, f_A, X_aq) are given by algebraic equations in terms of the two input variables (T, p_A), three parameters (H_298, dH_diss, L), and three constants. There are no differential states.\n\nESM representation: the purely-algebraic convention is used (matching components/aerosol/size/marine.esm and components/atmospheric_deposition/dry_aerosol.esm). The two MTK `@variables` supplied externally (T, p_A) migrate as `type: parameter`; the three MTK `@parameters` (H_298, dH_diss, L) also migrate as `type: parameter`; the three MTK `@constants` (R_gas, T_ref, rho_water_inv) migrate as `type: parameter` with fixed evaluated defaults (ESM has no constant variable type). Each of the five MTK outputs (H_T, C_aq, w_L, f_A, X_aq) migrates as a `type: observed` variable with its defining algebraic `expression`; the `equations` array is empty. The runner evaluates observed variables in topological order (H_T, w_L, then C_aq and f_A, then X_aq).\n\nConstant values: R_gas = 8.314 J/(mol·K) (gas constant), T_ref = 298.0 K (reference temperature for Henry's law constants), rho_water_inv = 1.0e-6 m³/g (reciprocal liquid water density used to convert LWC in g/m³ to the dimensionless volume ratio w_L).\n\nPhysical interpretation: H_T (Eq. 7.5) is the van't Hoff correction of H_298 to temperature T; negative dH_diss (exothermic dissolution) means higher T reduces H_T (less soluble at higher temperature). C_aq (Eq. 7.3) is the equilibrium aqueous concentration. w_L (Eq. 7.1) is the liquid water volume ratio. f_A (Eq. 7.7) and X_aq (Eq. 7.9) are distribution diagnostics: f_A → 0 means nearly all species stay in the gas phase; X_aq → 1 means nearly all partitions into the aqueous phase.\n\nTolerance rationale (model-level rel=1e-9): purely algebraic system with no ODE integration. Equations involve multiplication, division, and a single exp call. Floating-point round-off is ~1e-15. rel=1e-9 leaves six orders of magnitude of headroom."
},
"tolerance": {
"rel": 1e-09
},
"variables": {
"R_gas": {
"type": "parameter",
"units": "J/mol/K",
"default": 8.314,
"description": "Gas constant. Upstream MTK @constants entry R_gas = 8.314; migrated as a fixed-default parameter (ESM has no constant variable type)."
},
"T_ref": {
"type": "parameter",
"units": "K",
"default": 298.0,
"description": "Reference temperature at which Henry's law constants H_298 are tabulated. Upstream MTK @constants entry T_ref = 298.0; migrated as a fixed-default parameter."
},
"rho_water_inv": {
"type": "parameter",
"units": "m^3/g",
"default": 1e-06,
"description": "Reciprocal liquid water density used to convert liquid water content L (g/m³) to the dimensionless volume ratio w_L. Upstream MTK @constants entry rho_water_inv = 1.0e-6; migrated as a fixed-default parameter."
},
"H_298": {
"type": "parameter",
"units": "mol/m^3/Pa",
"default": 1.0,
"description": "Henry's law constant at the reference temperature T_ref = 298 K."
},
"dH_diss": {
"type": "parameter",
"units": "J/mol",
"default": -26150.0,
"description": "Molar enthalpy of dissolution (heat of dissolution). Negative for exothermic dissolution (solubility decreases with increasing temperature). Default corresponds approximately to SO₂ (-6.25 kcal/mol × 4184 J/kcal)."
},
"L": {
"type": "parameter",
"units": "g/m^3",
"default": 0.3,
"description": "Liquid water content of the air parcel. Typical cloud value ~0.3 g/m³."
},
"T": {
"type": "parameter",
"units": "K",
"default": 298.0,
"description": "Air temperature. Input parameter — the observed-only model computes H_T and derived quantities given T."
},
"p_A": {
"type": "parameter",
"units": "Pa",
"default": 1.0,
"description": "Partial pressure of gas species A. Input parameter — the observed-only model computes C_aq given p_A."
},
"H_T": {
"type": "unknown",
"units": "mol/m^3/Pa",
"description": "Temperature-corrected Henry's law constant at temperature T (Eq. 7.5). H_T = H_298 * exp((dH_diss/R_gas) * (1/T_ref - 1/T))."
},
"C_aq": {
"type": "unknown",
"units": "mol/m^3",
"description": "Aqueous concentration of species A in equilibrium with the gas phase at temperature T (Eq. 7.3). C_aq = H_T * p_A."
},
"w_L": {
"type": "unknown",
"units": "1",
"description": "Liquid water mixing ratio — volume of liquid water per volume of air (dimensionless, Eq. 7.1). w_L = rho_water_inv * L."
},
"f_A": {
"type": "unknown",
"units": "1",
"description": "Distribution factor — ratio of aqueous to gas-phase amount for species A (dimensionless, Eq. 7.7). f_A = H_T * R_gas * T * w_L."
},
"X_aq": {
"type": "unknown",
"units": "1",
"description": "Aqueous fraction — fraction of total species A in the aqueous phase (dimensionless, Eq. 7.9). X_aq = f_A / (1 + f_A). Ranges from 0 (all gas phase) to 1 (all aqueous phase)."
}
},
"equations": [
{
"lhs": "H_T",
"rhs": {
"op": "*",
"args": [
"H_298",
{
"op": "exp",
"args": [
{
"op": "*",
"args": [
{
"op": "/",
"args": [
"dH_diss",
"R_gas"
]
},
{
"op": "-",
"args": [
{
"op": "/",
"args": [
1,
"T_ref"
]
},
{
"op": "/",
"args": [
1,
"T"
]
}
]
}
]
}
]
}
]
}
},
{
"lhs": "C_aq",
"rhs": {
"op": "*",
"args": [
"H_T",
"p_A"
]
}
},
{
"lhs": "w_L",
"rhs": {
"op": "*",
"args": [
"rho_water_inv",
"L"
]
}
},
{
"lhs": "f_A",
"rhs": {
"op": "*",
"args": [
"H_T",
"R_gas",
"T",
"w_L"
]
}
},
{
"lhs": "X_aq",
"rhs": {
"op": "/",
"args": [
"f_A",
{
"op": "+",
"args": [
1,
"f_A"
]
}
]
}
}
],
"tests": [
{
"id": "zero_dissolution_heat",
"description": "When dH_diss = 0 the van't Hoff exponent is zero and H_T = H_298 regardless of temperature. With H_298 = 2.0, dH_diss = 0.0, T = 310.0 K, p_A = 3.0 Pa, L = 0.0 g/m³: H_T = 2.0, C_aq = 6.0.",
"time_span": {
"start": 0.0,
"end": 1.0
},
"parameter_overrides": {
"H_298": 2.0,
"dH_diss": 0.0,
"T": 310.0,
"p_A": 3.0,
"L": 0.0
},
"assertions": [
{
"variable": "H_T",
"time": 0.0,
"expected": 2.0,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "C_aq",
"time": 0.0,
"expected": 6.0,
"tolerance": {
"rel": 1e-09
}
}
]
},
{
"id": "reference_temperature",
"description": "At T = T_ref = 298 K, (1/T_ref - 1/T) = 0 and H_T = H_298 for any dH_diss. With H_298 = 1.0, dH_diss = -26150.0, T = 298.0 K, p_A = 1.0 Pa, L = 0.1 g/m³: H_T = 1.0, C_aq = 1.0, w_L = 1e-7, f_A = 8.314*298*1e-7 = 2.477572e-4, X_aq = f_A/(1+f_A) = 2.476958e-4.",
"time_span": {
"start": 0.0,
"end": 1.0
},
"parameter_overrides": {
"H_298": 1.0,
"dH_diss": -26150.0,
"T": 298.0,
"p_A": 1.0,
"L": 0.1
},
"assertions": [
{
"variable": "H_T",
"time": 0.0,
"expected": 1.0,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "C_aq",
"time": 0.0,
"expected": 1.0,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "w_L",
"time": 0.0,
"expected": 1e-07,
"tolerance": {
"rel": 1e-06
}
},
{
"variable": "f_A",
"time": 0.0,
"expected": 0.0002477572,
"tolerance": {
"rel": 1e-06
}
},
{
"variable": "X_aq",
"time": 0.0,
"expected": 0.0002476958,
"tolerance": {
"rel": 1e-06
}
}
]
},
{
"id": "high_temperature_reduces_solubility",
"description": "For exothermic dissolution (dH_diss < 0), raising T above T_ref decreases H_T. With H_298 = 1.0, dH_diss = -8314.0 J/mol (= -R_gas * 1000 K), T = 308.0 K, p_A = 1.0 Pa, L = 0.0: H_T = exp(-1000*(1/298 - 1/308)) = exp(-10000/91784) ≈ 0.896774, C_aq = H_T.",
"time_span": {
"start": 0.0,
"end": 1.0
},
"parameter_overrides": {
"H_298": 1.0,
"dH_diss": -8314.0,
"T": 308.0,
"p_A": 1.0,
"L": 0.0
},
"assertions": [
{
"variable": "H_T",
"time": 0.0,
"expected": 0.896774,
"tolerance": {
"rel": 1e-05
}
},
{
"variable": "C_aq",
"time": 0.0,
"expected": 0.896774,
"tolerance": {
"rel": 1e-05
}
}
]
}
],
"analyses": [
{
"id": "temperature_sweep",
"description": "Sweep temperature from 270 K to 330 K to show how the temperature-corrected Henry's law constant H_T varies with temperature via the van't Hoff equation. Parameters use SO₂-like values: H_298 = 1.0, dH_diss = -26150.0 J/mol, L = 0.3 g/m³, p_A = 1.0 Pa.",
"initial_state": {},
"parameters": {
"H_298": 1.0,
"dH_diss": -26150.0,
"L": 0.3,
"p_A": 1.0
},
"time_span": {
"start": 0.0,
"end": 1.0
},
"parameter_sweep": {
"type": "cartesian",
"dimensions": [
{
"parameter": "T",
"range": {
"start": 270.0,
"stop": 330.0,
"count": 61
}
}
]
},
"plots": [
{
"id": "ht_vs_temperature",
"type": "line",
"description": "Temperature-corrected Henry's law constant H_T vs temperature T — shows the van't Hoff exponential increase of solubility as temperature decreases (for exothermic dissolution, dH_diss < 0).",
"x": {
"variable": "T",
"label": "T (K)"
},
"y": {
"variable": "H_T",
"label": "H_T (mol/m³/Pa)"
}
}
]
}
]
}