Version: dev

DRHTemperature

Temperature-dependent deliquescence relative humidity (DRH) of a crystalline inorganic salt — Seinfeld & Pandis (2006), Atmospheric Chemistry and Physics, 2nd ed., Chapter 10, Equation 10.72. DRH is the relative humidity at which a crystalline salt spontaneously absorbs water and forms a saturated aqueous solution; it shifts away from its 298 K reference value with temperature according to the salt's enthalpy of solution and its solubility-vs-temperature polynomial. Migrated from Aerosol.jl DRHTemperature at the upstream default parameterization salt = :NH4NO3.

Domain
aerosol
Subdomain
sp_ch10
Type
model
.esm schema
1.0.0
Source
components/aerosol/sp_ch10/drh_temperature.esm
Tags
#aerosol #sp_ch10 #model #seinfeld_pandis_ch10 #thermodynamics #deliquescence #relative-humidity

Description

Temperature-dependent deliquescence relative humidity (DRH) of a crystalline inorganic salt — Seinfeld & Pandis (2006), Atmospheric Chemistry and Physics, 2nd ed., Chapter 10, Equation 10.72. DRH is the relative humidity at which a crystalline salt spontaneously absorbs water and forms a saturated aqueous solution; it shifts away from its 298 K reference value with temperature according to the salt’s enthalpy of solution and its solubility-vs-temperature polynomial. Migrated from Aerosol.jl DRHTemperature at the upstream default parameterization salt = :NH4NO3.

Reference

Seinfeld, J. H., and Pandis, S. N. (2006). Atmospheric Chemistry and Physics: From Air Pollution to Climate Change, 2nd Edition, John Wiley & Sons, Chapter 10, Equation 10.72 (DRH temperature dependence), Table 10.1 (DRH at 298 K), Table 10.2 (solubility polynomial coefficients), Table 10.3 (enthalpy of solution).

_source_ref: Aerosol.jl@c8c640bb636b22f2425460e9ed5cba50793bfee1:src/seinfeld_pandis_ch10/drh.jl:76

Upstream DRHTemperature is an MTK @component parameterized by salt (Symbol, default :NH4NO3). It declares two @constants (R_gas = 8.314 Jmol^-1K^-1, T_ref = 298 K), six @parameters (T, DRH_298K, ΔH_s, A_sol, B_sol, C_sol) and one @variables (DRH). The single equation is Eq. 10.72:

DRH = DRH(298) * exp{ (ΔH_s/R) * [ A*(1/T - 1/298) - Bln(T/298) - C(T - 298) ] }

where A, B, C are the salt’s solubility polynomial coefficients n(T) = A + BT + CT^2 (Table 10.2).

salt fixed to :NH4NO3: the salt keyword does not enter the equation — it only selects, at construction time, the numeric defaults of the four salt-specific @parameters from the upstream lookup tables (DRH_298 Table 10.1, DELTA_HS_298 Table 10.3, SOLUBILITY_PARAMS Table 10.2). The .esm encodes one concrete instantiation fixed to the upstream canonical default DRHTemperature(; name, salt = :NH4NO3), giving DRH_298K = 0.618, ΔH_s = 16270 J/mol (the upstream stores 16.27 kJ/mol and multiplies by 1000), A_sol = 4.298, B_sol = -0.03623 K^-1, C_sol = 7.853e-5 K^-2. Because every salt-specific value is a first-class type: parameter, the migrated component reproduces any other tabulated salt by overriding the five parameters — the nacl_* and na2so4_* inline tests exercise exactly this (overriding to the NaCl and Na2SO4 table rows), mirroring the upstream DRH Temperature Dependence testitem which checks the same three salts.

Constant->parameter translation: the upstream @constants R_gas and T_ref are encoded as fixed-default type: parameter entries carrying their upstream Float64 values bit-for-bit. This mirrors the sibling convention (stefan_boltzmann.esm, critical_ssa.esm, clmu_atmosphere.esm) of translating @constants to fixed-default parameters so each named quantity is a first-class symbol in the expression AST rather than a magic literal.

