Version: dev

WSM6IceDeposition

Vapor-exchange and conversion process rates of the ice phase of the WRF single-moment 6-class microphysics scheme (WSM6; Hong and Lim 2006; Hong, Dudhia and Chen 2004), transcribed from the cold-rain block of mp_wsm6_run in phys/physics_mmm/mp_wsm6.F90 (WRF 4.8, NCAR/MMM-physics): deposition/sublimation of vapor on cloud ice (pidep, HDC eq. 9), snow (psdep, HDC eq. 14) and graupel (pgdep, HL A21) below 0 C; ice nucleation from vapor (pigen, HDC eqs. 7-8); aggregation of ice to snow (psaut, HDC eq. 12) and of snow to graupel (pgaut, LFO eq. 37); and evaporation of melting snow (psevp, HL A35) and graupel (pgevp, HL A25) above 0 C. The UNLIMITED rates are the physics: pidep = 4 D_i N_i (rh_i - 1)/F_i, psdep/pgdep/psevp/pgevp the ventilated diffusional growth (rh - 1)(c1 lambda^-2 + c2 f_v coeres)/F, pgaut = alpha2(T) max(0, qs - qs0). Two processes are instantaneous adjustments that the kernel writes as rates: nucleation relaxes the ice content to the target q_i0(T) = 4.92e-11 N_i0(T)^1.33/rho and ice-to-snow aggregation removes the excess of q_i over q_imax = 2.08e22 D_max^8/rho; here the physical quantities are the targets q_i0 and q_imax (observeds qi_nucleation_target, qi_max) and the rates pigen, psaut carry the sub-step dtcld as a parameter (EqWeFiC FORTRAN_BUGS.md N3). WSM6 limits the deposition processes SEQUENTIALLY against the vapor budget: after the rain evaporation prevp of the warm-rain block (an INPUT here, from warm_rain.esm), each of pidep, psdep, pgdep may take at most half the supersaturation over ice per sub-step (satdt/2) and at most what the earlier processes left (supice), a sublimating species may not lose more than it holds, and once the running sum of the limited rates reaches satdt the flag ifsat closes the remaining processes and the nucleation; that chain is transcribed pointwise as the <rate>_lim observeds and the ifsat_* indicators, all time-step artefacts kept apart from the physics. The saturation state over water and ice (qsat_w, rh_w, qsat_i, rh_i, xl) is an INPUT from saturation.esm evaluated at the start of the sub-step (EqWeFiC FORTRAN_BUGS.md N4); the size distributions, N_i, D_i come from hydrometeor_slopes.esm mounted as subsystem `sd`; the deposition coefficients precs1/2, precg1/2, the transport properties of air, the ventilation factor and the ventilation moments live there too; the diffusional-growth denominators over water and ice are computed here with the same template as warm_rain.esm. Constants: wsm6_parameters.esm (`par`), lib/wrf_constants.esm (`wrf`). Consumer-supplied inputs are the rewrite-target ops `input_<name>` lowered in the inline tests through a per-test template library extracted from kernel dumps of the instrumented WRF fork ctessum-claude/WRF, commit e42a269 (v4.8.0-2-ge42a269e). EqWeFiC, cited here for FORTRAN_BUGS.md and couplings/, is https://github.com/EarthSciML/EqWeFiC, where these components were developed and are coupled into a WRF column.

Domain
atmospheric_dynamics
Subdomain
wsm6
Type
model
.esm schema
1.2.0
Source
components/atmospheric_dynamics/wsm6/ice_deposition.esm
Tags
#atmospheric_dynamics #wsm6 #model #wrf #microphysics #deposition #nucleation #ice-phase #column

Description

Vapor-exchange and conversion process rates of the ice phase of the WRF single-moment 6-class microphysics scheme (WSM6; Hong and Lim 2006; Hong, Dudhia and Chen 2004), transcribed from the cold-rain block of mp_wsm6_run in phys/physics_mmm/mp_wsm6.F90 (WRF 4.8, NCAR/MMM-physics): deposition/sublimation of vapor on cloud ice (pidep, HDC eq. 9), snow (psdep, HDC eq. 14) and graupel (pgdep, HL A21) below 0 C; ice nucleation from vapor (pigen, HDC eqs. 7-8); aggregation of ice to snow (psaut, HDC eq. 12) and of snow to graupel (pgaut, LFO eq. 37); and evaporation of melting snow (psevp, HL A35) and graupel (pgevp, HL A25) above 0 C. The UNLIMITED rates are the physics: pidep = 4 D_i N_i (rh_i - 1)/F_i, psdep/pgdep/psevp/pgevp the ventilated diffusional growth (rh - 1)(c1 lambda^-2 + c2 f_v coeres)/F, pgaut = alpha2(T) max(0, qs - qs0). Two processes are instantaneous adjustments that the kernel writes as rates: nucleation relaxes the ice content to the target q_i0(T) = 4.92e-11 N_i0(T)^1.33/rho and ice-to-snow aggregation removes the excess of q_i over q_imax = 2.08e22 D_max^8/rho; here the physical quantities are the targets q_i0 and q_imax (observeds qi_nucleation_target, qi_max) and the rates pigen, psaut carry the sub-step dtcld as a parameter (EqWeFiC FORTRAN_BUGS.md N3). WSM6 limits the deposition processes SEQUENTIALLY against the vapor budget: after the rain evaporation prevp of the warm-rain block (an INPUT here, from warm_rain.esm), each of pidep, psdep, pgdep may take at most half the supersaturation over ice per sub-step (satdt/2) and at most what the earlier processes left (supice), a sublimating species may not lose more than it holds, and once the running sum of the limited rates reaches satdt the flag ifsat closes the remaining processes and the nucleation; that chain is transcribed pointwise as the lim observeds and the ifsat* indicators, all time-step artefacts kept apart from the physics. The saturation state over water and ice (qsat_w, rh_w, qsat_i, rh_i, xl) is an INPUT from saturation.esm evaluated at the start of the sub-step (EqWeFiC FORTRAN_BUGS.md N4); the size distributions, N_i, D_i come from hydrometeor_slopes.esm mounted as subsystem sd; the deposition coefficients precs1/2, precg1/2, the transport properties of air, the ventilation factor and the ventilation moments live there too; the diffusional-growth denominators over water and ice are computed here with the same template as warm_rain.esm. Constants: wsm6_parameters.esm (par), lib/wrf_constants.esm (wrf). Consumer-supplied inputs are the rewrite-target ops input_<name> lowered in the inline tests through a per-test template library extracted from kernel dumps of the instrumented WRF fork ctessum-claude/WRF, commit e42a269 (v4.8.0-2-ge42a269e). EqWeFiC, cited here for FORTRAN_BUGS.md and couplings/, is https://github.com/EarthSciML/EqWeFiC , where these components were developed and are coupled into a WRF column.

Reference

  • Hong, S.-Y., J. Dudhia, and S.-H. Chen (2004). A revised approach to ice microphysical processes for the bulk parameterization of clouds and precipitation. Mon. Wea. Rev. 132, 103-120 (eqs. 7-9, 12-14).
  • Hong, S.-Y., and J.-O. J. Lim (2006). The WRF single-moment 6-class microphysics scheme (WSM6). J. Korean Meteor. Soc. 42, 129-151 (appendix A eqs. A4, A21, A25, A35, eq. 50).
  • Lin, Y.-L., R. D. Farley, and H. D. Orville (1983). Bulk parameterization of the snow field in a cloud model. J. Climate Appl. Meteor. 22, 1065-1092 (eqs. 37, 46).
  • Rutledge, S. A., and P. V. Hobbs (1983). The mesoscale and microscale structure and organization of clouds and precipitation in midlatitude cyclones. VIII. J. Atmos. Sci. 40, 1185-1206 (eq. A27).
  • NCAR/MMM-physics mp_wsm6.F90 at commit 550b5b4 (WRF 4.8 phys/physics_mmm submodule), cold-rain block lines 1142-1245; diffac, venfac helper functions.

Parameters

NameUnitsDefaultDescription
qv_inkg/kg0.0Coupling-target parameter (additive): receives the vapor mixing ratio from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_qv to this name. Unused by the standalone inline tests, which lower input_qv to a dumped column profile instead.
qsat_w_inkg/kg0.0Coupling-target parameter (additive): receives the start-of-sub-step saturation mixing ratio over water from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_qsat_w to this name. Unused by the standalone inline tests, which lower input_qsat_w to a dumped column profile instead.
rh_w_in10.0Coupling-target parameter (additive): receives the start-of-sub-step relative humidity over water from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_rh_w to this name. Unused by the standalone inline tests, which lower input_rh_w to a dumped column profile instead.
qsat_i_inkg/kg0.0Coupling-target parameter (additive): receives the start-of-sub-step saturation mixing ratio over ice from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_qsat_i to this name. Unused by the standalone inline tests, which lower input_qsat_i to a dumped column profile instead.
rh_i_in10.0Coupling-target parameter (additive): receives the start-of-sub-step relative humidity over ice from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_rh_i to this name. Unused by the standalone inline tests, which lower input_rh_i to a dumped column profile instead.
xl_inJ/kg0.0Coupling-target parameter (additive): receives the start-of-sub-step latent heat of vaporization from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_xl to this name. Unused by the standalone inline tests, which lower input_xl to a dumped column profile instead.
prevp_inkg/kg/s0.0Coupling-target parameter (additive): receives the rain evaporation rate that opens WSM6’s sequential vapor budget from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_prevp to this name. Unused by the standalone inline tests, which lower input_prevp to a dumped column profile instead.
dtclds60.0Length of the WSM6 sub-time step; enters the limiters and the adjustment rates only.

Observed