Observed classification: DRH is an algebraic function of the eight parameters (DRH ~ ...; no time derivative anywhere). After MTK structural_simplify / mtkcompile the compiled system has zero ODE states and DRH becomes an observed quantity — the upstream ModelingToolkit Integration testitem exercises exactly this compiled form via mtkcompile(DRHTemperature(salt = :NH4NO3)). DRH is therefore serialized as type: observed with an expression carrying the Eq. 10.72 right-hand side, and the equations array is empty, matching the sibling observed-only Aerosol.jl migrations critical_ssa.esm and zsr.esm.

Not migrated: the file-level helpers drh_temperature(T, salt) (a scalar evaluator of the same Eq. 10.72) and nh4no3_drh(T) (the empirical Eq. 10.88 correlation for NH4NO3) in drh.jl are plain Julia functions, not MTK components, and are out of scope for this component migration. The upstream tests that call drh_temperature directly are reproduced here through the equivalent component-parameter form — the function and the component evaluate the identical Eq. 10.72.

Tolerance rationale (model-level rel=1e-8 / abs=1e-12): the model is a small closed-form algebraic expression — one exp, one log, and a handful of multiplies/divides over fixed Float64 inputs — so evaluation roundoff is at the few-ULP (~1e-15 relative) level; rel=1e-8 leaves ample headroom while still catching a structural regression. abs=1e-12 floors any near-zero DRH cold-limit value. At T = T_ref = 298 K the exponent argument is identically zero (1/T - 1/T_ref, ln(T/T_ref) and T - T_ref each evaluate to exact float 0), so upstream_reference_T298_NH4NO3 pins DRH = DRH_298K = 0.618 exactly._

Parameters

NameUnitsDefaultDescription
TK298.0Ambient temperature — the input at which the deliquescence relative humidity is evaluated.
DRH_298K10.618Deliquescence relative humidity at the 298 K reference temperature, as a fraction in [0, 1] (Seinfeld & Pandis Table 10.1). Default 0.618 is the NH4NO3 value.
ΔH_sJ/mol16270.0Enthalpy of solution of the salt (Seinfeld & Pandis Table 10.3). Default 16270 J/mol is the NH4NO3 value (16.27 kJ/mol). Salts with ΔH_s > 0 have DRH decreasing with temperature; ΔH_s < 0 reverses the trend.
A_sol14.298Solubility polynomial coefficient A in n(T) = A + BT + CT^2 (Seinfeld & Pandis Table 10.2; n is moles salt per mole water at saturation, dimensionless). Default 4.298 is the NH4NO3 value.
B_solK^-1-0.03623Solubility polynomial coefficient B in n(T) = A + BT + CT^2 (Seinfeld & Pandis Table 10.2). Default -0.03623 K^-1 is the NH4NO3 value.
C_solK^-27.853e-05Solubility polynomial coefficient C in n(T) = A + BT + CT^2 (Seinfeld & Pandis Table 10.2). Default 7.853e-5 K^-2 is the NH4NO3 value.
R_gasJ/(mol*K)8.314Universal gas constant (upstream @constants value 8.314 Jmol^-1K^-1; encoded as a fixed-default parameter per rig convention so it is a named symbol in the expression AST).
T_refK298.0Reference temperature 298 K at which DRH_298K and the solubility-table coefficients are defined (upstream @constants; encoded as a fixed-default parameter).

Observed

NameUnitsDefaultDescription
DRH1Deliquescence relative humidity at temperature T, as a fraction in [0, 1] (Eq. 10.72): DRH = DRH_298K * exp{ (ΔH_s/R_gas) * [ A_sol*(1/T - 1/T_ref) - B_solln(T/T_ref) - C_sol(T - T_ref) ] }.

Observed expressions

$$ DRH = DRH_{298K} \cdot e^{\frac{ΔH_{s}}{R_{gas}} \cdot \left(A_{sol} \cdot \left(\frac{1}{T} - \frac{1}{T_{ref}}\right) - B_{sol} \cdot \ln\left(\frac{T}{T_{ref}}\right) - C_{sol} \cdot \left(T - T_{ref}\right)\right)} $$

Deliquescence relative humidity at temperature T, as a fraction in [0, 1] (Eq. 10.72): DRH = DRH_298K * exp{ (ΔH_s/R_gas) * [ A_sol*(1/T - 1/T_ref) - B_solln(T/T_ref) - C_sol(T - T_ref) ] }.

Analyses

drh_vs_temperature_NH4NO3

Temperature dependence of NH4NO3 deliquescence relative humidity over a 250-340 K sweep at the upstream default parameterization (Eq. 10.72). Because NH4NO3 has a positive enthalpy of solution (ΔH_s = 16.27 kJ/mol), DRH decreases monotonically with temperature — from ≈ 0.87 at 250 K through the 0.618 reference value at 298 K down to ≈ 0.34 at 340 K.

Time span: 0.0 → 1.0

Swept over: T

NH4NO3 deliquescence relative humidity DRH as a function of temperature T — a monotonic decrease for the positive-enthalpy salt.

drh_vs_temperature_na2so4

Temperature dependence of Na2SO4 deliquescence relative humidity over a 250-340 K sweep, with the five salt-specific parameters set to the Na2SO4 table rows. Na2SO4 has a negative enthalpy of solution (ΔH_s = -9.76 kJ/mol), so its DRH increases with temperature — the opposite trend to NH4NO3 in the companion example. The curve rises from ≈ 0.80 at 250 K through 0.842 at 298 K toward ≈ 0.87 at 340 K.

Time span: 0.0 → 1.0

Swept over: T

Na2SO4 deliquescence relative humidity DRH as a function of temperature T — a monotonic increase for the negative-enthalpy salt.

Raw .esm