NameUnitsDefaultDescription
qvkg/kgWater-vapor mixing ratio (WSM6 q).
qsat_wkg/kgSaturation mixing ratio over water at the start-of-step state (saturation.esm).
rh_w1Relative humidity over water at the start-of-step state (saturation.esm).
qsat_ikg/kgSaturation mixing ratio over ice at the start-of-step state (saturation.esm).
rh_i1Relative humidity over ice at the start-of-step state (saturation.esm).
xlJ/kgLatent heat of vaporization at the start-of-step temperature (saturation.esm).
prevpkg/kg/sRain evaporation/condensation rate as applied by the kernel (warm_rain.esm prevp_lim); the first entry of the sequential vapor budget.
roqimaxkg/m^3Maximum ice content rho q_imax = 2.08e22 D_max^8 before aggregation to snow (WSM6 roqimax).
supcolKSupercooling T0 - T (WSM6 supcol).
supsatkg/kgSupersaturation over ice, max(qv, qmin) - qsat_i (WSM6 supsat).
satdtkg/kg/sSupersaturation over ice per sub-step, supsat/dtcld (WSM6 satdt).
f_diff_ws/m^2Diffusional-growth denominator over water, rho xl^2/(ka r_v T^2) + 1/(qsat_w Dv) (WSM6 work1(:,:,1)).
f_diff_is/m^2Diffusional-growth denominator over ice with the sublimation enthalpy xls (WSM6 work1(:,:,2)).
pidepkg/kg/sDeposition (positive) / sublimation of vapor on cloud ice below 0 C (HDC 9), unlimited; zero without ice or above 0 C.
supice_ikg/kg/sVapor budget left for cloud ice after rain evaporation, satdt - prevp (WSM6 supice before pidep).
pidep_limkg/kg/spidep after the sequential saturation limiter (WSM6 pidep as applied).
ifsat_i11 where |prevp + pidep_lim| >= |satdt| has closed the vapor budget (WSM6 ifsat after pidep), else 0.
psdepkg/kg/sDeposition / sublimation of vapor on snow below 0 C (HDC 14), n0s(T)/n0s (rh_i - 1)(precs1 lambda_s^-2 + precs2 f_v coeres_s)/F_i, unlimited.
supice_skg/kg/sVapor budget left for snow, satdt - prevp - pidep_lim.
psdep_limkg/kg/spsdep after the sequential saturation limiter; zero where ifsat_i has closed the budget (WSM6 psdep as applied).
ifsat_s11 where the budget is closed after psdep (WSM6 ifsat after psdep).
pgdepkg/kg/sDeposition / sublimation of vapor on graupel below 0 C (HL A21, LFO 46), unlimited.
supice_gkg/kg/sVapor budget left for graupel, satdt - prevp - pidep_lim - psdep_lim.
pgdep_limkg/kg/spgdep after the sequential saturation limiter; zero where ifsat_s has closed the budget (WSM6 pgdep as applied).
ifsat_g11 where the budget is closed after pgdep (WSM6 ifsat after pgdep).
supice_nkg/kg/sVapor budget left for nucleation, satdt - prevp - pidep_lim - psdep_lim - pgdep_lim.
qi_nucleation_targetkg/kgIce mixing ratio the nucleation relaxes towards, q_i0(T) = 4.92e-11 (1e3 exp(0.1 (T0 - T)))^1.33/rho (HDC 7-8; WSM6 roqi0/den).
pigenkg/kg/sIce nucleation rate max(0, (q_i0 - q_i)/dtcld) below 0 C where supersaturated over ice (HL 50, HDC 7-8): an adjustment written as a rate, so it scales with 1/dtcld.
pigen_limkg/kg/spigen after the vapor-budget limiter min(pigen, satdt, supice_n); zero where ifsat_g has closed the budget (WSM6 pigen as applied).
qi_maxkg/kgMaximum ice mixing ratio before aggregation to snow, roqimax/rho (HDC 13; WSM6 qimax).
psautkg/kg/sAggregation of cloud ice to snow, max(0, (q_i - q_imax)/dtcld) below 0 C (HDC 12): an adjustment written as a rate (WSM6 psaut, no further limiter).
pgautkg/kg/sAggregation of snow to graupel below 0 C, 1e-3 exp(-0.09 (T0 - T)) max(0, qs - qs0) (LFO 37, HL A4), unlimited.
pgaut_limkg/kg/spgaut after the limiter min(pgaut, qs/dtcld).
psevpkg/kg/sEvaporation of melting snow above 0 C where subsaturated over water (HL A35, RH83 A27), n0s(T)/n0s (rh_w - 1)(precs1 lambda_s^-2 + precs2 f_v coeres_s)/F_w (negative), unlimited.
psevp_limkg/kg/spsevp after the limiter min(max(psevp, -qs/dtcld), 0).
pgevpkg/kg/sEvaporation of melting graupel above 0 C where subsaturated over water (HL A25, RH84 A19), unlimited.
pgevp_limkg/kg/spgevp after the limiter min(max(pgevp, -qg/dtcld), 0).

Observed expressions

$$ qv = \mathrm{input_qv}\left(\right) $$

Water-vapor mixing ratio (WSM6 q).

$$ qsat_{w} = \mathrm{input_qsat_w}\left(\right) $$

Saturation mixing ratio over water at the start-of-step state (saturation.esm).

$$ rh_{w} = \mathrm{input_rh_w}\left(\right) $$

Relative humidity over water at the start-of-step state (saturation.esm).

$$ qsat_{i} = \mathrm{input_qsat_i}\left(\right) $$

Saturation mixing ratio over ice at the start-of-step state (saturation.esm).

$$ rh_{i} = \mathrm{input_rh_i}\left(\right) $$

Relative humidity over ice at the start-of-step state (saturation.esm).

$$ xl = \mathrm{input_xl}\left(\right) $$

Latent heat of vaporization at the start-of-step temperature (saturation.esm).

$$ prevp = \mathrm{input_prevp}\left(\right) $$

Rain evaporation/condensation rate as applied by the kernel (warm_rain.esm prevp_lim); the first entry of the sequential vapor budget.

$$ roqimax = par.roqimax_{coef} \cdot par.dimax^{par.roqimax_{exp}} $$

Maximum ice content rho q_imax = 2.08e22 D_max^8 before aggregation to snow (WSM6 roqimax).

$$ supcol = wrf.svpt0 - sd.T $$

Supercooling T0 - T (WSM6 supcol).

$$ supsat = \mathrm{max}\left(qv, par.qmin\right) - qsat_{i} $$

Supersaturation over ice, max(qv, qmin) - qsat_i (WSM6 supsat).

$$ satdt = \frac{supsat}{dtcld} $$

Supersaturation over ice per sub-step, supsat/dtcld (WSM6 satdt).

$$ f_{diff\,w} = \mathrm{diffusional_growth_denominator}\left(L=xl, T=sd.T, rho=sd.rho, ka=sd.ka, r_{v}=wrf.r_{v}, qsat=qsat_{w}, Dv=sd.Dv\right) $$

Diffusional-growth denominator over water, rho xl^2/(ka r_v T^2) + 1/(qsat_w Dv) (WSM6 work1(:,:,1)).

$$ f_{diff\,i} = \mathrm{diffusional_growth_denominator}\left(L=wrf.xls, T=sd.T, rho=sd.rho, ka=sd.ka, r_{v}=wrf.r_{v}, qsat=qsat_{i}, Dv=sd.Dv\right) $$

Diffusional-growth denominator over ice with the sublimation enthalpy xls (WSM6 work1(:,:,2)).

$$ pidep = \mathrm{ifelse}\left(\mathrm{and}\left(\mathrm{>}\left(supcol, 0\right), \mathrm{>}\left(sd.qi, 0\right)\right), \mathrm{ice_deposition_rate}\left(D=sd.D_{i}, xni=sd.xni, rh_{i}=rh_{i}, f_{diff\,i}=f_{diff\,i}\right), 0\right) $$

Deposition (positive) / sublimation of vapor on cloud ice below 0 C (HDC 9), unlimited; zero without ice or above 0 C.

$$ supice_{i} = satdt - prevp $$

Vapor budget left for cloud ice after rain evaporation, satdt - prevp (WSM6 supice before pidep).

$$ pidep_{lim} = \mathrm{ifelse}\left(\mathrm{and}\left(\mathrm{>}\left(supcol, 0\right), \mathrm{>}\left(sd.qi, 0\right)\right), \mathrm{saturation_limited_deposition}\left(rate=pidep, satdt=satdt, supice=supice_{i}, q=sd.qi, dt=dtcld\right), 0\right) $$

pidep after the sequential saturation limiter (WSM6 pidep as applied).

$$ ifsat_{i} = \mathrm{ifelse}\left(\mathrm{and}\left(\mathrm{>}\left(supcol, 0\right), \mathrm{>}\left(sd.qi, 0\right), \mathrm{>=}\left(\left|prevp + pidep_{lim}\right|, \left|satdt\right|\right)\right), \mathrm{const}\left(\right), \mathrm{const}\left(\right)\right) $$

1 where |prevp + pidep_lim| >= |satdt| has closed the vapor budget (WSM6 ifsat after pidep), else 0.

$$ psdep = \mathrm{ifelse}\left(\mathrm{and}\left(\mathrm{>}\left(supcol, 0\right), \mathrm{>}\left(sd.qs, 0\right)\right), sd.n0sfac \cdot \mathrm{ventilated_diffusional_growth}\left(rh=rh_{i}, rslope2=sd.rslope2_{s}, coeres=sd.coeres_{s}, f_{vent}=sd.f_{vent}, f_{diff}=f_{diff\,i}, c1=sd.precs1, c2=sd.precs2\right), 0\right) $$

Deposition / sublimation of vapor on snow below 0 C (HDC 14), n0s(T)/n0s (rh_i - 1)(precs1 lambda_s^-2 + precs2 f_v coeres_s)/F_i, unlimited.

$$ supice_{s} = supice_{i} - pidep_{lim} $$

Vapor budget left for snow, satdt - prevp - pidep_lim.

$$ psdep_{lim} = \mathrm{ifelse}\left(\mathrm{and}\left(\mathrm{>}\left(supcol, 0\right), \mathrm{>}\left(sd.qs, 0\right), ifsat_{i} = 0\right), \mathrm{saturation_limited_deposition}\left(rate=psdep, satdt=satdt, supice=supice_{s}, q=sd.qs, dt=dtcld\right), 0\right) $$

psdep after the sequential saturation limiter; zero where ifsat_i has closed the budget (WSM6 psdep as applied).

$$ ifsat_{s} = \mathrm{ifelse}\left(\mathrm{or}\left(ifsat_{i} = 1, \mathrm{and}\left(\mathrm{>}\left(supcol, 0\right), \mathrm{>}\left(sd.qs, 0\right), \mathrm{>=}\left(\left|prevp + pidep_{lim} + psdep_{lim}\right|, \left|satdt\right|\right)\right)\right), \mathrm{const}\left(\right), \mathrm{const}\left(\right)\right) $$

1 where the budget is closed after psdep (WSM6 ifsat after psdep).

$$ pgdep = \mathrm{ifelse}\left(\mathrm{and}\left(\mathrm{>}\left(supcol, 0\right), \mathrm{>}\left(sd.qg, 0\right)\right), \mathrm{ventilated_diffusional_growth}\left(rh=rh_{i}, rslope2=sd.rslope2_{g}, coeres=sd.coeres_{g}, f_{vent}=sd.f_{vent}, f_{diff}=f_{diff\,i}, c1=sd.precg1, c2=sd.precg2\right), 0\right) $$

Deposition / sublimation of vapor on graupel below 0 C (HL A21, LFO 46), unlimited.

$$ supice_{g} = supice_{s} - psdep_{lim} $$

Vapor budget left for graupel, satdt - prevp - pidep_lim - psdep_lim.

$$ pgdep_{lim} = \mathrm{ifelse}\left(\mathrm{and}\left(\mathrm{>}\left(supcol, 0\right), \mathrm{>}\left(sd.qg, 0\right), ifsat_{s} = 0\right), \mathrm{saturation_limited_deposition}\left(rate=pgdep, satdt=satdt, supice=supice_{g}, q=sd.qg, dt=dtcld\right), 0\right) $$

pgdep after the sequential saturation limiter; zero where ifsat_s has closed the budget (WSM6 pgdep as applied).

$$ ifsat_{g} = \mathrm{ifelse}\left(\mathrm{or}\left(ifsat_{s} = 1, \mathrm{and}\left(\mathrm{>}\left(supcol, 0\right), \mathrm{>}\left(sd.qg, 0\right), \mathrm{>=}\left(\left|prevp + pidep_{lim} + psdep_{lim} + pgdep_{lim}\right|, \left|satdt\right|\right)\right)\right), \mathrm{const}\left(\right), \mathrm{const}\left(\right)\right) $$