Raw .esm JSON (this component)
{
  "reference": {
    "citation": "Seinfeld, J. H., and Pandis, S. N. (2006). Atmospheric Chemistry and Physics: From Air Pollution to Climate Change, 2nd Edition, John Wiley & Sons, Chapter 10, Equation 10.72 (DRH temperature dependence), Table 10.1 (DRH at 298 K), Table 10.2 (solubility polynomial coefficients), Table 10.3 (enthalpy of solution).",
    "notes": "source_ref: Aerosol.jl@c8c640bb636b22f2425460e9ed5cba50793bfee1:src/seinfeld_pandis_ch10/drh.jl:76\n\nUpstream `DRHTemperature` is an MTK `@component` parameterized by `salt` (Symbol, default :NH4NO3). It declares two `@constants` (`R_gas` = 8.314 J*mol^-1*K^-1, `T_ref` = 298 K), six `@parameters` (`T`, `DRH_298K`, `ΔH_s`, `A_sol`, `B_sol`, `C_sol`) and one `@variables` (`DRH`). The single equation is Eq. 10.72:\n\n  DRH = DRH(298) * exp{ (ΔH_s/R) * [ A*(1/T - 1/298) - B*ln(T/298) - C*(T - 298) ] }\n\nwhere A, B, C are the salt's solubility polynomial coefficients n(T) = A + B*T + C*T^2 (Table 10.2).\n\nsalt fixed to :NH4NO3: the `salt` keyword does not enter the equation — it only selects, at construction time, the numeric defaults of the four salt-specific `@parameters` from the upstream lookup tables (`DRH_298` Table 10.1, `DELTA_HS_298` Table 10.3, `SOLUBILITY_PARAMS` Table 10.2). The .esm encodes one concrete instantiation fixed to the upstream canonical default `DRHTemperature(; name, salt = :NH4NO3)`, giving DRH_298K = 0.618, ΔH_s = 16270 J/mol (the upstream stores 16.27 kJ/mol and multiplies by 1000), A_sol = 4.298, B_sol = -0.03623 K^-1, C_sol = 7.853e-5 K^-2. Because every salt-specific value is a first-class `type: parameter`, the migrated component reproduces any other tabulated salt by overriding the five parameters — the `nacl_*` and `na2so4_*` inline tests exercise exactly this (overriding to the NaCl and Na2SO4 table rows), mirroring the upstream `DRH Temperature Dependence` testitem which checks the same three salts.\n\nConstant->parameter translation: the upstream `@constants` `R_gas` and `T_ref` are encoded as fixed-default `type: parameter` entries carrying their upstream Float64 values bit-for-bit. This mirrors the sibling convention (stefan_boltzmann.esm, critical_ssa.esm, clmu_atmosphere.esm) of translating `@constants` to fixed-default parameters so each named quantity is a first-class symbol in the expression AST rather than a magic literal.\n\nObserved classification: `DRH` is an algebraic function of the eight parameters (`DRH ~ ...`; no time derivative anywhere). After MTK structural_simplify / mtkcompile the compiled system has zero ODE states and `DRH` becomes an observed quantity — the upstream `ModelingToolkit Integration` testitem exercises exactly this compiled form via `mtkcompile(DRHTemperature(salt = :NH4NO3))`. `DRH` is therefore serialized as `type: observed` with an `expression` carrying the Eq. 10.72 right-hand side, and the `equations` array is empty, matching the sibling observed-only Aerosol.jl migrations critical_ssa.esm and zsr.esm.\n\nNot migrated: the file-level helpers `drh_temperature(T, salt)` (a scalar evaluator of the same Eq. 10.72) and `nh4no3_drh(T)` (the empirical Eq. 10.88 correlation for NH4NO3) in drh.jl are plain Julia functions, not MTK components, and are out of scope for this component migration. The upstream tests that call `drh_temperature` directly are reproduced here through the equivalent component-parameter form — the function and the component evaluate the identical Eq. 10.72.\n\nTolerance rationale (model-level rel=1e-8 / abs=1e-12): the model is a small closed-form algebraic expression — one `exp`, one `log`, and a handful of multiplies/divides over fixed Float64 inputs — so evaluation roundoff is at the few-ULP (~1e-15 relative) level; rel=1e-8 leaves ample headroom while still catching a structural regression. abs=1e-12 floors any near-zero DRH cold-limit value. At T = T_ref = 298 K the exponent argument is identically zero (1/T - 1/T_ref, ln(T/T_ref) and T - T_ref each evaluate to exact float 0), so `upstream_reference_T298_NH4NO3` pins DRH = DRH_298K = 0.618 exactly."
  },
  "variables": {
    "T": {
      "type": "parameter",
      "units": "K",
      "default": 298.0,
      "description": "Ambient temperature — the input at which the deliquescence relative humidity is evaluated."
    },
    "DRH_298K": {
      "type": "parameter",
      "units": "1",
      "default": 0.618,
      "description": "Deliquescence relative humidity at the 298 K reference temperature, as a fraction in [0, 1] (Seinfeld & Pandis Table 10.1). Default 0.618 is the NH4NO3 value."
    },
    "ΔH_s": {
      "type": "parameter",
      "units": "J/mol",
      "default": 16270.0,
      "description": "Enthalpy of solution of the salt (Seinfeld & Pandis Table 10.3). Default 16270 J/mol is the NH4NO3 value (16.27 kJ/mol). Salts with ΔH_s > 0 have DRH decreasing with temperature; ΔH_s < 0 reverses the trend."
    },
    "A_sol": {
      "type": "parameter",
      "units": "1",
      "default": 4.298,
      "description": "Solubility polynomial coefficient A in n(T) = A + B*T + C*T^2 (Seinfeld & Pandis Table 10.2; n is moles salt per mole water at saturation, dimensionless). Default 4.298 is the NH4NO3 value."
    },
    "B_sol": {
      "type": "parameter",
      "units": "K^-1",
      "default": -0.03623,
      "description": "Solubility polynomial coefficient B in n(T) = A + B*T + C*T^2 (Seinfeld & Pandis Table 10.2). Default -0.03623 K^-1 is the NH4NO3 value."
    },
    "C_sol": {
      "type": "parameter",
      "units": "K^-2",
      "default": 7.853e-05,
      "description": "Solubility polynomial coefficient C in n(T) = A + B*T + C*T^2 (Seinfeld & Pandis Table 10.2). Default 7.853e-5 K^-2 is the NH4NO3 value."
    },
    "R_gas": {
      "type": "parameter",
      "units": "J/(mol*K)",
      "default": 8.314,
      "description": "Universal gas constant (upstream `@constants` value 8.314 J*mol^-1*K^-1; encoded as a fixed-default parameter per rig convention so it is a named symbol in the expression AST)."
    },
    "T_ref": {
      "type": "parameter",
      "units": "K",
      "default": 298.0,
      "description": "Reference temperature 298 K at which DRH_298K and the solubility-table coefficients are defined (upstream `@constants`; encoded as a fixed-default parameter)."
    },
    "DRH": {
      "type": "unknown",
      "units": "1",
      "description": "Deliquescence relative humidity at temperature T, as a fraction in [0, 1] (Eq. 10.72): DRH = DRH_298K * exp{ (ΔH_s/R_gas) * [ A_sol*(1/T - 1/T_ref) - B_sol*ln(T/T_ref) - C_sol*(T - T_ref) ] }."
    }
  },
  "equations": [
    {
      "lhs": "DRH",
      "rhs": {
        "op": "*",
        "args": [
          "DRH_298K",
          {
            "op": "exp",
            "args": [
              {
                "op": "*",
                "args": [
                  {
                    "op": "/",
                    "args": [
                      "ΔH_s",
                      "R_gas"
                    ]
                  },
                  {
                    "op": "-",
                    "args": [
                      {
                        "op": "-",
                        "args": [
                          {
                            "op": "*",
                            "args": [
                              "A_sol",
                              {
                                "op": "-",
                                "args": [
                                  {
                                    "op": "/",
                                    "args": [
                                      1,
                                      "T"
                                    ]
                                  },
                                  {
                                    "op": "/",
                                    "args": [
                                      1,
                                      "T_ref"
                                    ]
                                  }
                                ]
                              }
                            ]
                          },
                          {
                            "op": "*",
                            "args": [
                              "B_sol",
                              {
                                "op": "log",
                                "args": [
                                  {
                                    "op": "/",
                                    "args": [
                                      "T",
                                      "T_ref"
                                    ]
                                  }
                                ]
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "op": "*",
                        "args": [
                          "C_sol",
                          {
                            "op": "-",
                            "args": [
                              "T",
                              "T_ref"
                            ]
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    }
  ],
  "tolerance": {
    "rel": 1e-08,
    "abs": 1e-12
  },
  "tests": [
    {
      "id": "upstream_reference_T298_NH4NO3",
      "description": "Reproduces the upstream `DRH Temperature Dependence` testitem reference check `drh_temperature(298.0, :NH4NO3) ≈ 0.618`. At T = T_ref = 298 K the Eq. 10.72 exponent argument is identically zero (1/T - 1/T_ref = 0, ln(T/T_ref) = 0, T - T_ref = 0), so DRH = DRH_298K * exp(0) = 0.618 exactly. Asserted at both ends of the time span to confirm the algebraic model is time-invariant.",
      "parameter_overrides": {
        "T": 298.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "DRH",
          "time": 0.0,
          "expected": 0.618
        },
        {
          "variable": "DRH",
          "time": 1.0,
          "expected": 0.618
        }
      ]
    },
    {
      "id": "nh4no3_cold_T280",
      "description": "NH4NO3 at T = 280 K. NH4NO3 has ΔH_s = 16.27 kJ/mol > 0, so DRH decreases with increasing temperature; at 280 K (below the 298 K reference) DRH = 0.7276 > DRH(298) = 0.618. Together with `nh4no3_warm_T310` this reproduces the upstream `drh_280 > drh_298 > drh_310` ordering.",
      "parameter_overrides": {
        "T": 280.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "DRH",
          "time": 0.0,
          "expected": 0.7276339262964759
        }
      ]
    },
    {
      "id": "nh4no3_warm_T310",
      "description": "NH4NO3 at T = 310 K. Above the 298 K reference, the positive-ΔH_s salt's DRH drops to 0.5385 < DRH(298) = 0.618 — the warm half of the upstream `drh_280 > drh_298 > drh_310` monotonic-decrease check.",
      "parameter_overrides": {
        "T": 310.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "DRH",
          "time": 0.0,
          "expected": 0.5385211858060412
        }
      ]
    },
    {
      "id": "nh4no3_physical_bound_cold_T250",
      "description": "NH4NO3 at T = 250 K — cold end of the upstream physical-bounds loop `for T in [250, 270, 298, 310, 330]: 0 < drh_val < 1`. DRH = 0.8712 lies inside (0, 1).",
      "parameter_overrides": {
        "T": 250.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "DRH",
          "time": 0.0,
          "expected": 0.871172452231081
        }
      ]
    },
    {
      "id": "nh4no3_physical_bound_hot_T330",
      "description": "NH4NO3 at T = 330 K — hot end of the upstream physical-bounds loop `for T in [250, 270, 298, 310, 330]: 0 < drh_val < 1`. DRH = 0.4049 lies inside (0, 1); the largest temperature excursion still yields a physical DRH.",
      "parameter_overrides": {
        "T": 330.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "DRH",
          "time": 0.0,
          "expected": 0.40487604425039875
        }
      ]
    },
    {
      "id": "nacl_cold_T280",
      "description": "NaCl at T = 280 K, with all five salt-specific parameters overridden to the NaCl table rows (DRH_298K = 0.753 Table 10.1; ΔH_s = 1880 J/mol Table 10.3; A_sol = 0.1805, B_sol = -5.31e-4, C_sol = 9.965e-7 Table 10.2). NaCl has ΔH_s = 1.88 kJ/mol > 0; with `nacl_warm_T310` this reproduces the upstream `drh_nacl_280 > drh_nacl_310` check.",
      "parameter_overrides": {
        "T": 280.0,
        "DRH_298K": 0.753,
        "ΔH_s": 1880.0,
        "A_sol": 0.1805,
        "B_sol": -0.000531,
        "C_sol": 9.965e-07
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "DRH",
          "time": 0.0,
          "expected": 0.7570619896210471
        }
      ]
    },
    {
      "id": "nacl_warm_T310",
      "description": "NaCl at T = 310 K (the five salt-specific parameters overridden to the NaCl table rows). DRH = 0.7505 < the 280 K value 0.7571 — the warm half of the upstream `drh_nacl_280 > drh_nacl_310` decrease check for the small-positive-ΔH_s salt.",
      "parameter_overrides": {
        "T": 310.0,
        "DRH_298K": 0.753,
        "ΔH_s": 1880.0,
        "A_sol": 0.1805,
        "B_sol": -0.000531,
        "C_sol": 9.965e-07
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "DRH",
          "time": 0.0,
          "expected": 0.7505450495320607
        }
      ]
    },
    {
      "id": "na2so4_cold_T280",
      "description": "Na2SO4 at T = 280 K, with all five salt-specific parameters overridden to the Na2SO4 table rows (DRH_298K = 0.842 Table 10.1; ΔH_s = -9760 J/mol Table 10.3; A_sol = 0.3754, B_sol = -1.763e-3, C_sol = 2.424e-6 Table 10.2). Na2SO4 has ΔH_s = -9.76 kJ/mol < 0, which reverses the temperature trend; with `na2so4_warm_T310` this reproduces the upstream `drh_na2so4_280 < drh_na2so4_310` check.",
      "parameter_overrides": {
        "T": 280.0,
        "DRH_298K": 0.842,
        "ΔH_s": -9760.0,
        "A_sol": 0.3754,
        "B_sol": -0.001763,
        "C_sol": 2.424e-06
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "DRH",
          "time": 0.0,
          "expected": 0.8275236172331673
        }
      ]
    },
    {
      "id": "na2so4_warm_T310",
      "description": "Na2SO4 at T = 310 K (the five salt-specific parameters overridden to the Na2SO4 table rows). DRH = 0.8502 > the 280 K value 0.8275 — confirming that the negative-ΔH_s salt's DRH increases with temperature, the opposite of NH4NO3 and NaCl (upstream `drh_na2so4_280 < drh_na2so4_310`).",
      "parameter_overrides": {
        "T": 310.0,
        "DRH_298K": 0.842,
        "ΔH_s": -9760.0,
        "A_sol": 0.3754,
        "B_sol": -0.001763,
        "C_sol": 2.424e-06
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "DRH",
          "time": 0.0,
          "expected": 0.8501949324719044
        }
      ]
    }
  ],
  "analyses": [
    {
      "id": "drh_vs_temperature_NH4NO3",
      "description": "Temperature dependence of NH4NO3 deliquescence relative humidity over a 250-340 K sweep at the upstream default parameterization (Eq. 10.72). Because NH4NO3 has a positive enthalpy of solution (ΔH_s = 16.27 kJ/mol), DRH decreases monotonically with temperature — from ≈ 0.87 at 250 K through the 0.618 reference value at 298 K down to ≈ 0.34 at 340 K.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_sweep": {
        "type": "cartesian",
        "dimensions": [
          {
            "parameter": "T",
            "range": {
              "start": 250.0,
              "stop": 340.0,
              "count": 60,
              "scale": "linear"
            }
          }
        ]
      },
      "plots": [
        {
          "id": "drh_vs_T_nh4no3",
          "type": "line",
          "description": "NH4NO3 deliquescence relative humidity DRH as a function of temperature T — a monotonic decrease for the positive-enthalpy salt.",
          "x": {
            "variable": "T",
            "label": "Temperature T (K)"
          },
          "y": {
            "variable": "DRH",
            "label": "Deliquescence relative humidity DRH"
          }
        }
      ]
    },
    {
      "id": "drh_vs_temperature_na2so4",
      "description": "Temperature dependence of Na2SO4 deliquescence relative humidity over a 250-340 K sweep, with the five salt-specific parameters set to the Na2SO4 table rows. Na2SO4 has a negative enthalpy of solution (ΔH_s = -9.76 kJ/mol), so its DRH increases with temperature — the opposite trend to NH4NO3 in the companion example. The curve rises from ≈ 0.80 at 250 K through 0.842 at 298 K toward ≈ 0.87 at 340 K.",
      "parameters": {
        "DRH_298K": 0.842,
        "ΔH_s": -9760.0,
        "A_sol": 0.3754,
        "B_sol": -0.001763,
        "C_sol": 2.424e-06
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_sweep": {
        "type": "cartesian",
        "dimensions": [
          {
            "parameter": "T",
            "range": {
              "start": 250.0,
              "stop": 340.0,
              "count": 60,
              "scale": "linear"
            }
          }
        ]
      },
      "plots": [
        {
          "id": "drh_vs_T_na2so4",
          "type": "line",
          "description": "Na2SO4 deliquescence relative humidity DRH as a function of temperature T — a monotonic increase for the negative-enthalpy salt.",
          "x": {
            "variable": "T",
            "label": "Temperature T (K)"
          },
          "y": {
            "variable": "DRH",
            "label": "Deliquescence relative humidity DRH"
          }
        }
      ]
    }
  ]
}