1 where the budget is closed after pgdep (WSM6 ifsat after pgdep).

$$ supice_{n} = supice_{g} - pgdep_{lim} $$

Vapor budget left for nucleation, satdt - prevp - pidep_lim - psdep_lim - pgdep_lim.

$$ qi_{nucleation\,target} = \mathrm{ice_nucleation_target}\left(T=sd.T, t0=wrf.svpt0, rho=sd.rho, n_{coef}=par.xni0_{coef}, n_{exp}=par.xni0_{exp}, m_{coef}=par.roqi0_{coef}, m_{exp}=par.roqi0_{exp}\right) $$

Ice mixing ratio the nucleation relaxes towards, q_i0(T) = 4.92e-11 (1e3 exp(0.1 (T0 - T)))^1.33/rho (HDC 7-8; WSM6 roqi0/den).

$$ pigen = \mathrm{ifelse}\left(\mathrm{and}\left(\mathrm{>}\left(supcol, 0\right), \mathrm{>}\left(supsat, 0\right)\right), \mathrm{adjustment_towards_target_rate}\left(q_{target}=qi_{nucleation\,target}, q=\mathrm{max}\left(sd.qi, 0\right), dt=dtcld\right), 0\right) $$

Ice nucleation rate max(0, (q_i0 - q_i)/dtcld) below 0 C where supersaturated over ice (HL 50, HDC 7-8): an adjustment written as a rate, so it scales with 1/dtcld.

$$ pigen_{lim} = \mathrm{ifelse}\left(\mathrm{and}\left(\mathrm{>}\left(supcol, 0\right), \mathrm{>}\left(supsat, 0\right), ifsat_{g} = 0\right), \mathrm{min}\left(pigen, satdt, supice_{n}\right), 0\right) $$

pigen after the vapor-budget limiter min(pigen, satdt, supice_n); zero where ifsat_g has closed the budget (WSM6 pigen as applied).

$$ qi_{max} = \frac{roqimax}{sd.rho} $$

Maximum ice mixing ratio before aggregation to snow, roqimax/rho (HDC 13; WSM6 qimax).

$$ psaut = \mathrm{ifelse}\left(\mathrm{and}\left(\mathrm{>}\left(supcol, 0\right), \mathrm{>}\left(sd.qi, 0\right)\right), \mathrm{excess_conversion_rate}\left(q=sd.qi, q_{max}=qi_{max}, dt=dtcld\right), 0\right) $$

Aggregation of cloud ice to snow, max(0, (q_i - q_imax)/dtcld) below 0 C (HDC 12): an adjustment written as a rate (WSM6 psaut, no further limiter).

$$ pgaut = \mathrm{ifelse}\left(\mathrm{and}\left(\mathrm{>}\left(supcol, 0\right), \mathrm{>}\left(sd.qs, 0\right)\right), \mathrm{snow_to_graupel_aggregation}\left(qs=sd.qs, qs0=par.qs0, T=sd.T, t0=wrf.svpt0, coef=par.pgaut_{coef}, expn=par.pgaut_{exp}\right), 0\right) $$

Aggregation of snow to graupel below 0 C, 1e-3 exp(-0.09 (T0 - T)) max(0, qs - qs0) (LFO 37, HL A4), unlimited.

$$ pgaut_{lim} = \mathrm{sink_rate_limiter}\left(rate=pgaut, q=sd.qs, dt=dtcld\right) $$

pgaut after the limiter min(pgaut, qs/dtcld).

$$ psevp = \mathrm{ifelse}\left(\mathrm{and}\left(\mathrm{<}\left(supcol, 0\right), \mathrm{>}\left(sd.qs, 0\right), \mathrm{<}\left(rh_{w}, 1\right)\right), sd.n0sfac \cdot \mathrm{ventilated_diffusional_growth}\left(rh=rh_{w}, rslope2=sd.rslope2_{s}, coeres=sd.coeres_{s}, f_{vent}=sd.f_{vent}, f_{diff}=f_{diff\,w}, c1=sd.precs1, c2=sd.precs2\right), 0\right) $$

Evaporation of melting snow above 0 C where subsaturated over water (HL A35, RH83 A27), n0s(T)/n0s (rh_w - 1)(precs1 lambda_s^-2 + precs2 f_v coeres_s)/F_w (negative), unlimited.

$$ psevp_{lim} = \mathrm{negative_sink_limiter}\left(rate=psevp, q=sd.qs, dt=dtcld\right) $$

psevp after the limiter min(max(psevp, -qs/dtcld), 0).

$$ pgevp = \mathrm{ifelse}\left(\mathrm{and}\left(\mathrm{<}\left(supcol, 0\right), \mathrm{>}\left(sd.qg, 0\right), \mathrm{<}\left(rh_{w}, 1\right)\right), \mathrm{ventilated_diffusional_growth}\left(rh=rh_{w}, rslope2=sd.rslope2_{g}, coeres=sd.coeres_{g}, f_{vent}=sd.f_{vent}, f_{diff}=f_{diff\,w}, c1=sd.precg1, c2=sd.precg2\right), 0\right) $$

Evaporation of melting graupel above 0 C where subsaturated over water (HL A25, RH84 A19), unlimited.

$$ pgevp_{lim} = \mathrm{negative_sink_limiter}\left(rate=pgevp, q=sd.qg, dt=dtcld\right) $$

pgevp after the limiter min(max(pgevp, -qg/dtcld), 0).

Raw .esm

Raw .esm JSON (this component)
{
  "expression_template_imports": [
    {
      "ref": "./microphysics_templates.esm"
    }
  ],
  "subsystems": {
    "wrf": {
      "ref": "../../../lib/wrf_constants.esm"
    },
    "par": {
      "ref": "./wsm6_parameters.esm"
    },
    "sd": {
      "ref": "./hydrometeor_slopes.esm",
      "bindings": {
        "NLEV": "NLEV"
      }
    }
  },
  "variables": {
    "qv_in": {
      "type": "parameter",
      "units": "kg/kg",
      "shape": [
        "lev"
      ],
      "default": 0.0,
      "description": "Coupling-target parameter (additive): receives the vapor mixing ratio from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_qv` to this name. Unused by the standalone inline tests, which lower `input_qv` to a dumped column profile instead."
    },
    "qsat_w_in": {
      "type": "parameter",
      "units": "kg/kg",
      "shape": [
        "lev"
      ],
      "default": 0.0,
      "description": "Coupling-target parameter (additive): receives the start-of-sub-step saturation mixing ratio over water from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_qsat_w` to this name. Unused by the standalone inline tests, which lower `input_qsat_w` to a dumped column profile instead."
    },
    "rh_w_in": {
      "type": "parameter",
      "units": "1",
      "shape": [
        "lev"
      ],
      "default": 0.0,
      "description": "Coupling-target parameter (additive): receives the start-of-sub-step relative humidity over water from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_rh_w` to this name. Unused by the standalone inline tests, which lower `input_rh_w` to a dumped column profile instead."
    },
    "qsat_i_in": {
      "type": "parameter",
      "units": "kg/kg",
      "shape": [
        "lev"
      ],
      "default": 0.0,
      "description": "Coupling-target parameter (additive): receives the start-of-sub-step saturation mixing ratio over ice from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_qsat_i` to this name. Unused by the standalone inline tests, which lower `input_qsat_i` to a dumped column profile instead."
    },
    "rh_i_in": {
      "type": "parameter",
      "units": "1",
      "shape": [
        "lev"
      ],
      "default": 0.0,
      "description": "Coupling-target parameter (additive): receives the start-of-sub-step relative humidity over ice from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_rh_i` to this name. Unused by the standalone inline tests, which lower `input_rh_i` to a dumped column profile instead."
    },
    "xl_in": {
      "type": "parameter",
      "units": "J/kg",
      "shape": [
        "lev"
      ],
      "default": 0.0,
      "description": "Coupling-target parameter (additive): receives the start-of-sub-step latent heat of vaporization from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_xl` to this name. Unused by the standalone inline tests, which lower `input_xl` to a dumped column profile instead."
    },
    "prevp_in": {
      "type": "parameter",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "default": 0.0,
      "description": "Coupling-target parameter (additive): receives the rain evaporation rate that opens WSM6's sequential vapor budget from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_prevp` to this name. Unused by the standalone inline tests, which lower `input_prevp` to a dumped column profile instead."
    },
    "qv": {
      "type": "unknown",
      "units": "kg/kg",
      "shape": [
        "lev"
      ],
      "description": "Water-vapor mixing ratio (WSM6 q)."
    },
    "qsat_w": {
      "type": "unknown",
      "units": "kg/kg",
      "shape": [
        "lev"
      ],
      "description": "Saturation mixing ratio over water at the start-of-step state (saturation.esm)."
    },
    "rh_w": {
      "type": "unknown",
      "units": "1",
      "shape": [
        "lev"
      ],
      "description": "Relative humidity over water at the start-of-step state (saturation.esm)."
    },
    "qsat_i": {
      "type": "unknown",
      "units": "kg/kg",
      "shape": [
        "lev"
      ],
      "description": "Saturation mixing ratio over ice at the start-of-step state (saturation.esm)."
    },
    "rh_i": {
      "type": "unknown",
      "units": "1",
      "shape": [
        "lev"
      ],
      "description": "Relative humidity over ice at the start-of-step state (saturation.esm)."
    },
    "xl": {
      "type": "unknown",
      "units": "J/kg",
      "shape": [
        "lev"
      ],
      "description": "Latent heat of vaporization at the start-of-step temperature (saturation.esm)."
    },
    "prevp": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "Rain evaporation/condensation rate as applied by the kernel (warm_rain.esm prevp_lim); the first entry of the sequential vapor budget."
    },
    "dtcld": {
      "type": "parameter",
      "units": "s",
      "default": 60.0,
      "description": "Length of the WSM6 sub-time step; enters the limiters and the adjustment rates only."
    },
    "roqimax": {
      "type": "unknown",
      "units": "kg/m^3",
      "description": "Maximum ice content rho q_imax = 2.08e22 D_max^8 before aggregation to snow (WSM6 roqimax)."
    },
    "supcol": {
      "type": "unknown",
      "units": "K",
      "shape": [
        "lev"
      ],
      "description": "Supercooling T0 - T (WSM6 supcol)."
    },
    "supsat": {
      "type": "unknown",
      "units": "kg/kg",
      "shape": [
        "lev"
      ],
      "description": "Supersaturation over ice, max(qv, qmin) - qsat_i (WSM6 supsat)."
    },
    "satdt": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "Supersaturation over ice per sub-step, supsat/dtcld (WSM6 satdt)."
    },
    "f_diff_w": {
      "type": "unknown",
      "units": "s/m^2",
      "shape": [
        "lev"
      ],
      "description": "Diffusional-growth denominator over water, rho xl^2/(ka r_v T^2) + 1/(qsat_w Dv) (WSM6 work1(:,:,1))."
    },
    "f_diff_i": {
      "type": "unknown",
      "units": "s/m^2",
      "shape": [
        "lev"
      ],
      "description": "Diffusional-growth denominator over ice with the sublimation enthalpy xls (WSM6 work1(:,:,2))."
    },
    "pidep": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "Deposition (positive) / sublimation of vapor on cloud ice below 0 C (HDC 9), unlimited; zero without ice or above 0 C."
    },
    "supice_i": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "Vapor budget left for cloud ice after rain evaporation, satdt - prevp (WSM6 supice before pidep)."
    },
    "pidep_lim": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "pidep after the sequential saturation limiter (WSM6 pidep as applied)."
    },
    "ifsat_i": {
      "type": "unknown",
      "units": "1",
      "shape": [
        "lev"
      ],
      "description": "1 where |prevp + pidep_lim| >= |satdt| has closed the vapor budget (WSM6 ifsat after pidep), else 0."
    },
    "psdep": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "Deposition / sublimation of vapor on snow below 0 C (HDC 14), n0s(T)/n0s (rh_i - 1)(precs1 lambda_s^-2 + precs2 f_v coeres_s)/F_i, unlimited."
    },
    "supice_s": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "Vapor budget left for snow, satdt - prevp - pidep_lim."
    },
    "psdep_lim": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "psdep after the sequential saturation limiter; zero where ifsat_i has closed the budget (WSM6 psdep as applied)."
    },
    "ifsat_s": {
      "type": "unknown",
      "units": "1",
      "shape": [
        "lev"
      ],
      "description": "1 where the budget is closed after psdep (WSM6 ifsat after psdep)."
    },
    "pgdep": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "Deposition / sublimation of vapor on graupel below 0 C (HL A21, LFO 46), unlimited."
    },
    "supice_g": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "Vapor budget left for graupel, satdt - prevp - pidep_lim - psdep_lim."
    },
    "pgdep_lim": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "pgdep after the sequential saturation limiter; zero where ifsat_s has closed the budget (WSM6 pgdep as applied)."
    },
    "ifsat_g": {
      "type": "unknown",
      "units": "1",
      "shape": [
        "lev"
      ],
      "description": "1 where the budget is closed after pgdep (WSM6 ifsat after pgdep)."
    },
    "supice_n": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "Vapor budget left for nucleation, satdt - prevp - pidep_lim - psdep_lim - pgdep_lim."
    },
    "qi_nucleation_target": {
      "type": "unknown",
      "units": "kg/kg",
      "shape": [
        "lev"
      ],
      "description": "Ice mixing ratio the nucleation relaxes towards, q_i0(T) = 4.92e-11 (1e3 exp(0.1 (T0 - T)))^1.33/rho (HDC 7-8; WSM6 roqi0/den)."
    },
    "pigen": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "Ice nucleation rate max(0, (q_i0 - q_i)/dtcld) below 0 C where supersaturated over ice (HL 50, HDC 7-8): an adjustment written as a rate, so it scales with 1/dtcld."
    },
    "pigen_lim": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "pigen after the vapor-budget limiter min(pigen, satdt, supice_n); zero where ifsat_g has closed the budget (WSM6 pigen as applied)."
    },
    "qi_max": {
      "type": "unknown",
      "units": "kg/kg",
      "shape": [
        "lev"
      ],
      "description": "Maximum ice mixing ratio before aggregation to snow, roqimax/rho (HDC 13; WSM6 qimax)."
    },
    "psaut": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "Aggregation of cloud ice to snow, max(0, (q_i - q_imax)/dtcld) below 0 C (HDC 12): an adjustment written as a rate (WSM6 psaut, no further limiter)."
    },
    "pgaut": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "Aggregation of snow to graupel below 0 C, 1e-3 exp(-0.09 (T0 - T)) max(0, qs - qs0) (LFO 37, HL A4), unlimited."
    },
    "pgaut_lim": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "pgaut after the limiter min(pgaut, qs/dtcld)."
    },
    "psevp": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "Evaporation of melting snow above 0 C where subsaturated over water (HL A35, RH83 A27), n0s(T)/n0s (rh_w - 1)(precs1 lambda_s^-2 + precs2 f_v coeres_s)/F_w (negative), unlimited."
    },
    "psevp_lim": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "psevp after the limiter min(max(psevp, -qs/dtcld), 0)."
    },
    "pgevp": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "Evaporation of melting graupel above 0 C where subsaturated over water (HL A25, RH84 A19), unlimited."
    },
    "pgevp_lim": {
      "type": "unknown",
      "units": "kg/kg/s",
      "shape": [
        "lev"
      ],
      "description": "pgevp after the limiter min(max(pgevp, -qg/dtcld), 0)."
    }
  },
  "equations": [
    {
      "lhs": "qv",
      "rhs": {
        "op": "input_qv",
        "args": []
      }
    },
    {
      "lhs": "qsat_w",
      "rhs": {
        "op": "input_qsat_w",
        "args": []
      }
    },
    {
      "lhs": "rh_w",
      "rhs": {
        "op": "input_rh_w",
        "args": []
      }
    },
    {
      "lhs": "qsat_i",
      "rhs": {
        "op": "input_qsat_i",
        "args": []
      }
    },
    {
      "lhs": "rh_i",
      "rhs": {
        "op": "input_rh_i",
        "args": []
      }
    },
    {
      "lhs": "xl",
      "rhs": {
        "op": "input_xl",
        "args": []
      }
    },
    {
      "lhs": "prevp",
      "rhs": {
        "op": "input_prevp",
        "args": []
      }
    },
    {
      "lhs": "roqimax",
      "rhs": {
        "op": "*",
        "args": [
          "par.roqimax_coef",
          {
            "op": "^",
            "args": [
              "par.dimax",
              "par.roqimax_exp"
            ]
          }
        ]
      }
    },
    {
      "lhs": "supcol",
      "rhs": {
        "op": "-",
        "args": [
          "wrf.svpt0",
          "sd.T"
        ]
      }
    },
    {
      "lhs": "supsat",
      "rhs": {
        "op": "-",
        "args": [
          {
            "op": "max",
            "args": [
              "qv",
              "par.qmin"
            ]
          },
          "qsat_i"
        ]
      }
    },
    {
      "lhs": "satdt",
      "rhs": {
        "op": "/",
        "args": [
          "supsat",
          "dtcld"
        ]
      }
    },
    {
      "lhs": "f_diff_w",
      "rhs": {
        "op": "apply_expression_template",
        "args": [],
        "name": "diffusional_growth_denominator",
        "bindings": {
          "L": "xl",
          "T": "sd.T",
          "rho": "sd.rho",
          "ka": "sd.ka",
          "r_v": "wrf.r_v",
          "qsat": "qsat_w",
          "Dv": "sd.Dv"
        }
      }
    },
    {
      "lhs": "f_diff_i",
      "rhs": {
        "op": "apply_expression_template",
        "args": [],
        "name": "diffusional_growth_denominator",
        "bindings": {
          "L": "wrf.xls",
          "T": "sd.T",
          "rho": "sd.rho",
          "ka": "sd.ka",
          "r_v": "wrf.r_v",
          "qsat": "qsat_i",
          "Dv": "sd.Dv"
        }
      }
    },
    {
      "lhs": "pidep",
      "rhs": {
        "op": "ifelse",
        "args": [
          {
            "op": "and",
            "args": [
              {
                "op": ">",
                "args": [
                  "supcol",
                  0
                ]
              },
              {
                "op": ">",
                "args": [
                  "sd.qi",
                  0
                ]
              }
            ]
          },
          {
            "op": "apply_expression_template",
            "args": [],
            "name": "ice_deposition_rate",
            "bindings": {
              "D": "sd.D_i",
              "xni": "sd.xni",
              "rh_i": "rh_i",
              "f_diff_i": "f_diff_i"
            }
          },
          0
        ]
      }
    },
    {
      "lhs": "supice_i",
      "rhs": {
        "op": "-",
        "args": [
          "satdt",
          "prevp"
        ]
      }
    },
    {
      "lhs": "pidep_lim",
      "rhs": {
        "op": "ifelse",
        "args": [
          {
            "op": "and",
            "args": [
              {
                "op": ">",
                "args": [
                  "supcol",
                  0
                ]
              },
              {
                "op": ">",
                "args": [
                  "sd.qi",
                  0
                ]
              }
            ]
          },
          {
            "op": "apply_expression_template",
            "args": [],
            "name": "saturation_limited_deposition",
            "bindings": {
              "rate": "pidep",
              "satdt": "satdt",
              "supice": "supice_i",
              "q": "sd.qi",
              "dt": "dtcld"
            }
          },
          0
        ]
      }
    },
    {
      "lhs": "ifsat_i",
      "rhs": {
        "op": "ifelse",
        "args": [
          {
            "op": "and",
            "args": [
              {
                "op": ">",
                "args": [
                  "supcol",
                  0
                ]
              },
              {
                "op": ">",
                "args": [
                  "sd.qi",
                  0
                ]
              },
              {
                "op": ">=",
                "args": [
                  {
                    "op": "abs",
                    "args": [
                      {
                        "op": "+",
                        "args": [
                          "prevp",
                          "pidep_lim"
                        ]
                      }
                    ]
                  },
                  {
                    "op": "abs",
                    "args": [
                      "satdt"
                    ]
                  }
                ]
              }
            ]
          },
          {
            "op": "const",
            "args": [],
            "value": 1,
            "units": "1"
          },
          {
            "op": "const",
            "args": [],
            "value": 0,
            "units": "1"
          }
        ]
      }
    },
    {
      "lhs": "psdep",
      "rhs": {
        "op": "ifelse",
        "args": [
          {
            "op": "and",
            "args": [
              {
                "op": ">",
                "args": [
                  "supcol",
                  0
                ]
              },
              {
                "op": ">",
                "args": [
                  "sd.qs",
                  0
                ]
              }
            ]
          },
          {
            "op": "*",
            "args": [
              "sd.n0sfac",
              {
                "op": "apply_expression_template",
                "args": [],
                "name": "ventilated_diffusional_growth",
                "bindings": {
                  "rh": "rh_i",
                  "rslope2": "sd.rslope2_s",
                  "coeres": "sd.coeres_s",
                  "f_vent": "sd.f_vent",
                  "f_diff": "f_diff_i",
                  "c1": "sd.precs1",
                  "c2": "sd.precs2"
                }
              }
            ]
          },
          0
        ]
      }
    },
    {
      "lhs": "supice_s",
      "rhs": {
        "op": "-",
        "args": [
          "supice_i",
          "pidep_lim"
        ]
      }
    },
    {
      "lhs": "psdep_lim",
      "rhs": {
        "op": "ifelse",
        "args": [
          {
            "op": "and",
            "args": [
              {
                "op": ">",
                "args": [
                  "supcol",
                  0
                ]
              },
              {
                "op": ">",
                "args": [
                  "sd.qs",
                  0
                ]
              },
              {
                "op": "==",
                "args": [
                  "ifsat_i",
                  0
                ]
              }
            ]
          },
          {
            "op": "apply_expression_template",
            "args": [],
            "name": "saturation_limited_deposition",
            "bindings": {
              "rate": "psdep",
              "satdt": "satdt",
              "supice": "supice_s",
              "q": "sd.qs",
              "dt": "dtcld"
            }
          },
          0
        ]
      }
    },
    {
      "lhs": "ifsat_s",
      "rhs": {
        "op": "ifelse",
        "args": [
          {
            "op": "or",
            "args": [
              {
                "op": "==",
                "args": [
                  "ifsat_i",
                  1
                ]
              },
              {
                "op": "and",
                "args": [
                  {
                    "op": ">",
                    "args": [
                      "supcol",
                      0
                    ]
                  },
                  {
                    "op": ">",
                    "args": [
                      "sd.qs",
                      0
                    ]
                  },
                  {
                    "op": ">=",
                    "args": [
                      {
                        "op": "abs",
                        "args": [
                          {
                            "op": "+",
                            "args": [
                              "prevp",
                              "pidep_lim",
                              "psdep_lim"
                            ]
                          }
                        ]
                      },
                      {
                        "op": "abs",
                        "args": [
                          "satdt"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "op": "const",
            "args": [],
            "value": 1,
            "units": "1"
          },
          {
            "op": "const",
            "args": [],
            "value": 0,
            "units": "1"
          }
        ]
      }
    },
    {
      "lhs": "pgdep",
      "rhs": {
        "op": "ifelse",
        "args": [
          {
            "op": "and",
            "args": [
              {
                "op": ">",
                "args": [
                  "supcol",
                  0
                ]
              },
              {
                "op": ">",
                "args": [
                  "sd.qg",
                  0
                ]
              }
            ]
          },
          {
            "op": "apply_expression_template",
            "args": [],
            "name": "ventilated_diffusional_growth",
            "bindings": {
              "rh": "rh_i",
              "rslope2": "sd.rslope2_g",
              "coeres": "sd.coeres_g",
              "f_vent": "sd.f_vent",
              "f_diff": "f_diff_i",
              "c1": "sd.precg1",
              "c2": "sd.precg2"
            }
          },
          0
        ]
      }
    },
    {
      "lhs": "supice_g",
      "rhs": {
        "op": "-",
        "args": [
          "supice_s",
          "psdep_lim"
        ]
      }
    },
    {
      "lhs": "pgdep_lim",
      "rhs": {
        "op": "ifelse",
        "args": [
          {
            "op": "and",
            "args": [
              {
                "op": ">",
                "args": [
                  "supcol",
                  0
                ]
              },
              {
                "op": ">",
                "args": [
                  "sd.qg",
                  0
                ]
              },
              {
                "op": "==",
                "args": [
                  "ifsat_s",
                  0
                ]
              }
            ]
          },
          {
            "op": "apply_expression_template",
            "args": [],
            "name": "saturation_limited_deposition",
            "bindings": {
              "rate": "pgdep",
              "satdt": "satdt",
              "supice": "supice_g",
              "q": "sd.qg",
              "dt": "dtcld"
            }
          },
          0
        ]
      }
    },
    {
      "lhs": "ifsat_g",
      "rhs": {
        "op": "ifelse",
        "args": [
          {
            "op": "or",
            "args": [
              {
                "op": "==",
                "args": [
                  "ifsat_s",
                  1
                ]
              },
              {
                "op": "and",
                "args": [
                  {
                    "op": ">",
                    "args": [
                      "supcol",
                      0
                    ]
                  },
                  {
                    "op": ">",
                    "args": [
                      "sd.qg",
                      0
                    ]
                  },
                  {
                    "op": ">=",
                    "args": [
                      {
                        "op": "abs",
                        "args": [
                          {
                            "op": "+",
                            "args": [
                              "prevp",
                              "pidep_lim",
                              "psdep_lim",
                              "pgdep_lim"
                            ]
                          }
                        ]
                      },
                      {
                        "op": "abs",
                        "args": [
                          "satdt"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "op": "const",
            "args": [],
            "value": 1,
            "units": "1"
          },
          {
            "op": "const",
            "args": [],
            "value": 0,
            "units": "1"
          }
        ]
      }
    },
    {
      "lhs": "supice_n",
      "rhs": {
        "op": "-",
        "args": [
          "supice_g",
          "pgdep_lim"
        ]
      }
    },
    {
      "lhs": "qi_nucleation_target",
      "rhs": {
        "op": "apply_expression_template",
        "args": [],
        "name": "ice_nucleation_target",
        "bindings": {
          "T": "sd.T",
          "t0": "wrf.svpt0",
          "rho": "sd.rho",
          "n_coef": "par.xni0_coef",
          "n_exp": "par.xni0_exp",
          "m_coef": "par.roqi0_coef",
          "m_exp": "par.roqi0_exp"
        }
      }
    },
    {
      "lhs": "pigen",
      "rhs": {
        "op": "ifelse",
        "args": [
          {
            "op": "and",
            "args": [
              {
                "op": ">",
                "args": [
                  "supcol",
                  0
                ]
              },
              {
                "op": ">",
                "args": [
                  "supsat",
                  0
                ]
              }
            ]
          },
          {
            "op": "apply_expression_template",
            "args": [],
            "name": "adjustment_towards_target_rate",
            "bindings": {
              "q_target": "qi_nucleation_target",
              "q": {
                "op": "max",
                "args": [
                  "sd.qi",
                  0
                ]
              },
              "dt": "dtcld"
            }
          },
          0
        ]
      }
    },
    {
      "lhs": "pigen_lim",
      "rhs": {
        "op": "ifelse",
        "args": [
          {
            "op": "and",
            "args": [
              {
                "op": ">",
                "args": [
                  "supcol",
                  0
                ]
              },
              {
                "op": ">",
                "args": [
                  "supsat",
                  0
                ]
              },
              {
                "op": "==",
                "args": [
                  "ifsat_g",
                  0
                ]
              }
            ]
          },
          {
            "op": "min",
            "args": [
              "pigen",
              "satdt",
              "supice_n"
            ]
          },
          0
        ]
      }
    },
    {
      "lhs": "qi_max",
      "rhs": {
        "op": "/",
        "args": [
          "roqimax",
          "sd.rho"
        ]
      }
    },
    {
      "lhs": "psaut",
      "rhs": {
        "op": "ifelse",
        "args": [
          {
            "op": "and",
            "args": [
              {
                "op": ">",
                "args": [
                  "supcol",
                  0
                ]
              },
              {
                "op": ">",
                "args": [
                  "sd.qi",
                  0
                ]
              }
            ]
          },
          {
            "op": "apply_expression_template",
            "args": [],
            "name": "excess_conversion_rate",
            "bindings": {
              "q": "sd.qi",
              "q_max": "qi_max",
              "dt": "dtcld"
            }
          },
          0
        ]
      }
    },
    {
      "lhs": "pgaut",
      "rhs": {
        "op": "ifelse",
        "args": [
          {
            "op": "and",
            "args": [
              {
                "op": ">",
                "args": [
                  "supcol",
                  0
                ]
              },
              {
                "op": ">",
                "args": [
                  "sd.qs",
                  0
                ]
              }
            ]
          },
          {
            "op": "apply_expression_template",
            "args": [],
            "name": "snow_to_graupel_aggregation",
            "bindings": {
              "qs": "sd.qs",
              "qs0": "par.qs0",
              "T": "sd.T",
              "t0": "wrf.svpt0",
              "coef": "par.pgaut_coef",
              "expn": "par.pgaut_exp"
            }
          },
          0
        ]
      }
    },
    {
      "lhs": "pgaut_lim",
      "rhs": {
        "op": "apply_expression_template",
        "args": [],
        "name": "sink_rate_limiter",
        "bindings": {
          "rate": "pgaut",
          "q": "sd.qs",
          "dt": "dtcld"
        }
      }
    },
    {
      "lhs": "psevp",
      "rhs": {
        "op": "ifelse",
        "args": [
          {
            "op": "and",
            "args": [
              {
                "op": "<",
                "args": [
                  "supcol",
                  0
                ]
              },
              {
                "op": ">",
                "args": [
                  "sd.qs",
                  0
                ]
              },
              {
                "op": "<",
                "args": [
                  "rh_w",
                  1
                ]
              }
            ]
          },
          {
            "op": "*",
            "args": [
              "sd.n0sfac",
              {
                "op": "apply_expression_template",
                "args": [],
                "name": "ventilated_diffusional_growth",
                "bindings": {
                  "rh": "rh_w",
                  "rslope2": "sd.rslope2_s",
                  "coeres": "sd.coeres_s",
                  "f_vent": "sd.f_vent",
                  "f_diff": "f_diff_w",
                  "c1": "sd.precs1",
                  "c2": "sd.precs2"
                }
              }
            ]
          },
          0
        ]
      }
    },
    {
      "lhs": "psevp_lim",
      "rhs": {
        "op": "apply_expression_template",
        "args": [],
        "name": "negative_sink_limiter",
        "bindings": {
          "rate": "psevp",
          "q": "sd.qs",
          "dt": "dtcld"
        }
      }
    },
    {
      "lhs": "pgevp",
      "rhs": {
        "op": "ifelse",
        "args": [
          {
            "op": "and",
            "args": [
              {
                "op": "<",
                "args": [
                  "supcol",
                  0
                ]
              },
              {
                "op": ">",
                "args": [
                  "sd.qg",
                  0
                ]
              },
              {
                "op": "<",
                "args": [
                  "rh_w",
                  1
                ]
              }
            ]
          },
          {
            "op": "apply_expression_template",
            "args": [],
            "name": "ventilated_diffusional_growth",
            "bindings": {
              "rh": "rh_w",
              "rslope2": "sd.rslope2_g",
              "coeres": "sd.coeres_g",
              "f_vent": "sd.f_vent",
              "f_diff": "f_diff_w",
              "c1": "sd.precg1",
              "c2": "sd.precg2"
            }
          },
          0
        ]
      }
    },
    {
      "lhs": "pgevp_lim",
      "rhs": {
        "op": "apply_expression_template",
        "args": [],
        "name": "negative_sink_limiter",
        "bindings": {
          "rate": "pgevp",
          "q": "sd.qg",
          "dt": "dtcld"
        }
      }
    }
  ],
  "tests": [
    {
      "id": "qss_step250_row23_col24_mixed_phase_deposition",
      "description": "Reference: WRF 4.8 em_quarter_ss idealized supercell (GNU real32 build, dx = 2 km, dt = 12 s, 40 layers, WSM6 only) dumped by the instrumented ctessum-claude/WRF fork (module_esm_dump with esm_dump_inner hooks inside mp_wsm6_run of the ctessum-claude/MMM-physics fork, commit 52cfbd7) and replayed through the real64 (kind_phys = real64) standalone kernels/wsm6_driver at the WRF step. POINTWISE and step-free: the inputs are the state at which the kernel evaluates its process rates (t_rates, q/qi/qr/qs/qg_rates after the sub-step's sedimentation, melting, freezing and slope update; den, p; the start-of-sub-step saturation block qsat_w/rh_w/qsat_i/rh_i/xl, see saturation.esm; and the applied rain evaporation prevp_raw of the warm-rain block), the expected values the rates the kernel dumps right after evaluating them (`<rate>_raw`, after the sequential vapor-budget limiters, before the mass-conservation rescaling) and the mp_wsm6_init coefficients, from the real64 replay. No small-dt replay because WSM6's increments are not rate x dt (EqWeFiC FORTRAN_BUGS.md N3). Real64 replay vs real32 dump: <= 1e-5 relative in these rates (pidep 1.0 relative only in the near-zero threshold layer 33/34 where a branch flips). Residual esm-vs-real64 mismatch from the kernel's default-real literals and real32 WRF constants (EqWeFiC FORTRAN_BUGS.md N2), measured with zero tolerances: pidep 4.8e-8, psdep 1.1e-7, pgdep 0, pgaut 7e-8 of the column maximum; pigen 7.7e-7 because it is the small difference of the nucleation target and the ice content, each carrying the 1e-7 rounding of 4.92e-11, 1.33 and 0.1 (hence rel 5e-6 on its spot checks and Linf 3e-6 of column maximum); psaut up to 1.4e-5 relative on its spot checks because it is the small difference of qi and qimax = roqimax/rho, and roqimax = 2.08e22 dimax^8 carries a 4.3e-7 rounding from the real32 dimax (hence rel 5e-5 on the psaut spot checks; its Linf bound is unaffected). Tolerances otherwise 1e-6 relative on coefficients, absolute Linf bounds on the limited whole columns at 1e-6 of each column's maximum, relative 2e-6 spot checks of the UNLIMITED rates at layers where the dumped rate lies strictly inside every limiter bound (below 0.8 of min(|satdt/2|, |supice|, q/dtcld)). Regime: supercell step 250 (t = 50 min), row j = 23, column i = 24: freezing level at layer 9; ice 9-39, snow 6-33, graupel 1-33; supersaturated over ice (satdt > 0) in layers 3-29, subsaturated above, so pidep/psdep/pgdep change sign near layer 30 and sublimate above; nucleation active 9-29, ice-to-snow aggregation 21-24 (where qi > qimax), snow-to-graupel aggregation 16-28; the vapor budget never closes (ifsat = 0 everywhere); above 0 C the column is saturated over water, so psevp = pgevp = 0.",
      "parameter_overrides": {
        "dtcld": 12.0
      },
      "expression_template_imports": [
        {
          "ref": "./tests/qss_step250_row23_col24_mixed_phase_deposition_inputs.esm"
        }
      ],
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "roqimax",
          "time": 0.0,
          "expected": 8.125003470069448e-05,
          "tolerance": {
            "rel": 1e-06
          }
        },
        {
          "variable": "f_diff_w",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    8026923.628296606,
                    8724937.277866924,
                    8862682.386295747,
                    8840272.999362536,
                    8896180.11765483,
                    9029443.909470104,
                    9205681.067335943,
                    9435431.52079011,
                    9739340.73215329,
                    10166408.14029887,
                    10686235.875643294,
                    11686565.685692739,
                    12306627.362419438,
                    12357103.654849898,
                    13752494.88233852,
                    15577013.497022197,
                    17987442.01666145,
                    21417462.378376856,
                    26307490.85644968,
                    33299710.65183302,
                    43937031.56645844,
                    59202770.64996356,
                    79919954.785101,
                    115186361.15481491,
                    173031421.44883773,
                    267062083.79733422,
                    409256740.2904048,
                    591973896.5522459,
                    518819066.56359154,
                    135112867.36483318,
                    76686559.57602045,
                    49289149.418583125,
                    33082964.099474166,
                    24305543.16126555,
                    19468250.79815123,
                    16628945.578797702,
                    14734741.231603855,
                    13245944.358569387,
                    11909106.520231215,
                    10719542.821695829
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 1000.0,
            "rel": 0.0
          }
        },
        {
          "variable": "f_diff_i",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    10275300.088215007,
                    10925345.474037053,
                    10975329.369210271,
                    10860717.881558683,
                    10831196.067758035,
                    10884288.053027276,
                    10983383.828876572,
                    11139098.526182823,
                    11433819.018711753,
                    11954994.240828032,
                    12617401.959911112,
                    13910629.828729544,
                    14795867.14185319,
                    14967900.595213952,
                    16942632.69206691,
                    19608694.995676655,
                    23242128.59263491,
                    28564152.597323656,
                    36399313.91016357,
                    47995768.679111466,
                    66270435.72542983,
                    93543351.66386664,
                    132013593.75132234,
                    199825581.18014842,
                    315606213.15879345,
                    511846729.282323,
                    821335154.6633476,
                    1235601623.4535604,
                    1083582645.0307744,
                    255791219.8953991,
                    139575157.61136842,
                    87042762.7929738,
                    56823012.45866942,
                    40938663.8856523,
                    32446647.0178245,
                    27623783.433471188,
                    24505548.894618,
                    22097956.278372586,
                    19935115.44557102,
                    18012802.17324353
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 2500.0,
            "rel": 0.0
          }
        },
        {
          "variable": "sd.f_vent",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    215.66746749988326,
                    214.99770293889614,
                    212.99754010605017,
                    210.71883066670142,
                    208.55202995290898,
                    206.47645846783593,
                    204.43375007890464,
                    202.4288932846614,
                    200.47333917478738,
                    198.59808883035583,
                    196.73813657764694,
                    195.0666605339713,
                    192.95448778712415,
                    190.87965610040038,
                    189.33757212213962,
                    187.81505562441393,
                    186.35779808079897,
                    185.01291560347877,
                    183.76476594533966,
                    182.5988136845486,
                    181.52434655680216,
                    180.49965470159694,
                    179.47912823632174,
                    178.63969031128053,
                    177.89162032668648,
                    177.16837338433513,
                    176.34192828880916,
                    175.21225631432188,
                    172.1169989746095,
                    164.42380794185368,
                    159.77840085288665,
                    155.65967372473284,
                    151.74328181824455,
                    148.20338511239007,
                    145.01879197500634,
                    142.09679500102663,
                    139.32346863356622,
                    136.60782183194635,
                    133.89246707329647,
                    131.1778088005834
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 0.0003,
            "rel": 0.0
          }
        },
        {
          "variable": "pidep_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    1.1930109236815955e-08,
                    2.28574139862502e-08,
                    3.461378064729597e-08,
                    5.9243107839179676e-08,
                    1.1625612487355555e-07,
                    1.4467709750730005e-07,
                    2.517412971619394e-07,
                    3.966163449305895e-07,
                    5.585125965378093e-07,
                    7.758725566681301e-07,
                    1.0280163877903762e-06,
                    1.6244525825820097e-06,
                    3.072902399896806e-06,
                    1.5890028389893405e-06,
                    5.941313780669165e-07,
                    2.3581414599175201e-07,
                    8.727633839513325e-08,
                    6.58350383836281e-08,
                    2.040824717897305e-08,
                    6.628514960812435e-09,
                    2.7164161737183354e-09,
                    -4.3203071677696023e-10,
                    -8.834599612475459e-11,
                    -8.397110218947372e-12,
                    0.0,
                    -1.4823807253158012e-19,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 3e-12,
            "rel": 0.0
          }
        },
        {
          "variable": "psdep_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    1.755678587109673e-09,
                    3.735882011396122e-09,
                    7.117128815645085e-09,
                    2.2613595200731562e-08,
                    3.446293624650492e-07,
                    6.843733874339553e-07,
                    1.373276575634138e-06,
                    2.1339844099655616e-06,
                    2.7816149498985254e-06,
                    3.3743665700511196e-06,
                    3.8020555619086673e-06,
                    3.919757449844434e-06,
                    4.1950496218075595e-06,
                    3.2597723457243653e-06,
                    1.6999558970964606e-06,
                    8.955760362645541e-07,
                    4.3740060541277166e-07,
                    4.857048356104619e-07,
                    2.0015128520247442e-07,
                    8.886016283451657e-08,
                    3.779011309630713e-08,
                    -6.737549327650434e-09,
                    -6.669918092829754e-10,
                    -1.2033346200557298e-10,
                    -3.763661917321538e-22,
                    -1.0507307505923628e-21,
                    -1.9145302469227045e-25,
                    -3.1117608873105738e-37,
                    -2.0074301150685167e-41,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 4e-12,
            "rel": 0.0
          }
        },
        {
          "variable": "pgdep_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    1.0678130474100017e-08,
                    3.081146272066622e-08,
                    1.0545110340457697e-07,
                    6.326536575449655e-07,
                    2.571348592447746e-06,
                    3.1802964637781364e-06,
                    3.7364932384168867e-06,
                    3.8118154657801654e-06,
                    3.4434299881515366e-06,
                    3.0666245692528678e-06,
                    2.6060696110904774e-06,
                    2.0754360218886724e-06,
                    1.647710895375247e-06,
                    9.500709216129087e-07,
                    3.8285602094948565e-07,
                    1.5554451067447527e-07,
                    5.911061528582378e-08,
                    5.0916791404734055e-08,
                    1.758157905699995e-08,
                    6.095291718008026e-09,
                    2.1731230790799863e-09,
                    -4.958224155700323e-10,
                    -8.068738472086677e-11,
                    -4.8916617550217896e-11,
                    0.0,
                    -3.057826162715589e-19,
                    -3.776939419483038e-19,
                    -4.325646254174921e-34,
                    -5.856839477265805e-31,
                    -6.9655767419632415e-40,
                    -3.1712645416288503e-40,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 4e-12,
            "rel": 0.0
          }
        },
        {
          "variable": "pigen_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    3.675872821832641e-08,
                    4.044940219873888e-08,
                    7.783234129077986e-08,
                    1.4291096975649348e-07,
                    1.5891116211012256e-07,
                    1.746734063826214e-07,
                    2.9771778639235446e-07,
                    4.879118102246498e-07,
                    8.775100903073286e-07,
                    1.6237891324243953e-06,
                    3.182157112198267e-06,
                    3.6085823646727695e-06,
                    0.0,
                    1.1075165437634007e-05,
                    4.265527544988627e-06,
                    1.62583639310369e-06,
                    5.72963814775361e-07,
                    4.5320188980181545e-07,
                    1.6216145896650142e-07,
                    7.613635615569611e-08,
                    8.976926573322458e-08,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 3e-11,
            "rel": 0.0
          }
        },
        {
          "variable": "psaut",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    1.5161369974584578e-05,
                    8.50396274058469e-06,
                    3.6869346725521425e-06,
                    6.415887136701758e-07,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 2e-11,
            "rel": 0.0
          }
        },
        {
          "variable": "pgaut_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    1.09061364132696e-08,
                    3.089716151870192e-08,
                    3.7688765116362814e-08,
                    3.589556898722078e-08,
                    2.9818893120149764e-08,
                    2.587290519185709e-08,
                    2.1311543822324992e-08,
                    1.6405650714204293e-08,
                    1.1587227453693448e-08,
                    7.663245871338603e-09,
                    4.956533882349148e-09,
                    3.0002876940791353e-09,
                    1.264638818671403e-09,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 4e-14,
            "rel": 0.0
          }
        },
        {
          "variable": "psevp_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 0,
            "rel": 0.0
          }
        },
        {
          "variable": "pgevp_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 0,
            "rel": 0.0
          }
        },
        {
          "variable": "ifsat_i",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    -0.0,
                    -0.0,
                    -0.0,
                    0.0,
                    -0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 0,
            "rel": 0.0
          }
        },
        {
          "variable": "ifsat_g",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    -0.0,
                    -0.0,
                    -0.0,
                    0.0,
                    -0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 0,
            "rel": 0.0
          }
        },
        {
          "variable": "pidep",
          "time": 0.0,
          "coords": {
            "lev": 9
          },
          "expected": 1.1930109236815955e-08,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pidep",
          "time": 0.0,
          "coords": {
            "lev": 16
          },
          "expected": 3.966163449305895e-07,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pidep",
          "time": 0.0,
          "coords": {
            "lev": 24
          },
          "expected": 2.3581414599175201e-07,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pidep",
          "time": 0.0,
          "coords": {
            "lev": 31
          },
          "expected": -8.834599612475459e-11,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "psdep",
          "time": 0.0,
          "coords": {
            "lev": 9
          },
          "expected": 1.755678587109673e-09,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "psdep",
          "time": 0.0,
          "coords": {
            "lev": 16
          },
          "expected": 2.1339844099655616e-06,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "psdep",
          "time": 0.0,
          "coords": {
            "lev": 24
          },
          "expected": 8.955760362645541e-07,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "psdep",
          "time": 0.0,
          "coords": {
            "lev": 30
          },
          "expected": -6.737549327650434e-09,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pgdep",
          "time": 0.0,
          "coords": {
            "lev": 9
          },
          "expected": 1.0678130474100017e-08,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pgdep",
          "time": 0.0,
          "coords": {
            "lev": 16
          },
          "expected": 3.8118154657801654e-06,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pgdep",
          "time": 0.0,
          "coords": {
            "lev": 24
          },
          "expected": 1.5554451067447527e-07,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pgdep",
          "time": 0.0,
          "coords": {
            "lev": 32
          },
          "expected": -4.8916617550217896e-11,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pigen",
          "time": 0.0,
          "coords": {
            "lev": 9
          },
          "expected": 3.675872821832641e-08,
          "tolerance": {
            "rel": 5e-06
          }
        },
        {
          "variable": "pigen",
          "time": 0.0,
          "coords": {
            "lev": 14
          },
          "expected": 1.746734063826214e-07,
          "tolerance": {
            "rel": 5e-06
          }
        },
        {
          "variable": "pigen",
          "time": 0.0,
          "coords": {
            "lev": 20
          },
          "expected": 3.6085823646727695e-06,
          "tolerance": {
            "rel": 5e-06
          }
        },
        {
          "variable": "psaut",
          "time": 0.0,
          "coords": {
            "lev": 21
          },
          "expected": 1.5161369974584578e-05,
          "tolerance": {
            "rel": 5e-05
          }
        },
        {
          "variable": "psaut",
          "time": 0.0,
          "coords": {
            "lev": 22
          },
          "expected": 8.50396274058469e-06,
          "tolerance": {
            "rel": 5e-05
          }
        },
        {
          "variable": "psaut",
          "time": 0.0,
          "coords": {
            "lev": 23
          },
          "expected": 3.6869346725521425e-06,
          "tolerance": {
            "rel": 5e-05
          }
        },
        {
          "variable": "psaut",
          "time": 0.0,
          "coords": {
            "lev": 24
          },
          "expected": 6.415887136701758e-07,
          "tolerance": {
            "rel": 5e-05
          }
        },
        {
          "variable": "pgaut",
          "time": 0.0,
          "coords": {
            "lev": 16
          },
          "expected": 1.09061364132696e-08,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pgaut",
          "time": 0.0,
          "coords": {
            "lev": 22
          },
          "expected": 2.1311543822324992e-08,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pgaut",
          "time": 0.0,
          "coords": {
            "lev": 28
          },
          "expected": 1.264638818671403e-09,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pidep",
          "time": 0.0,
          "coords": {
            "lev": 1
          },
          "expected": 0.0,
          "tolerance": {
            "abs": 0,
            "rel": 0.0
          }
        },
        {
          "variable": "pidep",
          "time": 0.0,
          "coords": {
            "lev": 8
          },
          "expected": 0.0,
          "tolerance": {
            "abs": 0,
            "rel": 0.0
          }
        }
      ]
    },
    {
      "id": "qss_step250_row22_col25_mixed_phase_deposition",
      "description": "Same reference chain and tolerance reasoning as qss_step250_row23_col24_mixed_phase_deposition, tile row j = 22 (call 9982), column i = 25: the strongest nucleation column of the run (pigen 21 layers, up to 1.3e-5 kg/kg/s) with ice-to-snow aggregation in layers 21-24 and snow-to-graupel aggregation 15-29; the vapor budget never closes. Measured residuals: pidep 4.8e-8, psdep 1.1e-7, pigen 7.2e-7, pgaut 6.9e-8 of column maximum.",
      "parameter_overrides": {
        "dtcld": 12.0
      },
      "expression_template_imports": [
        {
          "ref": "./tests/qss_step250_row22_col25_mixed_phase_deposition_inputs.esm"
        }
      ],
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "pidep_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    1.6493773174614253e-08,
                    3.845179246453918e-08,
                    5.8827354209818195e-08,
                    9.188355726593647e-08,
                    1.6157697136683683e-07,
                    1.946305503867547e-07,
                    3.021625396282328e-07,
                    4.580197183705498e-07,
                    6.186234218040911e-07,
                    8.394685733347795e-07,
                    1.0761749514399841e-06,
                    1.8590897029201696e-06,
                    3.855865152597546e-06,
                    2.130372090118657e-06,
                    8.665052441810188e-07,
                    3.433172313763905e-07,
                    1.0840251640466675e-07,
                    1.1510576304557073e-07,
                    3.831332692396314e-08,
                    1.1394048998877825e-08,
                    4.462887022936078e-09,
                    1.6036610441218115e-09,
                    -1.029766109102279e-09,
                    -1.416469997765122e-13,
                    -9.195682806413483e-13,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 4e-12,
            "rel": 0.0
          }
        },
        {
          "variable": "psdep_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    1.7856865456177923e-09,
                    5.172892481224201e-09,
                    1.778260090468922e-08,
                    6.71735184713936e-08,
                    4.600923326569122e-07,
                    1.1727458430062028e-06,
                    2.0896469957598904e-06,
                    3.077225809931299e-06,
                    3.7807747913760886e-06,
                    4.411648477096971e-06,
                    4.934835733249843e-06,
                    5.091016546037744e-06,
                    5.541900715047055e-06,
                    4.712237424544724e-06,
                    2.8484205511845124e-06,
                    1.4619356983045001e-06,
                    5.715670372929771e-07,
                    8.515614084367974e-07,
                    3.310247572736137e-07,
                    1.2741514505950846e-07,
                    7.5371526939796e-08,
                    2.3104178781074813e-08,
                    -5.933451922878888e-10,
                    -1.1641427245861862e-12,
                    -4.069704967439004e-13,
                    -7.601494558946204e-28,
                    -5.663581293312802e-44,
                    -3.1871727824450978e-40,
                    -6.17019599681657e-39,
                    -4.882731079042204e-41,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 6e-12,
            "rel": 0.0
          }
        },
        {
          "variable": "pgdep_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    9.262541189723276e-09,
                    2.9552161398396094e-08,
                    1.3252276665618462e-07,
                    7.393563462597988e-07,
                    2.6434692627388565e-06,
                    3.059752677683444e-06,
                    3.4923798294312543e-06,
                    3.6994914044160474e-06,
                    3.3790644197543783e-06,
                    3.084891099639566e-06,
                    2.729860887579166e-06,
                    2.2841099325965732e-06,
                    1.945990360430003e-06,
                    1.2819945323643767e-06,
                    6.217253804183859e-07,
                    2.544141413047798e-07,
                    8.0085569691661e-08,
                    1.0010636178076797e-07,
                    3.5906293204571005e-08,
                    1.1324055851623312e-08,
                    4.082763352621579e-09,
                    1.5448899184044272e-09,
                    -5.594436015638971e-11,
                    -6.258241935509158e-11,
                    -3.3363997553216528e-12,
                    0.0,
                    -2.2234442536131104e-19,
                    0.0,
                    -1.9544399925406294e-32,
                    -4.307678856818064e-30,
                    -1.0731182595135048e-30,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 4e-12,
            "rel": 0.0
          }
        },
        {
          "variable": "pigen_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    3.867038938375611e-08,
                    2.8671580754551563e-08,
                    6.340322601766163e-08,
                    1.3991395378834387e-07,
                    1.6618179809350562e-07,
                    2.002141922177924e-07,
                    3.888272698766411e-07,
                    6.811661633117547e-07,
                    1.2059446778397685e-06,
                    2.0896401084877653e-06,
                    3.957651349393301e-06,
                    3.4308198118412306e-06,
                    0.0,
                    1.258271048968263e-05,
                    5.61478316437404e-06,
                    2.028719784258172e-06,
                    5.515008920558329e-07,
                    6.363492836104587e-07,
                    2.568051371450796e-07,
                    1.0469704020900734e-07,
                    7.344246657654804e-08,
                    1.4055086134432898e-07,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 4e-11,
            "rel": 0.0
          }
        },
        {
          "variable": "psaut",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    2.101193443491071e-05,
                    1.1808198952406024e-05,
                    4.11489172060814e-06,
                    1.5540986876314549e-06,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 3e-11,
            "rel": 0.0
          }
        },
        {
          "variable": "pgaut_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    1.5453935888636158e-08,
                    4.7701072753719544e-08,
                    5.887865995105126e-08,
                    5.986815799703023e-08,
                    5.4598147905640183e-08,
                    4.49960771401692e-08,
                    3.8243070091954045e-08,
                    3.139961956395399e-08,
                    2.4889600442468976e-08,
                    1.8187155178967195e-08,
                    1.2164584704715027e-08,
                    7.941906946366242e-09,
                    4.764353380552319e-09,
                    2.2523647000335427e-09,
                    3.968086158413469e-10,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 6e-14,
            "rel": 0.0
          }
        },
        {
          "variable": "ifsat_g",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    -0.0,
                    -0.0,
                    -0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 0,
            "rel": 0.0
          }
        },
        {
          "variable": "pidep",
          "time": 0.0,
          "coords": {
            "lev": 9
          },
          "expected": 1.6493773174614253e-08,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pidep",
          "time": 0.0,
          "coords": {
            "lev": 20
          },
          "expected": 1.8590897029201696e-06,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pidep",
          "time": 0.0,
          "coords": {
            "lev": 31
          },
          "expected": -1.029766109102279e-09,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "psdep",
          "time": 0.0,
          "coords": {
            "lev": 9
          },
          "expected": 1.7856865456177923e-09,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "psdep",
          "time": 0.0,
          "coords": {
            "lev": 20
          },
          "expected": 5.091016546037744e-06,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "psdep",
          "time": 0.0,
          "coords": {
            "lev": 31
          },
          "expected": -5.933451922878888e-10,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pgdep",
          "time": 0.0,
          "coords": {
            "lev": 9
          },
          "expected": 9.262541189723276e-09,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pgdep",
          "time": 0.0,
          "coords": {
            "lev": 20
          },
          "expected": 2.2841099325965732e-06,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pgdep",
          "time": 0.0,
          "coords": {
            "lev": 32
          },
          "expected": -6.258241935509158e-11,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pigen",
          "time": 0.0,
          "coords": {
            "lev": 9
          },
          "expected": 3.867038938375611e-08,
          "tolerance": {
            "rel": 5e-06
          }
        },
        {
          "variable": "pigen",
          "time": 0.0,
          "coords": {
            "lev": 15
          },
          "expected": 3.888272698766411e-07,
          "tolerance": {
            "rel": 5e-06
          }
        },
        {
          "variable": "pigen",
          "time": 0.0,
          "coords": {
            "lev": 20
          },
          "expected": 3.4308198118412306e-06,
          "tolerance": {
            "rel": 5e-06
          }
        },
        {
          "variable": "psaut",
          "time": 0.0,
          "coords": {
            "lev": 21
          },
          "expected": 2.101193443491071e-05,
          "tolerance": {
            "rel": 5e-05
          }
        },
        {
          "variable": "psaut",
          "time": 0.0,
          "coords": {
            "lev": 24
          },
          "expected": 1.5540986876314549e-06,
          "tolerance": {
            "rel": 5e-05
          }
        },
        {
          "variable": "pgaut",
          "time": 0.0,
          "coords": {
            "lev": 15
          },
          "expected": 1.5453935888636158e-08,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pgaut",
          "time": 0.0,
          "coords": {
            "lev": 22
          },
          "expected": 3.139961956395399e-08,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pgaut",
          "time": 0.0,
          "coords": {
            "lev": 29
          },
          "expected": 3.968086158413469e-10,
          "tolerance": {
            "rel": 2e-06
          }
        }
      ]
    },
    {
      "id": "qss_step200_row20_col20_evaporating_melting_precipitation",
      "description": "Same reference chain and tolerance reasoning, early storm: step 200 (t = 40 min), row j = 20 (call 7980), column i = 20. Layer 8 lies just above 0 C and is subsaturated over water (rh_w < 1) while holding melting snow and graupel, so the evaporation of melting precipitation is active there: psevp = -3.0e-11 and pgevp = -5.3e-9 kg/kg/s, both unlimited; the deposition terms are weak (pgdep up to 1.1e-7) and there is no nucleation or aggregation. Measured residuals: pidep 3.2e-8, psdep 5.4e-8, pgdep/psevp/pgevp 0 of column maximum.",
      "parameter_overrides": {
        "dtcld": 12.0
      },
      "expression_template_imports": [
        {
          "ref": "./tests/qss_step200_row20_col20_evaporating_melting_precipitation_inputs.esm"
        }
      ],
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "psevp_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    -2.955285967961742e-11,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 3e-17,
            "rel": 0.0
          }
        },
        {
          "variable": "pgevp_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    -5.264681984078256e-09,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 5e-15,
            "rel": 0.0
          }
        },
        {
          "variable": "psevp",
          "time": 0.0,
          "coords": {
            "lev": 8
          },
          "expected": -2.955285967961742e-11,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pgevp",
          "time": 0.0,
          "coords": {
            "lev": 8
          },
          "expected": -5.264681984078256e-09,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pidep_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    -3.652312484120788e-23,
                    -5.6471709859772455e-12,
                    -1.4846270752723e-11,
                    -9.726800246986012e-11,
                    -2.1259203978487095e-10,
                    -5.945821586575083e-11,
                    -2.840871461878142e-11,
                    -1.019788564291706e-11,
                    -3.3911804235707477e-09,
                    -4.9489733190087295e-09,
                    -2.746583994280339e-09,
                    -4.8150451861957185e-12,
                    -1.2203746357076503e-12,
                    -3.9870610120190206e-14,
                    -1.1828778144647048e-14,
                    -2.237295084260541e-15,
                    -2.623674033103585e-13,
                    -3.2689108441837117e-11,
                    -8.672884325434198e-12,
                    -6.496175816079268e-22,
                    -1.2649338050932174e-20,
                    -1.8216359194136064e-23,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 5e-15,
            "rel": 0.0
          }
        },
        {
          "variable": "psdep_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    -6.231894183732195e-10,
                    -9.598336602855428e-09,
                    -2.1637908924258846e-08,
                    -2.416774008795367e-08,
                    -2.4535546592413834e-08,
                    -2.3007608858053432e-08,
                    -1.369167892833271e-08,
                    -5.395430562784874e-09,
                    -2.6370783656775815e-11,
                    -1.42900940866186e-11,
                    -6.5811570168510065e-12,
                    -2.633323181001309e-13,
                    -1.155154172995072e-13,
                    -2.0981737885424027e-13,
                    -6.2296443523574435e-12,
                    -6.310371861802584e-10,
                    -4.731197266384059e-10,
                    -1.9781867167627602e-10,
                    -2.035047566851892e-12,
                    -2.5969538930893642e-24,
                    -3.5123243369656603e-22,
                    -8.777776277730837e-21,
                    -3.430647839284567e-28,
                    -1.9029633145531016e-42,
                    -4.670994881082723e-46,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 3e-14,
            "rel": 0.0
          }
        },
        {
          "variable": "pgdep_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    -4.454685316197319e-08,
                    -1.0166758478540424e-07,
                    -1.132988458924616e-07,
                    -9.174091131975763e-08,
                    -5.6710854389290556e-08,
                    -3.830602087341023e-08,
                    -1.9920056765966697e-08,
                    -5.227933280658468e-09,
                    -7.724028905704327e-11,
                    -3.844065414202272e-11,
                    -1.931281077481662e-11,
                    -8.813809652558619e-13,
                    -8.936201975628276e-13,
                    -2.3965075264408743e-12,
                    -2.8270162966506064e-12,
                    -1.3625055670896548e-11,
                    -8.168279229245697e-11,
                    -6.066726756688704e-11,
                    -4.239176663360431e-11,
                    -1.902208465180821e-15,
                    -1.2871429692489164e-15,
                    -2.7892643562761234e-16,
                    -5.0031705544893595e-20,
                    -1.2627086146964678e-25,
                    -4.077720108025435e-33,
                    -2.7424111596068832e-40,
                    -2.9590752571659052e-43,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 2e-13,
            "rel": 0.0
          }
        },
        {
          "variable": "pigen_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 0,
            "rel": 0.0
          }
        },
        {
          "variable": "psaut",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 0,
            "rel": 0.0
          }
        },
        {
          "variable": "pgaut_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 0,
            "rel": 0.0
          }
        },
        {
          "variable": "pgdep",
          "time": 0.0,
          "coords": {
            "lev": 9
          },
          "expected": -4.454685316197319e-08,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pgdep",
          "time": 0.0,
          "coords": {
            "lev": 13
          },
          "expected": -5.6710854389290556e-08,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pgdep",
          "time": 0.0,
          "coords": {
            "lev": 17
          },
          "expected": -7.724028905704327e-11,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pgdep",
          "time": 0.0,
          "coords": {
            "lev": 25
          },
          "expected": -8.168279229245697e-11,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "psdep",
          "time": 0.0,
          "coords": {
            "lev": 10
          },
          "expected": -9.598336602855428e-09,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "psdep",
          "time": 0.0,
          "coords": {
            "lev": 14
          },
          "expected": -2.3007608858053432e-08,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "psdep",
          "time": 0.0,
          "coords": {
            "lev": 24
          },
          "expected": -6.310371861802584e-10,
          "tolerance": {
            "rel": 2e-06
          }
        }
      ]
    },
    {
      "id": "scm_call120_thin_cirrus_layers_20_to_59",
      "description": "Reference: WRF 4.8 em_scm_xy single-column run (GNU real32 build, dt = 60 s, 59 layers, mp = 6, sfclay = 1, slab, YSU) at call 120 (step 60, 20:00 UTC), replayed through the real64 kernels/wsm6_driver; WRF layers 20-59 mapped onto lev 1-40 (esm-spec 6.6 tests cannot rebind NLEV, and the only condensate, cloud ice qi <= 5e-5, sits in WRF layers 50-59). Ice-only regime with no precipitation: cloud-ice deposition is active in WRF layers 51-57 (lev 32-38, up to 3.3e-8 kg/kg/s, all unlimited), nucleation in WRF layers 54-55 (lev 35-36, 1.2e-9, LIMITED by the vapor budget: the unlimited adjustment rate is 1e4 times larger, so the applied pigen_lim is what is spot-checked); every snow/graupel process and the aggregations are exactly zero. Same tolerance reasoning as the supercell tests; residuals pidep 3.2e-8, pigen 1.8e-9 of column maximum.",
      "parameter_overrides": {
        "dtcld": 60.0
      },
      "expression_template_imports": [
        {
          "ref": "./tests/scm_call120_thin_cirrus_layers_20_to_59_inputs.esm"
        }
      ],
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "pidep_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    -1.401298464324817e-45,
                    -2.3401684354224445e-43,
                    -5.755553182521321e-41,
                    -1.5469070514411773e-38,
                    -4.55418386078679e-36,
                    -1.4725813482515573e-33,
                    -5.244398519620994e-31,
                    -2.063587584621368e-28,
                    -9.003122380846279e-26,
                    -7.162568187053127e-21,
                    -6.349660720617891e-16,
                    -1.873184798934019e-09,
                    -3.2997212336046964e-08,
                    -2.1763614874464703e-08,
                    -6.772874508937259e-10,
                    6.96354829403848e-11,
                    1.7833772823876315e-11,
                    -6.6606387511655175e-12,
                    -2.7003559888949013e-12,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 3e-14,
            "rel": 0.0
          }
        },
        {
          "variable": "pigen_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    1.2273537477855275e-09,
                    6.070128172977736e-10,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 5e-15,
            "rel": 0.0
          }
        },
        {
          "variable": "psdep_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 0,
            "rel": 0.0
          }
        },
        {
          "variable": "pgdep_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 0,
            "rel": 0.0
          }
        },
        {
          "variable": "psaut",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 0,
            "rel": 0.0
          }
        },
        {
          "variable": "pgaut_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 0,
            "rel": 0.0
          }
        },
        {
          "variable": "psevp_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 0,
            "rel": 0.0
          }
        },
        {
          "variable": "pgevp_lim",
          "time": 0.0,
          "reduce": "Linf_error",
          "expected": 0.0,
          "reference": {
            "op": "faq",
            "output_idx": [
              "k"
            ],
            "args": [],
            "ranges": {
              "k": {
                "from": "lev"
              }
            },
            "expr": {
              "op": "index",
              "args": [
                {
                  "op": "const",
                  "args": [],
                  "value": [
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0,
                    0.0
                  ]
                },
                "k"
              ]
            }
          },
          "tolerance": {
            "abs": 0,
            "rel": 0.0
          }
        },
        {
          "variable": "pidep",
          "time": 0.0,
          "coords": {
            "lev": 32
          },
          "expected": -3.2997212336046964e-08,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pidep",
          "time": 0.0,
          "coords": {
            "lev": 35
          },
          "expected": 6.96354829403848e-11,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pidep",
          "time": 0.0,
          "coords": {
            "lev": 38
          },
          "expected": -2.7003559888949013e-12,
          "tolerance": {
            "rel": 2e-06
          }
        },
        {
          "variable": "pigen_lim",
          "time": 0.0,
          "coords": {
            "lev": 35
          },
          "expected": 1.2273537477855275e-09,
          "tolerance": {
            "rel": 5e-06
          }
        },
        {
          "variable": "pigen_lim",
          "time": 0.0,
          "coords": {
            "lev": 36
          },
          "expected": 6.070128172977736e-10,
          "tolerance": {
            "rel": 5e-06
          }
        }
      ]
    }
  ]
}