WSM6MassConservation
Mass-conservation rescaling of the WSM6 process rates and the state update it feeds, transcribed from the block 'check mass conservation of generation terms and feedback to the large scale' of mp_wsm6_run (phys/physics_mmm/mp_wsm6.F90, WRF 4.8 NCAR/MMM-physics). The process rates of warm_rain.esm, cold_accretion.esm and ice_deposition.esm each carry their OWN limiter (a single process may not drain more than q/dtcld), but nothing stops the SUM of the processes draining one species from overdrawing it within a sub-step; WSM6 therefore walks the five species budgets in the fixed order cloud water, cloud ice, rain, snow, graupel (four in the warm branch: cloud water, rain, snow, graupel) and, whenever the total sink S of a species over one sub-step exceeds the mass v = max(q_floor, q) available, multiplies EVERY rate entering that budget by v/S. The factors are written branch-free as v/max(S, v) (microphysics_templates.esm mass_conservation_factor), which is 1 for a budget that is not overdrawn and for a net source. Because the blocks run in sequence, a rate that appears in several budgets is scaled once per budget, so its final value is the raw rate times the PRODUCT of the factors of the species whose budgets it drains -- praut = praut_raw f_qc f_qr, paacw = paacw_raw f_qc f_qs f_qg, piacr = piacr_raw f_qr f_qs f_qg, and so on -- which is how the cascade is written here, one factor per species instead of one rescaled copy per block. This is a TIME-STEP ARTEFACT of the explicit operator splitting, not physics: every factor depends on dtcld and all of them are 1 in the dtcld -> 0 limit (EqWeFiC FORTRAN_BUGS.md note N3). The same block then applies the rescaled rates to the state ('feedback to the large scale'): the vapor tendency dqv_dt (WSM6 work2), the latent-heating tendency dT_dt (WSM6 -xlwork2/cpm, with the latent heats xl of vaporization, xls of sublimation and xls - xl of fusion), and the updated mixing ratios, each floored at zero. Below 0 C (`cold`) the deposition/ice branch runs and the ice-rain collection products are partitioned between snow and graupel by the switches delta2, delta3 (rain and snow below the threshold par.q_delta = 1e-4 kg/kg send the products to snow); above 0 C only evaporation of melting precipitation, enhanced melting and pgacs act, cloud ice is untouched, and the accreted cloud water goes to rain rather than to the collector. The two branches are blended with the indicator `cold` rather than an ifelse per quantity, so that each updated field is one expression. The latent heats xl and cpm are INPUTS from saturation.esm at the START-of-sub-step state, as WSM6 uses them (EqWeFiC FORTRAN_BUGS.md note N4), while the mixing ratios and temperature are the state at which the rates were evaluated (after the sub-step's sedimentation, melting and freezing). Consumer-supplied inputs: the column fields T, qv, qc, qi, qr, qs, qg, xl, cpm and the 22 raw process rates are REWRITE-TARGET ops `input_<name>` (esm-spec 4.2 open tier) that the consumer lowers -- in the inline tests through a per-test `expression_template_imports` library (tests/<id>_inputs.esm, extracted from kernel dumps of the instrumented WRF fork ctessum-claude/WRF, commit e42a269 (v4.8.0-2-ge42a269e)) because esm-spec 6.6 `parameter_overrides` admit scalars only, and in EqWeFiC couplings/microphysics_column*.esm through the additive `<name>_in` coupling-target parameters. psacw and pgacw are not inputs: only their mixing-ratio-weighted mean paacw enters the budgets and the update. 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.
Description
Mass-conservation rescaling of the WSM6 process rates and the state update it feeds, transcribed from the block ‘check mass conservation of generation terms and feedback to the large scale’ of mp_wsm6_run (phys/physics_mmm/mp_wsm6.F90, WRF 4.8 NCAR/MMM-physics). The process rates of warm_rain.esm, cold_accretion.esm and ice_deposition.esm each carry their OWN limiter (a single process may not drain more than q/dtcld), but nothing stops the SUM of the processes draining one species from overdrawing it within a sub-step; WSM6 therefore walks the five species budgets in the fixed order cloud water, cloud ice, rain, snow, graupel (four in the warm branch: cloud water, rain, snow, graupel) and, whenever the total sink S of a species over one sub-step exceeds the mass v = max(q_floor, q) available, multiplies EVERY rate entering that budget by v/S. The factors are written branch-free as v/max(S, v) (microphysics_templates.esm mass_conservation_factor), which is 1 for a budget that is not overdrawn and for a net source. Because the blocks run in sequence, a rate that appears in several budgets is scaled once per budget, so its final value is the raw rate times the PRODUCT of the factors of the species whose budgets it drains – praut = praut_raw f_qc f_qr, paacw = paacw_raw f_qc f_qs f_qg, piacr = piacr_raw f_qr f_qs f_qg, and so on – which is how the cascade is written here, one factor per species instead of one rescaled copy per block. This is a TIME-STEP ARTEFACT of the explicit operator splitting, not physics: every factor depends on dtcld and all of them are 1 in the dtcld -> 0 limit (EqWeFiC FORTRAN_BUGS.md note N3). The same block then applies the rescaled rates to the state (‘feedback to the large scale’): the vapor tendency dqv_dt (WSM6 work2), the latent-heating tendency dT_dt (WSM6 -xlwork2/cpm, with the latent heats xl of vaporization, xls of sublimation and xls - xl of fusion), and the updated mixing ratios, each floored at zero. Below 0 C (cold) the deposition/ice branch runs and the ice-rain collection products are partitioned between snow and graupel by the switches delta2, delta3 (rain and snow below the threshold par.q_delta = 1e-4 kg/kg send the products to snow); above 0 C only evaporation of melting precipitation, enhanced melting and pgacs act, cloud ice is untouched, and the accreted cloud water goes to rain rather than to the collector. The two branches are blended with the indicator cold rather than an ifelse per quantity, so that each updated field is one expression. The latent heats xl and cpm are INPUTS from saturation.esm at the START-of-sub-step state, as WSM6 uses them (EqWeFiC FORTRAN_BUGS.md note N4), while the mixing ratios and temperature are the state at which the rates were evaluated (after the sub-step’s sedimentation, melting and freezing). Consumer-supplied inputs: the column fields T, qv, qc, qi, qr, qs, qg, xl, cpm and the 22 raw process rates are REWRITE-TARGET ops input_<name> (esm-spec 4.2 open tier) that the consumer lowers – in the inline tests through a per-test expression_template_imports library (tests/parameter_overrides admit scalars only, and in EqWeFiC couplings/microphysics_column*.esm through the additive <name>_in coupling-target parameters. psacw and pgacw are not inputs: only their mixing-ratio-weighted mean paacw enters the budgets and the update. 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., and J.-O. J. Lim (2006). The WRF single-moment 6-class microphysics scheme (WSM6). J. Korean Meteor. Soc. 42, 129-151.
- 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.
- NCAR/MMM-physics mp_wsm6.F90 at commit 550b5b4 (WRF 4.8 phys/physics_mmm submodule).
Parameters
| Name | Units | Default | Description |
|---|---|---|---|
T_in | K | 0.0 | Coupling-target parameter (additive): receives the temperature at which the rates were evaluated from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_T to this name. Unused by the standalone inline tests, which lower input_T to a dumped column profile instead. |
qv_in | kg/kg | 0.0 | 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. |
qc_in | kg/kg | 0.0 | Coupling-target parameter (additive): receives the cloud-water mixing ratio from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_qc to this name. Unused by the standalone inline tests, which lower input_qc to a dumped column profile instead. |
qi_in | kg/kg | 0.0 | Coupling-target parameter (additive): receives the cloud-ice mixing ratio from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_qi to this name. Unused by the standalone inline tests, which lower input_qi to a dumped column profile instead. |
qr_in | kg/kg | 0.0 | Coupling-target parameter (additive): receives the rain mixing ratio from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_qr to this name. Unused by the standalone inline tests, which lower input_qr to a dumped column profile instead. |
qs_in | kg/kg | 0.0 | Coupling-target parameter (additive): receives the snow mixing ratio from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_qs to this name. Unused by the standalone inline tests, which lower input_qs to a dumped column profile instead. |
qg_in | kg/kg | 0.0 | Coupling-target parameter (additive): receives the graupel mixing ratio from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_qg to this name. Unused by the standalone inline tests, which lower input_qg to a dumped column profile instead. |
xl_in | J/kg | 0.0 | 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. |
cpm_in | J/(kg*K) | 0.0 | Coupling-target parameter (additive): receives the start-of-sub-step moist heat capacity from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_cpm to this name. Unused by the standalone inline tests, which lower input_cpm to a dumped column profile instead. |
prevp_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw prevp rate 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. |
praut_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw praut rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_praut to this name. Unused by the standalone inline tests, which lower input_praut to a dumped column profile instead. |
pracw_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw pracw rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_pracw to this name. Unused by the standalone inline tests, which lower input_pracw to a dumped column profile instead. |
paacw_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw paacw rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_paacw to this name. Unused by the standalone inline tests, which lower input_paacw to a dumped column profile instead. |
praci_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw praci rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_praci to this name. Unused by the standalone inline tests, which lower input_praci to a dumped column profile instead. |
piacr_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw piacr rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_piacr to this name. Unused by the standalone inline tests, which lower input_piacr to a dumped column profile instead. |
psaci_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw psaci rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_psaci to this name. Unused by the standalone inline tests, which lower input_psaci to a dumped column profile instead. |
pgaci_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw pgaci rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_pgaci to this name. Unused by the standalone inline tests, which lower input_pgaci to a dumped column profile instead. |
pracs_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw pracs rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_pracs to this name. Unused by the standalone inline tests, which lower input_pracs to a dumped column profile instead. |
psacr_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw psacr rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_psacr to this name. Unused by the standalone inline tests, which lower input_psacr to a dumped column profile instead. |
pgacr_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw pgacr rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_pgacr to this name. Unused by the standalone inline tests, which lower input_pgacr to a dumped column profile instead. |
pgacs_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw pgacs rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_pgacs to this name. Unused by the standalone inline tests, which lower input_pgacs to a dumped column profile instead. |
pseml_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw pseml rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_pseml to this name. Unused by the standalone inline tests, which lower input_pseml to a dumped column profile instead. |
pgeml_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw pgeml rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_pgeml to this name. Unused by the standalone inline tests, which lower input_pgeml to a dumped column profile instead. |
psdep_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw psdep rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_psdep to this name. Unused by the standalone inline tests, which lower input_psdep to a dumped column profile instead. |
pgdep_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw pgdep rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_pgdep to this name. Unused by the standalone inline tests, which lower input_pgdep to a dumped column profile instead. |
pidep_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw pidep rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_pidep to this name. Unused by the standalone inline tests, which lower input_pidep to a dumped column profile instead. |
pigen_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw pigen rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_pigen to this name. Unused by the standalone inline tests, which lower input_pigen to a dumped column profile instead. |
psaut_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw psaut rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_psaut to this name. Unused by the standalone inline tests, which lower input_psaut to a dumped column profile instead. |
pgaut_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw pgaut rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_pgaut to this name. Unused by the standalone inline tests, which lower input_pgaut to a dumped column profile instead. |
psevp_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw psevp rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_psevp to this name. Unused by the standalone inline tests, which lower input_psevp to a dumped column profile instead. |
pgevp_in | kg/kg/s | 0.0 | Coupling-target parameter (additive): receives the raw pgevp rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers input_pgevp to this name. Unused by the standalone inline tests, which lower input_pgevp to a dumped column profile instead. |
dtcld | s | 60.0 | Length of the WSM6 sub-time step; the rescaling and the update are both proportional to it. |
Observed
| Name | Units | Default | Description |
|---|---|---|---|
T | K | Temperature at which the rates were evaluated (WSM6 t after the sub-step’s sedimentation, melting and freezing). | |
qv | kg/kg | Water-vapor mixing ratio (WSM6 q; unchanged by sedimentation, melting and freezing). | |
qc | kg/kg | Cloud-water mixing ratio at the rate-evaluation state. | |
qi | kg/kg | Cloud-ice mixing ratio at the rate-evaluation state. | |
qr | kg/kg | Rain mixing ratio at the rate-evaluation state. | |
qs | kg/kg | Snow mixing ratio at the rate-evaluation state. | |
qg | kg/kg | Graupel mixing ratio at the rate-evaluation state. | |
xl | J/kg | Latent heat of vaporization at the start-of-sub-step temperature (saturation.esm xl). | |
cpm | J/(kg*K) | Moist heat capacity at the start-of-sub-step vapor (saturation.esm cpm). | |
prevp | kg/kg/s | Raw evaporation/condensation of rain (warm_rain.esm prevp_lim). | |
praut | kg/kg/s | Raw autoconversion of cloud water to rain (warm_rain.esm praut_lim). | |
pracw | kg/kg/s | Raw accretion of cloud water by rain (warm_rain.esm pracw_lim). | |
paacw | kg/kg/s | Raw accretion of cloud water by the mean snow/graupel distribution (cold_accretion.esm paacw). | |
praci | kg/kg/s | Raw accretion of cloud ice by rain (cold_accretion.esm praci_lim). | |
piacr | kg/kg/s | Raw accretion of rain by cloud ice (cold_accretion.esm piacr_lim). | |
psaci | kg/kg/s | Raw accretion of cloud ice by snow (cold_accretion.esm psaci_lim). | |
pgaci | kg/kg/s | Raw accretion of cloud ice by graupel (cold_accretion.esm pgaci_lim). | |
pracs | kg/kg/s | Raw accretion of snow by rain (cold_accretion.esm pracs_lim). | |
psacr | kg/kg/s | Raw accretion of rain by snow (cold_accretion.esm psacr_lim). | |
pgacr | kg/kg/s | Raw accretion of rain by graupel (cold_accretion.esm pgacr_lim). | |
pgacs | kg/kg/s | Raw accretion of snow by graupel (cold_accretion.esm pgacs; zero since WRF 3.0). | |
pseml | kg/kg/s | Raw enhanced melting of snow by accreted water (cold_accretion.esm pseml_lim). | |
pgeml | kg/kg/s | Raw enhanced melting of graupel by accreted water (cold_accretion.esm pgeml_lim). | |
psdep | kg/kg/s | Raw deposition/sublimation of snow (ice_deposition.esm psdep_lim). | |
pgdep | kg/kg/s | Raw deposition/sublimation of graupel (ice_deposition.esm pgdep_lim). | |
pidep | kg/kg/s | Raw deposition/sublimation of cloud ice (ice_deposition.esm pidep_lim). | |
pigen | kg/kg/s | Raw nucleation of cloud ice from vapor (ice_deposition.esm pigen_lim). | |
psaut | kg/kg/s | Raw aggregation of cloud ice to snow (ice_deposition.esm psaut). | |
pgaut | kg/kg/s | Raw aggregation of snow to graupel (ice_deposition.esm pgaut_lim). | |
psevp | kg/kg/s | Raw evaporation of melting snow (ice_deposition.esm psevp_lim). | |
pgevp | kg/kg/s | Raw evaporation of melting graupel (ice_deposition.esm pgevp_lim). | |
cold | 1 | Indicator of the ice branch, 1 where T <= T0 and 0 above (WSM6 if(t(i,k).le.t0c)). | |
delta2 | 1 | Partition switch, 1 where both rain and snow are below par.q_delta: the rain-snow collection products psacr and pracs then go to snow rather than graupel (WSM6 delta2). | |
delta3 | 1 | Partition switch, 1 where rain is below par.q_delta: the ice-rain collection products piacr and praci then go to snow rather than graupel (WSM6 delta3). | |
source_qc | kg/kg | Total cloud-water sink over one sub-step, (praut + pracw + 2 paacw) dtcld; paacw enters twice because the accreted water is counted both as a loss of cloud water and as the mass carried to the collector. | |
f_qc | 1 | Cloud-water conservation factor max(qmin, qc)/max(source_qc, max(qmin, qc)). | |
source_qi | kg/kg | Net cloud-ice sink over one sub-step, (psaut - pigen - pidep + praci + psaci + pgaci) dtcld (the deposition and nucleation sources enter with a minus). | |
f_qi | 1 | Cloud-ice conservation factor. | |
source_qr | kg/kg | Net rain sink over one sub-step in the ice branch, (-praut f_qc - prevp - pracw f_qc + piacr + psacr + pgacr) dtcld, with the cloud-water sources already rescaled by f_qc. | |
f_qr | 1 | Rain conservation factor (ice branch). | |
source_qs | kg/kg | Net snow sink over one sub-step in the ice branch, minus the snow budget of the update, with every rate carrying the factors of the budgets already walked. | |
f_qs | 1 | Snow conservation factor (ice branch). | |
source_qg | kg/kg | Net graupel sink over one sub-step in the ice branch, minus the graupel budget of the update, with every rate carrying the factors of the budgets already walked. | |
f_qg | 1 | Graupel conservation factor (ice branch). | |
source_qr_warm | kg/kg | Net rain sink over one sub-step above 0 C, (-praut f_qc - pracw f_qc - 2 paacw f_qc - prevp + pseml + pgeml) dtcld: the accreted cloud water now becomes rain, so paacw is a rain SOURCE counted twice, and the enhanced melting of snow and graupel (negative rates) are sources as well. | |
g_qr | 1 | Rain conservation factor (warm branch). | |
source_qs_warm | kg/kg | Net snow sink over one sub-step above 0 C, (pgacs - pseml g_qr - psevp) dtcld. | |
g_qs | 1 | Snow conservation factor (warm branch); floored at par.qcrmin rather than par.qmin, as the kernel does above 0 C. | |
source_qg_warm | kg/kg | Net graupel sink over one sub-step above 0 C, -(pgacs g_qs + pgevp + pgeml g_qr) dtcld. | |
g_qg | 1 | Graupel conservation factor (warm branch); floored at par.qcrmin. | |
praut_final | kg/kg/s | Autoconversion after the rescaling: praut f_qc f_qr below 0 C, praut f_qc g_qr above. | |
pracw_final | kg/kg/s | Accretion of cloud water by rain after the rescaling. | |
prevp_final | kg/kg/s | Rain evaporation/condensation after the rescaling. | |
paacw_final | kg/kg/s | Accretion of cloud water by snow/graupel after the rescaling: paacw f_qc f_qs f_qg below 0 C (it drains cloud water and feeds both frozen budgets), paacw f_qc g_qr above. | |
psaut_final | kg/kg/s | Ice-to-snow aggregation after the rescaling. | |
pgaut_final | kg/kg/s | Snow-to-graupel aggregation after the rescaling. | |
pigen_final | kg/kg/s | Ice nucleation after the rescaling. | |
pidep_final | kg/kg/s | Ice deposition/sublimation after the rescaling. | |
praci_final | kg/kg/s | Accretion of cloud ice by rain after the rescaling. | |
piacr_final | kg/kg/s | Accretion of rain by cloud ice after the rescaling. | |
psaci_final | kg/kg/s | Accretion of cloud ice by snow after the rescaling. | |
pgaci_final | kg/kg/s | Accretion of cloud ice by graupel after the rescaling. | |
pracs_final | kg/kg/s | Accretion of snow by rain after the rescaling. | |
psacr_final | kg/kg/s | Accretion of rain by snow after the rescaling. | |
pgacr_final | kg/kg/s | Accretion of rain by graupel after the rescaling. | |
pgacs_final | kg/kg/s | Accretion of snow by graupel after the rescaling (zero since WRF 3.0, but the warm-branch factors still multiply it). | |
psdep_final | kg/kg/s | Snow deposition/sublimation after the rescaling. | |
pgdep_final | kg/kg/s | Graupel deposition/sublimation after the rescaling. | |
pseml_final | kg/kg/s | Enhanced melting of snow after the rescaling (warm branch only; unchanged below 0 C, where it is zero). | |
pgeml_final | kg/kg/s | Enhanced melting of graupel after the rescaling. | |
psevp_final | kg/kg/s | Evaporation of melting snow after the rescaling. | |
pgevp_final | kg/kg/s | Evaporation of melting graupel after the rescaling. | |
xlf | J/kg | Latent heat of fusion as WSM6 forms it here, xls - xl. | |
dqv_dt | kg/kg/s | Vapor tendency of the rate block (WSM6 work2): minus the deposition, nucleation and rain condensation below 0 C, minus the evaporation terms above. | |
dT_dt | K/s | Latent-heating tendency of the rate block (WSM6 -xlwork2/cpm): sublimation at xls for the deposition and nucleation terms, vaporization at xl for the liquid-vapor terms, fusion at xls - xl for the freezing and melting terms. | |
qv_upd | kg/kg | Vapor mixing ratio after the update, qv + dqv_dt dtcld (WSM6 q before the saturation adjustment). | |
T_upd | K | Temperature after the update, T + dT_dt dtcld (WSM6 t before the saturation adjustment). | |
qc_upd | kg/kg | Cloud water after the update, floored at zero; the same expression in both branches. | |
qi_upd | kg/kg | Cloud ice after the update, floored at zero; unchanged above 0 C, where the ice processes are switched off. | |
qr_upd | kg/kg | Rain after the update, floored at zero. | |
qs_upd | kg/kg | Snow after the update, floored at zero. | |
qg_upd | kg/kg | Graupel after the update, floored at zero. | |
dqc_dt | kg/kg/s | Cloud-water tendency of the rescaled rate block, (qc_upd - qc)/dtcld. The block is an operator-split update over the sub-step, not a rate: this is the increment it applies divided by the sub-step, which is the tendency a consumer integrating the column must add. It carries the budget rescaling factors and the zero floor, and converges to the raw sum of the process rates as dtcld -> 0. | |
dqi_dt | kg/kg/s | Cloud-ice tendency of the rescaled rate block, (qi_upd - qi)/dtcld. See dqc_dt. | |
dqr_dt | kg/kg/s | Rain tendency of the rescaled rate block, (qr_upd - qr)/dtcld. See dqc_dt. | |
dqs_dt | kg/kg/s | Snow tendency of the rescaled rate block, (qs_upd - qs)/dtcld. See dqc_dt. | |
dqg_dt | kg/kg/s | Graupel tendency of the rescaled rate block, (qg_upd - qg)/dtcld. See dqc_dt. |
Observed expressions
$$ T = \mathrm{input_T}\left(\right) $$Temperature at which the rates were evaluated (WSM6 t after the sub-step’s sedimentation, melting and freezing).
$$ qv = \mathrm{input_qv}\left(\right) $$Water-vapor mixing ratio (WSM6 q; unchanged by sedimentation, melting and freezing).
$$ qc = \mathrm{input_qc}\left(\right) $$Cloud-water mixing ratio at the rate-evaluation state.
$$ qi = \mathrm{input_qi}\left(\right) $$Cloud-ice mixing ratio at the rate-evaluation state.
$$ qr = \mathrm{input_qr}\left(\right) $$Rain mixing ratio at the rate-evaluation state.
$$ qs = \mathrm{input_qs}\left(\right) $$Snow mixing ratio at the rate-evaluation state.
$$ qg = \mathrm{input_qg}\left(\right) $$Graupel mixing ratio at the rate-evaluation state.
$$ xl = \mathrm{input_xl}\left(\right) $$Latent heat of vaporization at the start-of-sub-step temperature (saturation.esm xl).
$$ cpm = \mathrm{input_cpm}\left(\right) $$Moist heat capacity at the start-of-sub-step vapor (saturation.esm cpm).
$$ prevp = \mathrm{input_prevp}\left(\right) $$Raw evaporation/condensation of rain (warm_rain.esm prevp_lim).
$$ praut = \mathrm{input_praut}\left(\right) $$Raw autoconversion of cloud water to rain (warm_rain.esm praut_lim).
$$ pracw = \mathrm{input_pracw}\left(\right) $$Raw accretion of cloud water by rain (warm_rain.esm pracw_lim).
$$ paacw = \mathrm{input_paacw}\left(\right) $$Raw accretion of cloud water by the mean snow/graupel distribution (cold_accretion.esm paacw).
$$ praci = \mathrm{input_praci}\left(\right) $$Raw accretion of cloud ice by rain (cold_accretion.esm praci_lim).
$$ piacr = \mathrm{input_piacr}\left(\right) $$Raw accretion of rain by cloud ice (cold_accretion.esm piacr_lim).
$$ psaci = \mathrm{input_psaci}\left(\right) $$Raw accretion of cloud ice by snow (cold_accretion.esm psaci_lim).
$$ pgaci = \mathrm{input_pgaci}\left(\right) $$Raw accretion of cloud ice by graupel (cold_accretion.esm pgaci_lim).
$$ pracs = \mathrm{input_pracs}\left(\right) $$Raw accretion of snow by rain (cold_accretion.esm pracs_lim).
$$ psacr = \mathrm{input_psacr}\left(\right) $$Raw accretion of rain by snow (cold_accretion.esm psacr_lim).
$$ pgacr = \mathrm{input_pgacr}\left(\right) $$Raw accretion of rain by graupel (cold_accretion.esm pgacr_lim).
$$ pgacs = \mathrm{input_pgacs}\left(\right) $$Raw accretion of snow by graupel (cold_accretion.esm pgacs; zero since WRF 3.0).
$$ pseml = \mathrm{input_pseml}\left(\right) $$Raw enhanced melting of snow by accreted water (cold_accretion.esm pseml_lim).
$$ pgeml = \mathrm{input_pgeml}\left(\right) $$Raw enhanced melting of graupel by accreted water (cold_accretion.esm pgeml_lim).
$$ psdep = \mathrm{input_psdep}\left(\right) $$Raw deposition/sublimation of snow (ice_deposition.esm psdep_lim).
$$ pgdep = \mathrm{input_pgdep}\left(\right) $$Raw deposition/sublimation of graupel (ice_deposition.esm pgdep_lim).
$$ pidep = \mathrm{input_pidep}\left(\right) $$Raw deposition/sublimation of cloud ice (ice_deposition.esm pidep_lim).
$$ pigen = \mathrm{input_pigen}\left(\right) $$Raw nucleation of cloud ice from vapor (ice_deposition.esm pigen_lim).
$$ psaut = \mathrm{input_psaut}\left(\right) $$Raw aggregation of cloud ice to snow (ice_deposition.esm psaut).
$$ pgaut = \mathrm{input_pgaut}\left(\right) $$Raw aggregation of snow to graupel (ice_deposition.esm pgaut_lim).
$$ psevp = \mathrm{input_psevp}\left(\right) $$Raw evaporation of melting snow (ice_deposition.esm psevp_lim).
$$ pgevp = \mathrm{input_pgevp}\left(\right) $$Raw evaporation of melting graupel (ice_deposition.esm pgevp_lim).
$$ cold = \mathrm{ifelse}\left(\mathrm{<=}\left(T, wrf.svpt0\right), \mathrm{const}\left(\right), \mathrm{const}\left(\right)\right) $$Indicator of the ice branch, 1 where T <= T0 and 0 above (WSM6 if(t(i,k).le.t0c)).
Partition switch, 1 where both rain and snow are below par.q_delta: the rain-snow collection products psacr and pracs then go to snow rather than graupel (WSM6 delta2).
$$ delta3 = \mathrm{ifelse}\left(\mathrm{<}\left(qr, par.q_{delta}\right), \mathrm{const}\left(\right), \mathrm{const}\left(\right)\right) $$Partition switch, 1 where rain is below par.q_delta: the ice-rain collection products piacr and praci then go to snow rather than graupel (WSM6 delta3).
$$ source_{qc} = \left(praut + pracw + \mathrm{const}\left(\right) \cdot paacw\right) \cdot dtcld $$Total cloud-water sink over one sub-step, (praut + pracw + 2 paacw) dtcld; paacw enters twice because the accreted water is counted both as a loss of cloud water and as the mass carried to the collector.
$$ f_{qc} = \mathrm{mass_conservation_factor}\left(q=qc, q_{floor}=par.qmin, source=source_{qc}\right) $$Cloud-water conservation factor max(qmin, qc)/max(source_qc, max(qmin, qc)).
$$ source_{qi} = \left(psaut + 0 - pigen + 0 - pidep + praci + psaci + pgaci\right) \cdot dtcld $$Net cloud-ice sink over one sub-step, (psaut - pigen - pidep + praci + psaci + pgaci) dtcld (the deposition and nucleation sources enter with a minus).
$$ f_{qi} = \mathrm{mass_conservation_factor}\left(q=qi, q_{floor}=par.qmin, source=source_{qi}\right) $$Cloud-ice conservation factor.
$$ source_{qr} = \left(0 - praut \cdot f_{qc} + 0 - prevp + 0 - pracw \cdot f_{qc} + piacr + psacr + pgacr\right) \cdot dtcld $$Net rain sink over one sub-step in the ice branch, (-praut f_qc - prevp - pracw f_qc + piacr + psacr + pgacr) dtcld, with the cloud-water sources already rescaled by f_qc.
$$ f_{qr} = \mathrm{mass_conservation_factor}\left(q=qr, q_{floor}=par.qmin, source=source_{qr}\right) $$Rain conservation factor (ice branch).
$$ source_{qs} = \mathrm{const}\left(\right) \cdot \left(psdep + psaut \cdot f_{qi} + 0 - pgaut + paacw \cdot f_{qc} + piacr \cdot f_{qr} \cdot delta3 + praci \cdot f_{qi} \cdot delta3 + 0 - pracs \cdot \left(1 - delta2\right) + psacr \cdot f_{qr} \cdot delta2 + psaci \cdot f_{qi} + 0 - pgacs\right) \cdot dtcld $$Net snow sink over one sub-step in the ice branch, minus the snow budget of the update, with every rate carrying the factors of the budgets already walked.
$$ f_{qs} = \mathrm{mass_conservation_factor}\left(q=qs, q_{floor}=par.qmin, source=source_{qs}\right) $$Snow conservation factor (ice branch).
$$ source_{qg} = \mathrm{const}\left(\right) \cdot \left(pgdep + pgaut \cdot f_{qs} + piacr \cdot f_{qr} \cdot f_{qs} \cdot \left(1 - delta3\right) + praci \cdot f_{qi} \cdot f_{qs} \cdot \left(1 - delta3\right) + psacr \cdot f_{qr} \cdot f_{qs} \cdot \left(1 - delta2\right) + pracs \cdot f_{qs} \cdot \left(1 - delta2\right) + pgaci \cdot f_{qi} + paacw \cdot f_{qc} \cdot f_{qs} + pgacr \cdot f_{qr} + pgacs \cdot f_{qs}\right) \cdot dtcld $$Net graupel sink over one sub-step in the ice branch, minus the graupel budget of the update, with every rate carrying the factors of the budgets already walked.
$$ f_{qg} = \mathrm{mass_conservation_factor}\left(q=qg, q_{floor}=par.qmin, source=source_{qg}\right) $$Graupel conservation factor (ice branch).
$$ source_{qr\,warm} = \left(0 - praut \cdot f_{qc} + 0 - pracw \cdot f_{qc} + 0 - \mathrm{const}\left(\right) \cdot paacw \cdot f_{qc} + 0 - prevp + pseml + pgeml\right) \cdot dtcld $$Net rain sink over one sub-step above 0 C, (-praut f_qc - pracw f_qc - 2 paacw f_qc - prevp + pseml + pgeml) dtcld: the accreted cloud water now becomes rain, so paacw is a rain SOURCE counted twice, and the enhanced melting of snow and graupel (negative rates) are sources as well.
$$ g_{qr} = \mathrm{mass_conservation_factor}\left(q=qr, q_{floor}=par.qmin, source=source_{qr\,warm}\right) $$Rain conservation factor (warm branch).
$$ source_{qs\,warm} = \left(pgacs + 0 - pseml \cdot g_{qr} + 0 - psevp\right) \cdot dtcld $$Net snow sink over one sub-step above 0 C, (pgacs - pseml g_qr - psevp) dtcld.
$$ g_{qs} = \mathrm{mass_conservation_factor}\left(q=qs, q_{floor}=par.qcrmin, source=source_{qs\,warm}\right) $$Snow conservation factor (warm branch); floored at par.qcrmin rather than par.qmin, as the kernel does above 0 C.
$$ source_{qg\,warm} = \mathrm{const}\left(\right) \cdot \left(pgacs \cdot g_{qs} + pgevp + pgeml \cdot g_{qr}\right) \cdot dtcld $$Net graupel sink over one sub-step above 0 C, -(pgacs g_qs + pgevp + pgeml g_qr) dtcld.
$$ g_{qg} = \mathrm{mass_conservation_factor}\left(q=qg, q_{floor}=par.qcrmin, source=source_{qg\,warm}\right) $$Graupel conservation factor (warm branch); floored at par.qcrmin.
$$ praut_{final} = praut \cdot f_{qc} \cdot \left(cold \cdot f_{qr} + \left(1 - cold\right) \cdot g_{qr}\right) $$Autoconversion after the rescaling: praut f_qc f_qr below 0 C, praut f_qc g_qr above.
$$ pracw_{final} = pracw \cdot f_{qc} \cdot \left(cold \cdot f_{qr} + \left(1 - cold\right) \cdot g_{qr}\right) $$Accretion of cloud water by rain after the rescaling.
$$ prevp_{final} = prevp \cdot \left(cold \cdot f_{qr} + \left(1 - cold\right) \cdot g_{qr}\right) $$Rain evaporation/condensation after the rescaling.
$$ paacw_{final} = paacw \cdot f_{qc} \cdot \left(cold \cdot f_{qs} \cdot f_{qg} + \left(1 - cold\right) \cdot g_{qr}\right) $$Accretion of cloud water by snow/graupel after the rescaling: paacw f_qc f_qs f_qg below 0 C (it drains cloud water and feeds both frozen budgets), paacw f_qc g_qr above.
$$ psaut_{final} = psaut \cdot \left(cold \cdot f_{qi} \cdot f_{qs} + 1 - cold\right) $$Ice-to-snow aggregation after the rescaling.
$$ pgaut_{final} = pgaut \cdot \left(cold \cdot f_{qs} \cdot f_{qg} + 1 - cold\right) $$Snow-to-graupel aggregation after the rescaling.
$$ pigen_{final} = pigen \cdot \left(cold \cdot f_{qi} + 1 - cold\right) $$Ice nucleation after the rescaling.
$$ pidep_{final} = pidep \cdot \left(cold \cdot f_{qi} + 1 - cold\right) $$Ice deposition/sublimation after the rescaling.
$$ praci_{final} = praci \cdot \left(cold \cdot f_{qi} \cdot f_{qs} \cdot f_{qg} + 1 - cold\right) $$Accretion of cloud ice by rain after the rescaling.
$$ piacr_{final} = piacr \cdot \left(cold \cdot f_{qr} \cdot f_{qs} \cdot f_{qg} + 1 - cold\right) $$Accretion of rain by cloud ice after the rescaling.
$$ psaci_{final} = psaci \cdot \left(cold \cdot f_{qi} \cdot f_{qs} + 1 - cold\right) $$Accretion of cloud ice by snow after the rescaling.
$$ pgaci_{final} = pgaci \cdot \left(cold \cdot f_{qi} \cdot f_{qg} + 1 - cold\right) $$Accretion of cloud ice by graupel after the rescaling.
$$ pracs_{final} = pracs \cdot \left(cold \cdot f_{qs} \cdot f_{qg} + 1 - cold\right) $$Accretion of snow by rain after the rescaling.
$$ psacr_{final} = psacr \cdot \left(cold \cdot f_{qr} \cdot f_{qs} \cdot f_{qg} + 1 - cold\right) $$Accretion of rain by snow after the rescaling.
$$ pgacr_{final} = pgacr \cdot \left(cold \cdot f_{qr} \cdot f_{qg} + 1 - cold\right) $$Accretion of rain by graupel after the rescaling.
$$ pgacs_{final} = pgacs \cdot \left(cold \cdot f_{qs} \cdot f_{qg} + \left(1 - cold\right) \cdot g_{qs} \cdot g_{qg}\right) $$Accretion of snow by graupel after the rescaling (zero since WRF 3.0, but the warm-branch factors still multiply it).
$$ psdep_{final} = psdep \cdot \left(cold \cdot f_{qs} + 1 - cold\right) $$Snow deposition/sublimation after the rescaling.
$$ pgdep_{final} = pgdep \cdot \left(cold \cdot f_{qg} + 1 - cold\right) $$Graupel deposition/sublimation after the rescaling.
$$ pseml_{final} = pseml \cdot \left(cold + \left(1 - cold\right) \cdot g_{qr} \cdot g_{qs}\right) $$Enhanced melting of snow after the rescaling (warm branch only; unchanged below 0 C, where it is zero).
$$ pgeml_{final} = pgeml \cdot \left(cold + \left(1 - cold\right) \cdot g_{qr} \cdot g_{qg}\right) $$Enhanced melting of graupel after the rescaling.
$$ psevp_{final} = psevp \cdot \left(cold + \left(1 - cold\right) \cdot g_{qs}\right) $$Evaporation of melting snow after the rescaling.
$$ pgevp_{final} = pgevp \cdot \left(cold + \left(1 - cold\right) \cdot g_{qg}\right) $$Evaporation of melting graupel after the rescaling.
$$ xlf = wrf.xls - xl $$Latent heat of fusion as WSM6 forms it here, xls - xl.
$$ dqv_{dt} = 0 - \left(prevp_{final} + cold \cdot \left(psdep_{final} + pgdep_{final} + pigen_{final} + pidep_{final}\right) + \left(1 - cold\right) \cdot \left(psevp_{final} + pgevp_{final}\right)\right) $$Vapor tendency of the rate block (WSM6 work2): minus the deposition, nucleation and rain condensation below 0 C, minus the evaporation terms above.
$$ dT_{dt} = \frac{xl \cdot prevp_{final} + cold \cdot \left(wrf.xls \cdot \left(psdep_{final} + pgdep_{final} + pidep_{final} + pigen_{final}\right) + xlf \cdot \left(piacr_{final} + \mathrm{const}\left(\right) \cdot paacw_{final} + pgacr_{final} + psacr_{final}\right)\right) + \left(1 - cold\right) \cdot \left(xl \cdot \left(psevp_{final} + pgevp_{final}\right) + xlf \cdot \left(pseml_{final} + pgeml_{final}\right)\right)}{cpm} $$Latent-heating tendency of the rate block (WSM6 -xlwork2/cpm): sublimation at xls for the deposition and nucleation terms, vaporization at xl for the liquid-vapor terms, fusion at xls - xl for the freezing and melting terms.
$$ qv_{upd} = qv + dqv_{dt} \cdot dtcld $$Vapor mixing ratio after the update, qv + dqv_dt dtcld (WSM6 q before the saturation adjustment).
$$ T_{upd} = T + dT_{dt} \cdot dtcld $$Temperature after the update, T + dT_dt dtcld (WSM6 t before the saturation adjustment).
$$ qc_{upd} = \mathrm{max}\left(0, qc - \left(praut_{final} + pracw_{final} + \mathrm{const}\left(\right) \cdot paacw_{final}\right) \cdot dtcld\right) $$Cloud water after the update, floored at zero; the same expression in both branches.
$$ qi_{upd} = cold \cdot \mathrm{max}\left(0, qi - \left(psaut_{final} + praci_{final} + psaci_{final} + pgaci_{final} + 0 - pigen_{final} + 0 - pidep_{final}\right) \cdot dtcld\right) + \left(1 - cold\right) \cdot qi $$Cloud ice after the update, floored at zero; unchanged above 0 C, where the ice processes are switched off.
$$ qr_{upd} = cold \cdot \mathrm{max}\left(0, qr + \left(praut_{final} + pracw_{final} + prevp_{final} + 0 - piacr_{final} + 0 - pgacr_{final} + 0 - psacr_{final}\right) \cdot dtcld\right) + \left(1 - cold\right) \cdot \mathrm{max}\left(0, qr + \left(praut_{final} + pracw_{final} + prevp_{final} + \mathrm{const}\left(\right) \cdot paacw_{final} + 0 - pseml_{final} + 0 - pgeml_{final}\right) \cdot dtcld\right) $$Rain after the update, floored at zero.
$$ qs_{upd} = cold \cdot \mathrm{max}\left(0, qs + \left(psdep_{final} + psaut_{final} + paacw_{final} + 0 - pgaut_{final} + piacr_{final} \cdot delta3 + praci_{final} \cdot delta3 + psaci_{final} + 0 - pgacs_{final} + 0 - pracs_{final} \cdot \left(1 - delta2\right) + psacr_{final} \cdot delta2\right) \cdot dtcld\right) + \left(1 - cold\right) \cdot \mathrm{max}\left(0, qs + \left(psevp_{final} + 0 - pgacs_{final} + pseml_{final}\right) \cdot dtcld\right) $$Snow after the update, floored at zero.
$$ qg_{upd} = cold \cdot \mathrm{max}\left(0, qg + \left(pgdep_{final} + pgaut_{final} + piacr_{final} \cdot \left(1 - delta3\right) + praci_{final} \cdot \left(1 - delta3\right) + psacr_{final} \cdot \left(1 - delta2\right) + pracs_{final} \cdot \left(1 - delta2\right) + pgaci_{final} + paacw_{final} + pgacr_{final} + pgacs_{final}\right) \cdot dtcld\right) + \left(1 - cold\right) \cdot \mathrm{max}\left(0, qg + \left(pgacs_{final} + pgevp_{final} + pgeml_{final}\right) \cdot dtcld\right) $$Graupel after the update, floored at zero.
$$ dqc_{dt} = \frac{qc_{upd} - qc}{dtcld} $$Cloud-water tendency of the rescaled rate block, (qc_upd - qc)/dtcld. The block is an operator-split update over the sub-step, not a rate: this is the increment it applies divided by the sub-step, which is the tendency a consumer integrating the column must add. It carries the budget rescaling factors and the zero floor, and converges to the raw sum of the process rates as dtcld -> 0.
$$ dqi_{dt} = \frac{qi_{upd} - qi}{dtcld} $$Cloud-ice tendency of the rescaled rate block, (qi_upd - qi)/dtcld. See dqc_dt.
$$ dqr_{dt} = \frac{qr_{upd} - qr}{dtcld} $$Rain tendency of the rescaled rate block, (qr_upd - qr)/dtcld. See dqc_dt.
$$ dqs_{dt} = \frac{qs_{upd} - qs}{dtcld} $$Snow tendency of the rescaled rate block, (qs_upd - qs)/dtcld. See dqc_dt.
$$ dqg_{dt} = \frac{qg_{upd} - qg}{dtcld} $$Graupel tendency of the rescaled rate block, (qg_upd - qg)/dtcld. See dqc_dt.
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"
}
},
"variables": {
"T_in": {
"type": "parameter",
"units": "K",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the temperature at which the rates were evaluated from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_T` to this name. Unused by the standalone inline tests, which lower `input_T` to a dumped column profile instead."
},
"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."
},
"qc_in": {
"type": "parameter",
"units": "kg/kg",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the cloud-water mixing ratio from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_qc` to this name. Unused by the standalone inline tests, which lower `input_qc` to a dumped column profile instead."
},
"qi_in": {
"type": "parameter",
"units": "kg/kg",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the cloud-ice mixing ratio from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_qi` to this name. Unused by the standalone inline tests, which lower `input_qi` to a dumped column profile instead."
},
"qr_in": {
"type": "parameter",
"units": "kg/kg",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the rain mixing ratio from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_qr` to this name. Unused by the standalone inline tests, which lower `input_qr` to a dumped column profile instead."
},
"qs_in": {
"type": "parameter",
"units": "kg/kg",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the snow mixing ratio from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_qs` to this name. Unused by the standalone inline tests, which lower `input_qs` to a dumped column profile instead."
},
"qg_in": {
"type": "parameter",
"units": "kg/kg",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the graupel mixing ratio from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_qg` to this name. Unused by the standalone inline tests, which lower `input_qg` 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."
},
"cpm_in": {
"type": "parameter",
"units": "J/(kg*K)",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the start-of-sub-step moist heat capacity from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_cpm` to this name. Unused by the standalone inline tests, which lower `input_cpm` 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 raw prevp rate 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."
},
"praut_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw praut rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_praut` to this name. Unused by the standalone inline tests, which lower `input_praut` to a dumped column profile instead."
},
"pracw_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw pracw rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_pracw` to this name. Unused by the standalone inline tests, which lower `input_pracw` to a dumped column profile instead."
},
"paacw_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw paacw rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_paacw` to this name. Unused by the standalone inline tests, which lower `input_paacw` to a dumped column profile instead."
},
"praci_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw praci rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_praci` to this name. Unused by the standalone inline tests, which lower `input_praci` to a dumped column profile instead."
},
"piacr_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw piacr rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_piacr` to this name. Unused by the standalone inline tests, which lower `input_piacr` to a dumped column profile instead."
},
"psaci_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw psaci rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_psaci` to this name. Unused by the standalone inline tests, which lower `input_psaci` to a dumped column profile instead."
},
"pgaci_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw pgaci rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_pgaci` to this name. Unused by the standalone inline tests, which lower `input_pgaci` to a dumped column profile instead."
},
"pracs_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw pracs rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_pracs` to this name. Unused by the standalone inline tests, which lower `input_pracs` to a dumped column profile instead."
},
"psacr_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw psacr rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_psacr` to this name. Unused by the standalone inline tests, which lower `input_psacr` to a dumped column profile instead."
},
"pgacr_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw pgacr rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_pgacr` to this name. Unused by the standalone inline tests, which lower `input_pgacr` to a dumped column profile instead."
},
"pgacs_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw pgacs rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_pgacs` to this name. Unused by the standalone inline tests, which lower `input_pgacs` to a dumped column profile instead."
},
"pseml_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw pseml rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_pseml` to this name. Unused by the standalone inline tests, which lower `input_pseml` to a dumped column profile instead."
},
"pgeml_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw pgeml rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_pgeml` to this name. Unused by the standalone inline tests, which lower `input_pgeml` to a dumped column profile instead."
},
"psdep_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw psdep rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_psdep` to this name. Unused by the standalone inline tests, which lower `input_psdep` to a dumped column profile instead."
},
"pgdep_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw pgdep rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_pgdep` to this name. Unused by the standalone inline tests, which lower `input_pgdep` to a dumped column profile instead."
},
"pidep_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw pidep rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_pidep` to this name. Unused by the standalone inline tests, which lower `input_pidep` to a dumped column profile instead."
},
"pigen_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw pigen rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_pigen` to this name. Unused by the standalone inline tests, which lower `input_pigen` to a dumped column profile instead."
},
"psaut_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw psaut rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_psaut` to this name. Unused by the standalone inline tests, which lower `input_psaut` to a dumped column profile instead."
},
"pgaut_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw pgaut rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_pgaut` to this name. Unused by the standalone inline tests, which lower `input_pgaut` to a dumped column profile instead."
},
"psevp_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw psevp rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_psevp` to this name. Unused by the standalone inline tests, which lower `input_psevp` to a dumped column profile instead."
},
"pgevp_in": {
"type": "parameter",
"units": "kg/kg/s",
"shape": [
"lev"
],
"default": 0.0,
"description": "Coupling-target parameter (additive): receives the raw pgevp rate from the upstream stage through a document coupling (EqWeFiC couplings/microphysics_column*.esm), where the mount-edge template library lowers `input_pgevp` to this name. Unused by the standalone inline tests, which lower `input_pgevp` to a dumped column profile instead."
},
"T": {
"type": "unknown",
"units": "K",
"shape": [
"lev"
],
"description": "Temperature at which the rates were evaluated (WSM6 t after the sub-step's sedimentation, melting and freezing)."
},
"qv": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Water-vapor mixing ratio (WSM6 q; unchanged by sedimentation, melting and freezing)."
},
"qc": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Cloud-water mixing ratio at the rate-evaluation state."
},
"qi": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Cloud-ice mixing ratio at the rate-evaluation state."
},
"qr": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Rain mixing ratio at the rate-evaluation state."
},
"qs": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Snow mixing ratio at the rate-evaluation state."
},
"qg": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Graupel mixing ratio at the rate-evaluation state."
},
"xl": {
"type": "unknown",
"units": "J/kg",
"shape": [
"lev"
],
"description": "Latent heat of vaporization at the start-of-sub-step temperature (saturation.esm xl)."
},
"cpm": {
"type": "unknown",
"units": "J/(kg*K)",
"shape": [
"lev"
],
"description": "Moist heat capacity at the start-of-sub-step vapor (saturation.esm cpm)."
},
"prevp": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw evaporation/condensation of rain (warm_rain.esm prevp_lim)."
},
"praut": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw autoconversion of cloud water to rain (warm_rain.esm praut_lim)."
},
"pracw": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw accretion of cloud water by rain (warm_rain.esm pracw_lim)."
},
"paacw": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw accretion of cloud water by the mean snow/graupel distribution (cold_accretion.esm paacw)."
},
"praci": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw accretion of cloud ice by rain (cold_accretion.esm praci_lim)."
},
"piacr": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw accretion of rain by cloud ice (cold_accretion.esm piacr_lim)."
},
"psaci": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw accretion of cloud ice by snow (cold_accretion.esm psaci_lim)."
},
"pgaci": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw accretion of cloud ice by graupel (cold_accretion.esm pgaci_lim)."
},
"pracs": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw accretion of snow by rain (cold_accretion.esm pracs_lim)."
},
"psacr": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw accretion of rain by snow (cold_accretion.esm psacr_lim)."
},
"pgacr": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw accretion of rain by graupel (cold_accretion.esm pgacr_lim)."
},
"pgacs": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw accretion of snow by graupel (cold_accretion.esm pgacs; zero since WRF 3.0)."
},
"pseml": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw enhanced melting of snow by accreted water (cold_accretion.esm pseml_lim)."
},
"pgeml": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw enhanced melting of graupel by accreted water (cold_accretion.esm pgeml_lim)."
},
"psdep": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw deposition/sublimation of snow (ice_deposition.esm psdep_lim)."
},
"pgdep": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw deposition/sublimation of graupel (ice_deposition.esm pgdep_lim)."
},
"pidep": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw deposition/sublimation of cloud ice (ice_deposition.esm pidep_lim)."
},
"pigen": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw nucleation of cloud ice from vapor (ice_deposition.esm pigen_lim)."
},
"psaut": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw aggregation of cloud ice to snow (ice_deposition.esm psaut)."
},
"pgaut": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw aggregation of snow to graupel (ice_deposition.esm pgaut_lim)."
},
"psevp": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw evaporation of melting snow (ice_deposition.esm psevp_lim)."
},
"pgevp": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Raw evaporation of melting graupel (ice_deposition.esm pgevp_lim)."
},
"dtcld": {
"type": "parameter",
"units": "s",
"default": 60.0,
"description": "Length of the WSM6 sub-time step; the rescaling and the update are both proportional to it."
},
"cold": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Indicator of the ice branch, 1 where T <= T0 and 0 above (WSM6 `if(t(i,k).le.t0c)`)."
},
"delta2": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Partition switch, 1 where both rain and snow are below par.q_delta: the rain-snow collection products psacr and pracs then go to snow rather than graupel (WSM6 delta2)."
},
"delta3": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Partition switch, 1 where rain is below par.q_delta: the ice-rain collection products piacr and praci then go to snow rather than graupel (WSM6 delta3)."
},
"source_qc": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Total cloud-water sink over one sub-step, (praut + pracw + 2 paacw) dtcld; paacw enters twice because the accreted water is counted both as a loss of cloud water and as the mass carried to the collector."
},
"f_qc": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Cloud-water conservation factor max(qmin, qc)/max(source_qc, max(qmin, qc))."
},
"source_qi": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Net cloud-ice sink over one sub-step, (psaut - pigen - pidep + praci + psaci + pgaci) dtcld (the deposition and nucleation sources enter with a minus)."
},
"f_qi": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Cloud-ice conservation factor."
},
"source_qr": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Net rain sink over one sub-step in the ice branch, (-praut f_qc - prevp - pracw f_qc + piacr + psacr + pgacr) dtcld, with the cloud-water sources already rescaled by f_qc."
},
"f_qr": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Rain conservation factor (ice branch)."
},
"source_qs": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Net snow sink over one sub-step in the ice branch, minus the snow budget of the update, with every rate carrying the factors of the budgets already walked."
},
"f_qs": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Snow conservation factor (ice branch)."
},
"source_qg": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Net graupel sink over one sub-step in the ice branch, minus the graupel budget of the update, with every rate carrying the factors of the budgets already walked."
},
"f_qg": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Graupel conservation factor (ice branch)."
},
"source_qr_warm": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Net rain sink over one sub-step above 0 C, (-praut f_qc - pracw f_qc - 2 paacw f_qc - prevp + pseml + pgeml) dtcld: the accreted cloud water now becomes rain, so paacw is a rain SOURCE counted twice, and the enhanced melting of snow and graupel (negative rates) are sources as well."
},
"g_qr": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Rain conservation factor (warm branch)."
},
"source_qs_warm": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Net snow sink over one sub-step above 0 C, (pgacs - pseml g_qr - psevp) dtcld."
},
"g_qs": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Snow conservation factor (warm branch); floored at par.qcrmin rather than par.qmin, as the kernel does above 0 C."
},
"source_qg_warm": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Net graupel sink over one sub-step above 0 C, -(pgacs g_qs + pgevp + pgeml g_qr) dtcld."
},
"g_qg": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Graupel conservation factor (warm branch); floored at par.qcrmin."
},
"praut_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Autoconversion after the rescaling: praut f_qc f_qr below 0 C, praut f_qc g_qr above."
},
"pracw_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Accretion of cloud water by rain after the rescaling."
},
"prevp_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Rain evaporation/condensation after the rescaling."
},
"paacw_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Accretion of cloud water by snow/graupel after the rescaling: paacw f_qc f_qs f_qg below 0 C (it drains cloud water and feeds both frozen budgets), paacw f_qc g_qr above."
},
"psaut_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Ice-to-snow aggregation after the rescaling."
},
"pgaut_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Snow-to-graupel aggregation after the rescaling."
},
"pigen_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Ice nucleation after the rescaling."
},
"pidep_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Ice deposition/sublimation after the rescaling."
},
"praci_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Accretion of cloud ice by rain after the rescaling."
},
"piacr_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Accretion of rain by cloud ice after the rescaling."
},
"psaci_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Accretion of cloud ice by snow after the rescaling."
},
"pgaci_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Accretion of cloud ice by graupel after the rescaling."
},
"pracs_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Accretion of snow by rain after the rescaling."
},
"psacr_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Accretion of rain by snow after the rescaling."
},
"pgacr_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Accretion of rain by graupel after the rescaling."
},
"pgacs_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Accretion of snow by graupel after the rescaling (zero since WRF 3.0, but the warm-branch factors still multiply it)."
},
"psdep_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Snow deposition/sublimation after the rescaling."
},
"pgdep_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Graupel deposition/sublimation after the rescaling."
},
"pseml_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Enhanced melting of snow after the rescaling (warm branch only; unchanged below 0 C, where it is zero)."
},
"pgeml_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Enhanced melting of graupel after the rescaling."
},
"psevp_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Evaporation of melting snow after the rescaling."
},
"pgevp_final": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Evaporation of melting graupel after the rescaling."
},
"xlf": {
"type": "unknown",
"units": "J/kg",
"shape": [
"lev"
],
"description": "Latent heat of fusion as WSM6 forms it here, xls - xl."
},
"dqv_dt": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Vapor tendency of the rate block (WSM6 work2): minus the deposition, nucleation and rain condensation below 0 C, minus the evaporation terms above."
},
"dT_dt": {
"type": "unknown",
"units": "K/s",
"shape": [
"lev"
],
"description": "Latent-heating tendency of the rate block (WSM6 -xlwork2/cpm): sublimation at xls for the deposition and nucleation terms, vaporization at xl for the liquid-vapor terms, fusion at xls - xl for the freezing and melting terms."
},
"qv_upd": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Vapor mixing ratio after the update, qv + dqv_dt dtcld (WSM6 q before the saturation adjustment)."
},
"T_upd": {
"type": "unknown",
"units": "K",
"shape": [
"lev"
],
"description": "Temperature after the update, T + dT_dt dtcld (WSM6 t before the saturation adjustment)."
},
"qc_upd": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Cloud water after the update, floored at zero; the same expression in both branches."
},
"qi_upd": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Cloud ice after the update, floored at zero; unchanged above 0 C, where the ice processes are switched off."
},
"qr_upd": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Rain after the update, floored at zero."
},
"qs_upd": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Snow after the update, floored at zero."
},
"qg_upd": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Graupel after the update, floored at zero."
},
"dqc_dt": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Cloud-water tendency of the rescaled rate block, (qc_upd - qc)/dtcld. The block is an operator-split update over the sub-step, not a rate: this is the increment it applies divided by the sub-step, which is the tendency a consumer integrating the column must add. It carries the budget rescaling factors and the zero floor, and converges to the raw sum of the process rates as dtcld -> 0."
},
"dqi_dt": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Cloud-ice tendency of the rescaled rate block, (qi_upd - qi)/dtcld. See dqc_dt."
},
"dqr_dt": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Rain tendency of the rescaled rate block, (qr_upd - qr)/dtcld. See dqc_dt."
},
"dqs_dt": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Snow tendency of the rescaled rate block, (qs_upd - qs)/dtcld. See dqc_dt."
},
"dqg_dt": {
"type": "unknown",
"units": "kg/kg/s",
"shape": [
"lev"
],
"description": "Graupel tendency of the rescaled rate block, (qg_upd - qg)/dtcld. See dqc_dt."
}
},
"equations": [
{
"lhs": "T",
"rhs": {
"op": "input_T",
"args": []
}
},
{
"lhs": "qv",
"rhs": {
"op": "input_qv",
"args": []
}
},
{
"lhs": "qc",
"rhs": {
"op": "input_qc",
"args": []
}
},
{
"lhs": "qi",
"rhs": {
"op": "input_qi",
"args": []
}
},
{
"lhs": "qr",
"rhs": {
"op": "input_qr",
"args": []
}
},
{
"lhs": "qs",
"rhs": {
"op": "input_qs",
"args": []
}
},
{
"lhs": "qg",
"rhs": {
"op": "input_qg",
"args": []
}
},
{
"lhs": "xl",
"rhs": {
"op": "input_xl",
"args": []
}
},
{
"lhs": "cpm",
"rhs": {
"op": "input_cpm",
"args": []
}
},
{
"lhs": "prevp",
"rhs": {
"op": "input_prevp",
"args": []
}
},
{
"lhs": "praut",
"rhs": {
"op": "input_praut",
"args": []
}
},
{
"lhs": "pracw",
"rhs": {
"op": "input_pracw",
"args": []
}
},
{
"lhs": "paacw",
"rhs": {
"op": "input_paacw",
"args": []
}
},
{
"lhs": "praci",
"rhs": {
"op": "input_praci",
"args": []
}
},
{
"lhs": "piacr",
"rhs": {
"op": "input_piacr",
"args": []
}
},
{
"lhs": "psaci",
"rhs": {
"op": "input_psaci",
"args": []
}
},
{
"lhs": "pgaci",
"rhs": {
"op": "input_pgaci",
"args": []
}
},
{
"lhs": "pracs",
"rhs": {
"op": "input_pracs",
"args": []
}
},
{
"lhs": "psacr",
"rhs": {
"op": "input_psacr",
"args": []
}
},
{
"lhs": "pgacr",
"rhs": {
"op": "input_pgacr",
"args": []
}
},
{
"lhs": "pgacs",
"rhs": {
"op": "input_pgacs",
"args": []
}
},
{
"lhs": "pseml",
"rhs": {
"op": "input_pseml",
"args": []
}
},
{
"lhs": "pgeml",
"rhs": {
"op": "input_pgeml",
"args": []
}
},
{
"lhs": "psdep",
"rhs": {
"op": "input_psdep",
"args": []
}
},
{
"lhs": "pgdep",
"rhs": {
"op": "input_pgdep",
"args": []
}
},
{
"lhs": "pidep",
"rhs": {
"op": "input_pidep",
"args": []
}
},
{
"lhs": "pigen",
"rhs": {
"op": "input_pigen",
"args": []
}
},
{
"lhs": "psaut",
"rhs": {
"op": "input_psaut",
"args": []
}
},
{
"lhs": "pgaut",
"rhs": {
"op": "input_pgaut",
"args": []
}
},
{
"lhs": "psevp",
"rhs": {
"op": "input_psevp",
"args": []
}
},
{
"lhs": "pgevp",
"rhs": {
"op": "input_pgevp",
"args": []
}
},
{
"lhs": "cold",
"rhs": {
"op": "ifelse",
"args": [
{
"op": "<=",
"args": [
"T",
"wrf.svpt0"
]
},
{
"op": "const",
"args": [],
"value": 1,
"units": "1"
},
{
"op": "const",
"args": [],
"value": 0,
"units": "1"
}
]
}
},
{
"lhs": "delta3",
"rhs": {
"op": "ifelse",
"args": [
{
"op": "<",
"args": [
"qr",
"par.q_delta"
]
},
{
"op": "const",
"args": [],
"value": 1,
"units": "1"
},
{
"op": "const",
"args": [],
"value": 0,
"units": "1"
}
]
}
},
{
"lhs": "delta2",
"rhs": {
"op": "ifelse",
"args": [
{
"op": "and",
"args": [
{
"op": "<",
"args": [
"qr",
"par.q_delta"
]
},
{
"op": "<",
"args": [
"qs",
"par.q_delta"
]
}
]
},
{
"op": "const",
"args": [],
"value": 1,
"units": "1"
},
{
"op": "const",
"args": [],
"value": 0,
"units": "1"
}
]
}
},
{
"lhs": "source_qc",
"rhs": {
"op": "*",
"args": [
{
"op": "+",
"args": [
"praut",
"pracw",
{
"op": "*",
"args": [
{
"op": "const",
"args": [],
"value": 2,
"units": "1"
},
"paacw"
]
}
]
},
"dtcld"
]
}
},
{
"lhs": "f_qc",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "mass_conservation_factor",
"bindings": {
"q": "qc",
"q_floor": "par.qmin",
"source": "source_qc"
}
}
},
{
"lhs": "source_qi",
"rhs": {
"op": "*",
"args": [
{
"op": "+",
"args": [
"psaut",
{
"op": "-",
"args": [
0,
"pigen"
]
},
{
"op": "-",
"args": [
0,
"pidep"
]
},
"praci",
"psaci",
"pgaci"
]
},
"dtcld"
]
}
},
{
"lhs": "f_qi",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "mass_conservation_factor",
"bindings": {
"q": "qi",
"q_floor": "par.qmin",
"source": "source_qi"
}
}
},
{
"lhs": "source_qr",
"rhs": {
"op": "*",
"args": [
{
"op": "+",
"args": [
{
"op": "-",
"args": [
0,
{
"op": "*",
"args": [
"praut",
"f_qc"
]
}
]
},
{
"op": "-",
"args": [
0,
"prevp"
]
},
{
"op": "-",
"args": [
0,
{
"op": "*",
"args": [
"pracw",
"f_qc"
]
}
]
},
"piacr",
"psacr",
"pgacr"
]
},
"dtcld"
]
}
},
{
"lhs": "f_qr",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "mass_conservation_factor",
"bindings": {
"q": "qr",
"q_floor": "par.qmin",
"source": "source_qr"
}
}
},
{
"lhs": "source_qs",
"rhs": {
"op": "*",
"args": [
{
"op": "const",
"args": [],
"value": -1,
"units": "1"
},
{
"op": "+",
"args": [
"psdep",
{
"op": "*",
"args": [
"psaut",
"f_qi"
]
},
{
"op": "-",
"args": [
0,
"pgaut"
]
},
{
"op": "*",
"args": [
"paacw",
"f_qc"
]
},
{
"op": "*",
"args": [
"piacr",
"f_qr",
"delta3"
]
},
{
"op": "*",
"args": [
"praci",
"f_qi",
"delta3"
]
},
{
"op": "-",
"args": [
0,
{
"op": "*",
"args": [
"pracs",
{
"op": "-",
"args": [
1,
"delta2"
]
}
]
}
]
},
{
"op": "*",
"args": [
"psacr",
"f_qr",
"delta2"
]
},
{
"op": "*",
"args": [
"psaci",
"f_qi"
]
},
{
"op": "-",
"args": [
0,
"pgacs"
]
}
]
},
"dtcld"
]
}
},
{
"lhs": "f_qs",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "mass_conservation_factor",
"bindings": {
"q": "qs",
"q_floor": "par.qmin",
"source": "source_qs"
}
}
},
{
"lhs": "source_qg",
"rhs": {
"op": "*",
"args": [
{
"op": "const",
"args": [],
"value": -1,
"units": "1"
},
{
"op": "+",
"args": [
"pgdep",
{
"op": "*",
"args": [
"pgaut",
"f_qs"
]
},
{
"op": "*",
"args": [
"piacr",
"f_qr",
"f_qs",
{
"op": "-",
"args": [
1,
"delta3"
]
}
]
},
{
"op": "*",
"args": [
"praci",
"f_qi",
"f_qs",
{
"op": "-",
"args": [
1,
"delta3"
]
}
]
},
{
"op": "*",
"args": [
"psacr",
"f_qr",
"f_qs",
{
"op": "-",
"args": [
1,
"delta2"
]
}
]
},
{
"op": "*",
"args": [
"pracs",
"f_qs",
{
"op": "-",
"args": [
1,
"delta2"
]
}
]
},
{
"op": "*",
"args": [
"pgaci",
"f_qi"
]
},
{
"op": "*",
"args": [
"paacw",
"f_qc",
"f_qs"
]
},
{
"op": "*",
"args": [
"pgacr",
"f_qr"
]
},
{
"op": "*",
"args": [
"pgacs",
"f_qs"
]
}
]
},
"dtcld"
]
}
},
{
"lhs": "f_qg",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "mass_conservation_factor",
"bindings": {
"q": "qg",
"q_floor": "par.qmin",
"source": "source_qg"
}
}
},
{
"lhs": "source_qr_warm",
"rhs": {
"op": "*",
"args": [
{
"op": "+",
"args": [
{
"op": "-",
"args": [
0,
{
"op": "*",
"args": [
"praut",
"f_qc"
]
}
]
},
{
"op": "-",
"args": [
0,
{
"op": "*",
"args": [
"pracw",
"f_qc"
]
}
]
},
{
"op": "-",
"args": [
0,
{
"op": "*",
"args": [
{
"op": "const",
"args": [],
"value": 2,
"units": "1"
},
"paacw",
"f_qc"
]
}
]
},
{
"op": "-",
"args": [
0,
"prevp"
]
},
"pseml",
"pgeml"
]
},
"dtcld"
]
}
},
{
"lhs": "g_qr",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "mass_conservation_factor",
"bindings": {
"q": "qr",
"q_floor": "par.qmin",
"source": "source_qr_warm"
}
}
},
{
"lhs": "source_qs_warm",
"rhs": {
"op": "*",
"args": [
{
"op": "+",
"args": [
"pgacs",
{
"op": "-",
"args": [
0,
{
"op": "*",
"args": [
"pseml",
"g_qr"
]
}
]
},
{
"op": "-",
"args": [
0,
"psevp"
]
}
]
},
"dtcld"
]
}
},
{
"lhs": "g_qs",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "mass_conservation_factor",
"bindings": {
"q": "qs",
"q_floor": "par.qcrmin",
"source": "source_qs_warm"
}
}
},
{
"lhs": "source_qg_warm",
"rhs": {
"op": "*",
"args": [
{
"op": "const",
"args": [],
"value": -1,
"units": "1"
},
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"pgacs",
"g_qs"
]
},
"pgevp",
{
"op": "*",
"args": [
"pgeml",
"g_qr"
]
}
]
},
"dtcld"
]
}
},
{
"lhs": "g_qg",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "mass_conservation_factor",
"bindings": {
"q": "qg",
"q_floor": "par.qcrmin",
"source": "source_qg_warm"
}
}
},
{
"lhs": "praut_final",
"rhs": {
"op": "*",
"args": [
"praut",
"f_qc",
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
"f_qr"
]
},
{
"op": "*",
"args": [
{
"op": "-",
"args": [
1,
"cold"
]
},
"g_qr"
]
}
]
}
]
}
},
{
"lhs": "pracw_final",
"rhs": {
"op": "*",
"args": [
"pracw",
"f_qc",
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
"f_qr"
]
},
{
"op": "*",
"args": [
{
"op": "-",
"args": [
1,
"cold"
]
},
"g_qr"
]
}
]
}
]
}
},
{
"lhs": "prevp_final",
"rhs": {
"op": "*",
"args": [
"prevp",
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
"f_qr"
]
},
{
"op": "*",
"args": [
{
"op": "-",
"args": [
1,
"cold"
]
},
"g_qr"
]
}
]
}
]
}
},
{
"lhs": "paacw_final",
"rhs": {
"op": "*",
"args": [
"paacw",
"f_qc",
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
"f_qs",
"f_qg"
]
},
{
"op": "*",
"args": [
{
"op": "-",
"args": [
1,
"cold"
]
},
"g_qr"
]
}
]
}
]
}
},
{
"lhs": "psaut_final",
"rhs": {
"op": "*",
"args": [
"psaut",
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
"f_qi",
"f_qs"
]
},
{
"op": "-",
"args": [
1,
"cold"
]
}
]
}
]
}
},
{
"lhs": "pgaut_final",
"rhs": {
"op": "*",
"args": [
"pgaut",
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
"f_qs",
"f_qg"
]
},
{
"op": "-",
"args": [
1,
"cold"
]
}
]
}
]
}
},
{
"lhs": "pigen_final",
"rhs": {
"op": "*",
"args": [
"pigen",
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
"f_qi"
]
},
{
"op": "-",
"args": [
1,
"cold"
]
}
]
}
]
}
},
{
"lhs": "pidep_final",
"rhs": {
"op": "*",
"args": [
"pidep",
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
"f_qi"
]
},
{
"op": "-",
"args": [
1,
"cold"
]
}
]
}
]
}
},
{
"lhs": "praci_final",
"rhs": {
"op": "*",
"args": [
"praci",
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
"f_qi",
"f_qs",
"f_qg"
]
},
{
"op": "-",
"args": [
1,
"cold"
]
}
]
}
]
}
},
{
"lhs": "piacr_final",
"rhs": {
"op": "*",
"args": [
"piacr",
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
"f_qr",
"f_qs",
"f_qg"
]
},
{
"op": "-",
"args": [
1,
"cold"
]
}
]
}
]
}
},
{
"lhs": "psaci_final",
"rhs": {
"op": "*",
"args": [
"psaci",
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
"f_qi",
"f_qs"
]
},
{
"op": "-",
"args": [
1,
"cold"
]
}
]
}
]
}
},
{
"lhs": "pgaci_final",
"rhs": {
"op": "*",
"args": [
"pgaci",
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
"f_qi",
"f_qg"
]
},
{
"op": "-",
"args": [
1,
"cold"
]
}
]
}
]
}
},
{
"lhs": "pracs_final",
"rhs": {
"op": "*",
"args": [
"pracs",
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
"f_qs",
"f_qg"
]
},
{
"op": "-",
"args": [
1,
"cold"
]
}
]
}
]
}
},
{
"lhs": "psacr_final",
"rhs": {
"op": "*",
"args": [
"psacr",
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
"f_qr",
"f_qs",
"f_qg"
]
},
{
"op": "-",
"args": [
1,
"cold"
]
}
]
}
]
}
},
{
"lhs": "pgacr_final",
"rhs": {
"op": "*",
"args": [
"pgacr",
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
"f_qr",
"f_qg"
]
},
{
"op": "-",
"args": [
1,
"cold"
]
}
]
}
]
}
},
{
"lhs": "pgacs_final",
"rhs": {
"op": "*",
"args": [
"pgacs",
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
"f_qs",
"f_qg"
]
},
{
"op": "*",
"args": [
{
"op": "-",
"args": [
1,
"cold"
]
},
"g_qs",
"g_qg"
]
}
]
}
]
}
},
{
"lhs": "psdep_final",
"rhs": {
"op": "*",
"args": [
"psdep",
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
"f_qs"
]
},
{
"op": "-",
"args": [
1,
"cold"
]
}
]
}
]
}
},
{
"lhs": "pgdep_final",
"rhs": {
"op": "*",
"args": [
"pgdep",
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
"f_qg"
]
},
{
"op": "-",
"args": [
1,
"cold"
]
}
]
}
]
}
},
{
"lhs": "pseml_final",
"rhs": {
"op": "*",
"args": [
"pseml",
{
"op": "+",
"args": [
"cold",
{
"op": "*",
"args": [
{
"op": "-",
"args": [
1,
"cold"
]
},
"g_qr",
"g_qs"
]
}
]
}
]
}
},
{
"lhs": "pgeml_final",
"rhs": {
"op": "*",
"args": [
"pgeml",
{
"op": "+",
"args": [
"cold",
{
"op": "*",
"args": [
{
"op": "-",
"args": [
1,
"cold"
]
},
"g_qr",
"g_qg"
]
}
]
}
]
}
},
{
"lhs": "psevp_final",
"rhs": {
"op": "*",
"args": [
"psevp",
{
"op": "+",
"args": [
"cold",
{
"op": "*",
"args": [
{
"op": "-",
"args": [
1,
"cold"
]
},
"g_qs"
]
}
]
}
]
}
},
{
"lhs": "pgevp_final",
"rhs": {
"op": "*",
"args": [
"pgevp",
{
"op": "+",
"args": [
"cold",
{
"op": "*",
"args": [
{
"op": "-",
"args": [
1,
"cold"
]
},
"g_qg"
]
}
]
}
]
}
},
{
"lhs": "xlf",
"rhs": {
"op": "-",
"args": [
"wrf.xls",
"xl"
]
}
},
{
"lhs": "dqv_dt",
"rhs": {
"op": "-",
"args": [
0,
{
"op": "+",
"args": [
"prevp_final",
{
"op": "*",
"args": [
"cold",
{
"op": "+",
"args": [
"psdep_final",
"pgdep_final",
"pigen_final",
"pidep_final"
]
}
]
},
{
"op": "*",
"args": [
{
"op": "-",
"args": [
1,
"cold"
]
},
{
"op": "+",
"args": [
"psevp_final",
"pgevp_final"
]
}
]
}
]
}
]
}
},
{
"lhs": "dT_dt",
"rhs": {
"op": "/",
"args": [
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"xl",
"prevp_final"
]
},
{
"op": "*",
"args": [
"cold",
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"wrf.xls",
{
"op": "+",
"args": [
"psdep_final",
"pgdep_final",
"pidep_final",
"pigen_final"
]
}
]
},
{
"op": "*",
"args": [
"xlf",
{
"op": "+",
"args": [
"piacr_final",
{
"op": "*",
"args": [
{
"op": "const",
"args": [],
"value": 2,
"units": "1"
},
"paacw_final"
]
},
"pgacr_final",
"psacr_final"
]
}
]
}
]
}
]
},
{
"op": "*",
"args": [
{
"op": "-",
"args": [
1,
"cold"
]
},
{
"op": "+",
"args": [
{
"op": "*",
"args": [
"xl",
{
"op": "+",
"args": [
"psevp_final",
"pgevp_final"
]
}
]
},
{
"op": "*",
"args": [
"xlf",
{
"op": "+",
"args": [
"pseml_final",
"pgeml_final"
]
}
]
}
]
}
]
}
]
},
"cpm"
]
}
},
{
"lhs": "qv_upd",
"rhs": {
"op": "+",
"args": [
"qv",
{
"op": "*",
"args": [
"dqv_dt",
"dtcld"
]
}
]
}
},
{
"lhs": "T_upd",
"rhs": {
"op": "+",
"args": [
"T",
{
"op": "*",
"args": [
"dT_dt",
"dtcld"
]
}
]
}
},
{
"lhs": "qc_upd",
"rhs": {
"op": "max",
"args": [
0,
{
"op": "-",
"args": [
"qc",
{
"op": "*",
"args": [
{
"op": "+",
"args": [
"praut_final",
"pracw_final",
{
"op": "*",
"args": [
{
"op": "const",
"args": [],
"value": 2,
"units": "1"
},
"paacw_final"
]
}
]
},
"dtcld"
]
}
]
}
]
}
},
{
"lhs": "qi_upd",
"rhs": {
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
{
"op": "max",
"args": [
0,
{
"op": "-",
"args": [
"qi",
{
"op": "*",
"args": [
{
"op": "+",
"args": [
"psaut_final",
"praci_final",
"psaci_final",
"pgaci_final",
{
"op": "-",
"args": [
0,
"pigen_final"
]
},
{
"op": "-",
"args": [
0,
"pidep_final"
]
}
]
},
"dtcld"
]
}
]
}
]
}
]
},
{
"op": "*",
"args": [
{
"op": "-",
"args": [
1,
"cold"
]
},
"qi"
]
}
]
}
},
{
"lhs": "qr_upd",
"rhs": {
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
{
"op": "max",
"args": [
0,
{
"op": "+",
"args": [
"qr",
{
"op": "*",
"args": [
{
"op": "+",
"args": [
"praut_final",
"pracw_final",
"prevp_final",
{
"op": "-",
"args": [
0,
"piacr_final"
]
},
{
"op": "-",
"args": [
0,
"pgacr_final"
]
},
{
"op": "-",
"args": [
0,
"psacr_final"
]
}
]
},
"dtcld"
]
}
]
}
]
}
]
},
{
"op": "*",
"args": [
{
"op": "-",
"args": [
1,
"cold"
]
},
{
"op": "max",
"args": [
0,
{
"op": "+",
"args": [
"qr",
{
"op": "*",
"args": [
{
"op": "+",
"args": [
"praut_final",
"pracw_final",
"prevp_final",
{
"op": "*",
"args": [
{
"op": "const",
"args": [],
"value": 2,
"units": "1"
},
"paacw_final"
]
},
{
"op": "-",
"args": [
0,
"pseml_final"
]
},
{
"op": "-",
"args": [
0,
"pgeml_final"
]
}
]
},
"dtcld"
]
}
]
}
]
}
]
}
]
}
},
{
"lhs": "qs_upd",
"rhs": {
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
{
"op": "max",
"args": [
0,
{
"op": "+",
"args": [
"qs",
{
"op": "*",
"args": [
{
"op": "+",
"args": [
"psdep_final",
"psaut_final",
"paacw_final",
{
"op": "-",
"args": [
0,
"pgaut_final"
]
},
{
"op": "*",
"args": [
"piacr_final",
"delta3"
]
},
{
"op": "*",
"args": [
"praci_final",
"delta3"
]
},
"psaci_final",
{
"op": "-",
"args": [
0,
"pgacs_final"
]
},
{
"op": "-",
"args": [
0,
{
"op": "*",
"args": [
"pracs_final",
{
"op": "-",
"args": [
1,
"delta2"
]
}
]
}
]
},
{
"op": "*",
"args": [
"psacr_final",
"delta2"
]
}
]
},
"dtcld"
]
}
]
}
]
}
]
},
{
"op": "*",
"args": [
{
"op": "-",
"args": [
1,
"cold"
]
},
{
"op": "max",
"args": [
0,
{
"op": "+",
"args": [
"qs",
{
"op": "*",
"args": [
{
"op": "+",
"args": [
"psevp_final",
{
"op": "-",
"args": [
0,
"pgacs_final"
]
},
"pseml_final"
]
},
"dtcld"
]
}
]
}
]
}
]
}
]
}
},
{
"lhs": "qg_upd",
"rhs": {
"op": "+",
"args": [
{
"op": "*",
"args": [
"cold",
{
"op": "max",
"args": [
0,
{
"op": "+",
"args": [
"qg",
{
"op": "*",
"args": [
{
"op": "+",
"args": [
"pgdep_final",
"pgaut_final",
{
"op": "*",
"args": [
"piacr_final",
{
"op": "-",
"args": [
1,
"delta3"
]
}
]
},
{
"op": "*",
"args": [
"praci_final",
{
"op": "-",
"args": [
1,
"delta3"
]
}
]
},
{
"op": "*",
"args": [
"psacr_final",
{
"op": "-",
"args": [
1,
"delta2"
]
}
]
},
{
"op": "*",
"args": [
"pracs_final",
{
"op": "-",
"args": [
1,
"delta2"
]
}
]
},
"pgaci_final",
"paacw_final",
"pgacr_final",
"pgacs_final"
]
},
"dtcld"
]
}
]
}
]
}
]
},
{
"op": "*",
"args": [
{
"op": "-",
"args": [
1,
"cold"
]
},
{
"op": "max",
"args": [
0,
{
"op": "+",
"args": [
"qg",
{
"op": "*",
"args": [
{
"op": "+",
"args": [
"pgacs_final",
"pgevp_final",
"pgeml_final"
]
},
"dtcld"
]
}
]
}
]
}
]
}
]
}
},
{
"lhs": "dqc_dt",
"rhs": {
"op": "/",
"args": [
{
"op": "-",
"args": [
"qc_upd",
"qc"
]
},
"dtcld"
]
}
},
{
"lhs": "dqi_dt",
"rhs": {
"op": "/",
"args": [
{
"op": "-",
"args": [
"qi_upd",
"qi"
]
},
"dtcld"
]
}
},
{
"lhs": "dqr_dt",
"rhs": {
"op": "/",
"args": [
{
"op": "-",
"args": [
"qr_upd",
"qr"
]
},
"dtcld"
]
}
},
{
"lhs": "dqs_dt",
"rhs": {
"op": "/",
"args": [
{
"op": "-",
"args": [
"qs_upd",
"qs"
]
},
"dtcld"
]
}
},
{
"lhs": "dqg_dt",
"rhs": {
"op": "/",
"args": [
{
"op": "-",
"args": [
"qg_upd",
"qg"
]
},
"dtcld"
]
}
}
],
"tests": [
{
"id": "qss_step250_row23_col30_rain_budget_rescaling",
"description": "Reference: WRF 4.8 em_quarter_ss idealized supercell (GNU real32 build, dx = 2 km, dt = 12 s, 40 layers, WSM6 only), step 250 (t = 50 min), row j = 23, column i = 30 dumped by the instrumented ctessum-claude/WRF fork (module_esm_dump with the 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 (dtcld = 12 s). POINTWISE in the sense of EqWeFiC FORTRAN_BUGS.md N3: the mass-conservation rescaling and the update it feeds are dtcld-dependent by construction (every factor is 1 in the dtcld -> 0 limit), so the test compares them at the kernel's own sub-step instead of replaying at a small dt. Inputs are the state at which the kernel evaluates its rates (t_rates, q/qc/qi/qr/qs/qg_rates, i.e. after the sub-step's sedimentation, melting and freezing), the start-of-sub-step xl and cpm (note N4) and the 22 dumped `<rate>_raw` rates (each after its own per-process limiter, before this block); the expected values are the dumped `<rate>_final` rates, the dumped `*_upd` state and the tendencies (q_upd - q_rates)/dtcld and (t_upd - t_rates)/dtcld from the same replay. The conservation factors are read back from the dump as the ratio of a rate that carries exactly ONE factor (prevp -> f_qr, pidep -> f_qi, psdep -> f_qs, pgdep -> f_qg). This block contains no physical constant beyond T0, xls, qmin, qcrmin and the 1e-4 kg/kg partition threshold, and every input is dumped, so the real64 replay is reproduced to machine precision. Regime: the glaciated flank of the storm -- snow 2.7e-3 and graupel 6.3e-3 kg/kg dominate, cloud water reaches 4.2e-4 and rain only 1.3e-5 kg/kg, with 7 layers above 0 C at the bottom. This is the column in which the RAIN budget binds hardest anywhere in the dumped set: accretion of the little rain that is left by snow and graupel (psacr + pgacr) together with its freezing on ice would remove more than the available qr in one sub-step, so f_qr = 0.7146 at layer 15 and 0.5877 at layer 16, and prevp, pracw, piacr, psacr and pgacr are all scaled by it there. The cloud-water and graupel budgets are not overdrawn (f_qc = f_qg = 1) and the ice budget binds only at the 1e-16 level. Residual (esm vs the real64 replay, measured with zero tolerances): all 22 `<rate>_final` columns, the cold/delta2/delta3 switches and all seven updated fields are reproduced EXACTLY (0.0); the only nonzero residuals are the two tendencies, dqv_dt 5.1e-20 kg/kg/s (2.2e-14 of the column maximum) and dT_dt 2.3e-15 K/s (3.5e-13 of the column maximum), which is summation-order rounding of the latent-heat sum. Tolerances are set at 1e-9 of each rate column's maximum, 1e-12 of each updated field's maximum and rel 1e-12 on the factor spot checks -- four to five orders above the measured residual; the switches keep zero tolerance.",
"parameter_overrides": {
"dtcld": 12.0
},
"expression_template_imports": [
{
"ref": "./tests/qss_step250_row23_col30_rain_budget_rescaling_inputs.esm"
}
],
"time_span": {
"start": 0.0,
"end": 1.0
},
"assertions": [
{
"variable": "cold",
"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,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "delta3",
"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": [
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "delta2",
"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": [
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
0.0,
0.0,
0.0,
0.0,
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.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "prevp_final",
"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": [
-5.485603643675623e-09,
-2.959679570192288e-09,
-8.575733613325266e-10,
-7.803710801506316e-10,
-2.318391377893898e-09,
-1.4848684599667623e-09,
-1.8406379064862476e-08,
-7.807223009209991e-09,
-2.9741196225587265e-09,
-1.86958186976786e-09,
-1.5658983350868542e-09,
-3.650355580069096e-10,
-2.1758994237965793e-09,
-6.841925314254032e-10,
-2.7841493088086754e-10,
-4.9097433254564964e-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
]
},
"k"
]
}
},
"tolerance": {
"abs": 1.8e-17,
"rel": 0.0
}
},
{
"variable": "praut_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pracw_final",
"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": [
7.836044203855283e-20,
0.0,
4.8589438156005244e-15,
9.648259916090474e-16,
6.919449138358987e-13,
6.029395937773673e-16,
1.1660954256932776e-12,
6.622291751067983e-14,
1.4643795791573253e-09,
2.9462696912621977e-08,
1.6865611669176637e-08,
5.726985133764841e-11,
3.20241866005332e-11,
3.381116137860252e-13,
1.249546086719342e-14,
1.1018249068617442e-16,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 2.9e-17,
"rel": 0.0
}
},
{
"variable": "paacw_final",
"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,
4.658098479707274e-13,
6.028349772398144e-09,
1.0985159516098537e-10,
6.154444839144897e-08,
3.545580486225565e-07,
1.7448457856945905e-07,
2.4758273600853796e-08,
5.403324249149883e-09,
3.457207469061275e-10,
7.755442613574852e-10,
2.934140637325527e-10,
5.3851695458827925e-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
]
},
"k"
]
}
},
"tolerance": {
"abs": 3.5e-16,
"rel": 0.0
}
},
{
"variable": "praci_final",
"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.9955814931362107e-10,
1.0004333204859865e-09,
2.1047320107972992e-09,
4.677326866847649e-10,
1.013944949118427e-14,
2.1595936447182683e-13,
5.998589257308402e-16,
2.3343736296141885e-17,
8.23487169441757e-20,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 2.1e-18,
"rel": 0.0
}
},
{
"variable": "piacr_final",
"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,
3.731173858306481e-09,
1.290292109697869e-07,
4.374279944058204e-07,
1.2504454760590976e-07,
5.6345974296461616e-11,
1.261548804057909e-10,
1.3329990316832685e-12,
7.118542382061572e-14,
3.043602970047027e-15,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 4.4e-16,
"rel": 0.0
}
},
{
"variable": "psaci_final",
"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,
1.1755814967320419e-09,
1.609259424043933e-08,
1.2150623721569353e-08,
7.399504484882017e-08,
1.651299820995853e-07,
1.2302240616717123e-07,
8.385796676897975e-08,
5.903776493471891e-08,
6.485418842915533e-08,
5.85154511711091e-08,
3.778794560319723e-08,
3.504543229167625e-08,
5.496974704089983e-08,
8.60895362087764e-08,
1.2184447391043377e-07,
1.555242894249146e-07,
1.678141304390365e-07,
1.0898934145996227e-07,
2.525061657361842e-08,
8.165203613347033e-11,
4.095219927775428e-12,
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": 1.7e-16,
"rel": 0.0
}
},
{
"variable": "pgaci_final",
"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,
7.467392403650227e-10,
8.055652933811275e-09,
9.18135564645279e-09,
2.8324909243695126e-08,
5.4940892022272216e-08,
3.913797541142708e-08,
2.4795600694172628e-08,
1.6057166335714745e-08,
1.5575466173552784e-08,
1.2225925626486308e-08,
6.821769968334599e-09,
5.258681214288315e-09,
6.513582201683637e-09,
7.827456202349192e-09,
8.476092312978251e-09,
8.430081896438155e-09,
7.475900253710306e-09,
4.695382232798347e-09,
1.3333574430183144e-09,
3.21058200933045e-12,
1.369622909733583e-13,
9.351650960167341e-19,
7.712650933451438e-18,
0.0,
3.9312092556573093e-22,
1.3021884721360195e-17,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 5.5e-17,
"rel": 0.0
}
},
{
"variable": "pracs_final",
"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,
4.2033457959397557e-10,
5.346137937687516e-09,
5.387995167080727e-09,
5.078698491427362e-10,
4.311395485704607e-14,
2.1209101602061088e-13,
9.258900055338306e-16,
4.046159234694566e-17,
6.470824956616506e-19,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 5.4e-18,
"rel": 0.0
}
},
{
"variable": "psacr_final",
"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,
7.83016055514602e-10,
9.532544413059685e-09,
1.4648826618763412e-09,
9.472593763351486e-09,
9.617914868253925e-10,
4.7203871138757045e-09,
6.585296625532071e-10,
1.5893261026944675e-10,
2.68968077518764e-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
]
},
"k"
]
}
},
"tolerance": {
"abs": 9.5e-18,
"rel": 0.0
}
},
{
"variable": "pgacr_final",
"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.261082693844636e-10,
4.995669504056152e-09,
9.098432282948545e-09,
3.6316491812653e-09,
3.263910248488022e-10,
1.5396934164199634e-09,
2.0694682293205707e-10,
4.764307580940871e-11,
7.551183394603855e-12,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 9.1e-18,
"rel": 0.0
}
},
{
"variable": "pgacs_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pseml_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pgeml_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "psdep_final",
"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.265490802716343e-08,
1.552123719371996e-08,
1.1058560299403443e-08,
1.1100637237831105e-07,
2.9764291179025626e-07,
-3.8614885236463177e-07,
-8.749403816145926e-07,
-1.5423928699514832e-06,
-1.5265381841131074e-06,
-1.4168065671872768e-06,
-1.1767545339701647e-06,
-8.993233618915191e-07,
-6.104069727157075e-07,
-3.5870645010159086e-07,
-2.0774068902670503e-07,
-1.4222820916976545e-07,
-1.3203726417481194e-07,
-1.8855662749259011e-07,
-2.567604690240149e-07,
-4.4786963113814484e-09,
-1.880991530298778e-09,
-5.333024994488943e-12,
-8.319309945797159e-12,
-2.4586845693631888e-15,
-2.7358716281890604e-17,
-5.068006705407748e-34,
-3.395568429595201e-32,
-2.3399233630033024e-39,
-5.845373082100159e-37,
-3.2583129120260175e-35,
0.0,
-2.4804150567269532e-42,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1.5e-15,
"rel": 0.0
}
},
{
"variable": "pgdep_final",
"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,
-1.8954643617959685e-08,
1.0394498555374129e-08,
1.4082357978954909e-08,
6.744456803282958e-08,
1.683641784862631e-07,
-2.1358918248227834e-07,
-4.530139388193231e-07,
-7.360059351737971e-07,
-6.490373915613051e-07,
-5.287846915081452e-07,
-3.806362295755589e-07,
-2.461670913728829e-07,
-1.3869707192344562e-07,
-6.703222783185038e-08,
-3.2332370046461385e-08,
-1.9052698068943176e-08,
-1.613538580328933e-08,
-2.4083468190578153e-08,
-4.157371301984505e-08,
-1.391095517947861e-09,
-6.412144864245659e-10,
-1.4910322977499612e-10,
-5.836863268415022e-10,
-5.282270425741178e-10,
-3.4456631189228363e-10,
-3.116945175422706e-10,
-6.199128641030334e-11,
-8.02627025495398e-13,
-2.0282498833105238e-13,
-7.794011907269878e-15,
0.0,
-1.6638302666509064e-27,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 7.4e-16,
"rel": 0.0
}
},
{
"variable": "pidep_final",
"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,
-3.7953375449476895e-08,
9.290794759866034e-08,
3.0035333543437045e-07,
2.9570659175591614e-07,
1.332639092859956e-07,
-4.921451900523527e-08,
-5.1060396361525e-08,
-5.167613081016616e-08,
-4.628311745575982e-08,
-3.420246991303545e-08,
-1.7467199629266852e-08,
-1.1105187156788829e-08,
-9.546635483260514e-09,
-7.082842986063176e-09,
-4.983736458184058e-09,
-4.376269340568145e-09,
-6.066513498755467e-09,
-1.646105581670183e-08,
-4.618497249855157e-08,
-3.0547194694751416e-08,
-7.635732450515752e-09,
-3.662207937223899e-11,
-1.9941310162660477e-11,
0.0,
-8.543014378929045e-16,
-8.304432182474935e-11,
-6.779013031807493e-10,
-9.481591617337316e-10,
-3.368427709243026e-15,
-4.9174060620059346e-14,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 3e-16,
"rel": 0.0
}
},
{
"variable": "pigen_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "psaut_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pgaut_final",
"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,
2.655802881660976e-08,
1.7357296943960661e-07,
2.2357124906537772e-07,
2.1434624387013316e-07,
1.7610619352965122e-07,
1.3657210022057715e-07,
1.0153532276210529e-07,
7.328637548691113e-08,
5.118100186315095e-08,
3.433033941728757e-08,
2.1766452146258783e-08,
1.2488544230023874e-08,
5.784704470894122e-09,
1.2379381951881795e-10,
0.0,
0.0,
0.0,
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": 2.2e-16,
"rel": 0.0
}
},
{
"variable": "psevp_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pgevp_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "dqv_dt",
"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": [
5.485603643638065e-09,
2.9596795701458214e-09,
8.575733612820047e-10,
7.803710801110771e-10,
2.3183913778918965e-09,
1.4848684599597095e-09,
1.8406379064869517e-08,
8.737015010381519e-08,
-1.1584956372518174e-07,
-3.2362467184296066e-07,
-4.7259163383197325e-07,
-5.98905964004501e-07,
6.511284532759429e-07,
1.3796989093268716e-06,
2.3303533508663298e-06,
2.221907790563428e-06,
1.979793728608454e-06,
1.5748579631749922e-06,
1.1565956404211915e-06,
7.586506801224125e-07,
4.3282152091950497e-07,
2.450567955313502e-07,
1.656571765792767e-07,
1.542391634768567e-07,
2.2910115149987054e-07,
3.44519154542411e-07,
3.6416986524080225e-08,
1.015793846723892e-08,
1.9105833414176918e-10,
6.119469469499106e-10,
5.282295012589046e-10,
3.4456719355233404e-10,
3.9473883936722893e-10,
7.398925895909652e-10,
9.489617887596651e-10,
2.0619341556798546e-13,
5.6968072746835e-14,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 2.3e-15,
"rel": 0.0
}
},
{
"variable": "dT_dt",
"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": [
-1.3184740457935126e-05,
-7.1432031442479156e-06,
-2.0798006374889155e-06,
-1.903240232081771e-06,
-5.684765544818522e-06,
-3.6584321350119353e-06,
-4.5553091046220594e-05,
-0.00024259555004846334,
0.0003802107210333361,
0.001061502704340948,
0.0014210263338488478,
0.0019167269561108924,
-0.001735376578665182,
-0.0038950209847191295,
-0.006603406250097994,
-0.0063001647662540945,
-0.00561422398190814,
-0.004466599960885276,
-0.0032807097370858664,
-0.0021521022565333205,
-0.0012278732882009535,
-0.0006952295115236021,
-0.00046998271977590395,
-0.0004375932003573742,
-0.0006499807172109703,
-0.0009774138064292022,
-0.00010331685005364004,
-2.881880804039838e-05,
-5.420506189087367e-07,
-1.7361607499803238e-06,
-1.4986494984251901e-06,
-9.775779214275342e-07,
-1.1199184015708852e-06,
-2.099149658837026e-06,
-2.6922858703907573e-06,
-5.849850973997187e-10,
-1.6162241915177825e-10,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 6.6e-12,
"rel": 0.0
}
},
{
"variable": "qv_upd",
"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.01399663619833509,
0.013981416947376804,
0.012975923763353957,
0.010829290426340702,
0.008384344980349245,
0.0060590055141452916,
0.004798355199758303,
0.004432997438881572,
0.0039055112653762413,
0.0032376189509916746,
0.0026207051269383965,
0.0021493268715344965,
0.0016237834712834523,
0.0012794322428122697,
0.0009347089210434674,
0.0007238859556481173,
0.0005504122334081657,
0.0004140714151720007,
0.0003021970008042786,
0.00021205695423357352,
0.0001431547748689193,
9.489638755788014e-05,
6.595708682878602e-05,
5.409202735283085e-05,
6.241700662952257e-05,
8.606780629355058e-05,
7.67249683136301e-05,
6.738421621549382e-05,
5.7865411554593874e-05,
5.1541124879263445e-05,
4.808193037546991e-05,
4.797181306242267e-05,
5.0551192761600604e-05,
5.5488666699663306e-05,
6.175095835192467e-05,
6.863366681549878e-05,
7.605514906721937e-05,
8.427674765698612e-05,
9.339208190795034e-05,
0.00010332708188798279
]
},
"k"
]
}
},
"tolerance": {
"abs": 1.4e-14,
"rel": 0.0
}
},
{
"variable": "T_upd",
"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": [
297.618616197177,
293.30029880304664,
289.098272161533,
285.05384068650784,
281.524834126553,
278.49894901336495,
274.8613997556526,
270.3426088732313,
266.4149934708319,
263.03559639932445,
259.6838939337933,
257.0622158179387,
255.26736831721917,
252.86982469544728,
250.11097519273395,
246.81276472327912,
243.36196586754542,
239.7386371285991,
235.89260780151457,
231.77751949953625,
227.48604371878378,
223.33311842750234,
219.85098862533144,
217.92732029272852,
219.29685721381534,
224.0411885147916,
226.48125836674467,
224.65031945750664,
222.20545309011914,
219.46618094829756,
216.53858675253414,
215.0118901245337,
216.40196410004168,
218.32457502993066,
219.20261967010862,
219.70721434844893,
219.89933776661522,
219.8866424560547,
219.6458282470703,
219.1829833984375
]
},
"k"
]
}
},
"tolerance": {
"abs": 3e-10,
"rel": 0.0
}
},
{
"variable": "qc_upd",
"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": [
7.753093978780167e-14,
4.492999922040478e-21,
2.8888765617794545e-09,
2.00430140866522e-10,
2.845277678100115e-07,
2.198194660449525e-09,
7.74270215599027e-08,
4.0670097060179415e-09,
3.039388047467424e-05,
0.000398000045493624,
0.0004218061301723178,
7.489944512641139e-05,
1.6811719944960404e-05,
1.6342599320394987e-06,
2.860910505194117e-07,
1.5984230387323447e-08,
3.279181461316541e-08,
1.167293688557744e-08,
2.0645357565758707e-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
]
},
"k"
]
}
},
"tolerance": {
"abs": 4.2e-16,
"rel": 0.0
}
},
{
"variable": "qi_upd",
"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,
3.2951161505379552e-06,
3.328212320294288e-05,
6.26320721201594e-05,
5.171893332402678e-05,
2.6771987541953094e-05,
9.739183181928444e-06,
5.167114354158077e-06,
3.2916299547495826e-06,
3.863969566059135e-06,
3.874051246473643e-06,
2.8848674581588174e-06,
3.039112823555447e-06,
5.169447822747363e-06,
8.652299010984226e-06,
1.3203498743162575e-05,
1.9129483242117606e-05,
2.645554393910367e-05,
2.9697711165929403e-05,
1.8563828871724747e-05,
4.849571389252996e-06,
8.062949079363336e-07,
5.169878828456423e-26,
0.0,
0.0,
0.0,
0.0,
3.337945947305451e-09,
1.2014769836694035e-09,
0.0,
0.0,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 6.3e-17,
"rel": 0.0
}
},
{
"variable": "qr_upd",
"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": [
5.1694331185941264e-08,
1.1410580060724616e-07,
2.0023708964735052e-07,
6.419092224846601e-07,
2.9699773588183866e-07,
1.563173944364727e-08,
2.100605935239432e-06,
2.4164702665356e-06,
6.482750582422538e-06,
8.260494403369956e-06,
5.632302595243731e-06,
8.170085399134738e-08,
1.3945476022890115e-07,
3.278087944504267e-09,
1.6543612251060553e-24,
2.0679515313825692e-25,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 8.3e-18,
"rel": 0.0
}
},
{
"variable": "qs_upd",
"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,
1.4565944001579414e-05,
3.122209041792843e-05,
1.0158073614099977e-05,
0.0001191649000685936,
0.0007227065123967349,
0.001463093396027404,
0.00196936386323605,
0.0022722105695985252,
0.00245210926448094,
0.0025637740683645332,
0.0026289970303113456,
0.002676821808640295,
0.0027072063888977675,
0.0026853548097946506,
0.0025245874639790358,
0.0021120493972403005,
0.0014331532140088694,
0.0006147953462014253,
0.0001286873755302729,
9.79824433601648e-10,
4.9142639133304423e-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
]
},
"k"
]
}
},
"tolerance": {
"abs": 2.7e-15,
"rel": 0.0
}
},
{
"variable": "qg_upd",
"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.2379808441454166e-05,
4.1330406179280564e-05,
2.400266550775569e-05,
0.00021484053176393006,
0.0013115261766854464,
0.0028022870406974884,
0.00393356302178587,
0.0047726825264684586,
0.005359275037196446,
0.005782481543173459,
0.006093052902046036,
0.006261642066767592,
0.006342982271044125,
0.006318933037063196,
0.0060738851702046995,
0.0052931933476971305,
0.003758761586221596,
0.0017244549743283264,
0.00043605598512428176,
4.335330098347793e-07,
1.3481920727105234e-07,
1.3409184255178665e-08,
3.610253077246542e-07,
8.199320034985297e-07,
6.794358049044662e-07,
1.8197756059677037e-07,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 6.3e-15,
"rel": 0.0
}
},
{
"variable": "f_qr",
"time": 0.0,
"coords": {
"lev": 15
},
"expected": 0.7146214666561566,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qr",
"time": 0.0,
"coords": {
"lev": 16
},
"expected": 0.5876528819327191,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qi",
"time": 0.0,
"coords": {
"lev": 15
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qi",
"time": 0.0,
"coords": {
"lev": 16
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qs",
"time": 0.0,
"coords": {
"lev": 15
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qs",
"time": 0.0,
"coords": {
"lev": 16
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qg",
"time": 0.0,
"coords": {
"lev": 15
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qg",
"time": 0.0,
"coords": {
"lev": 16
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
}
]
},
{
"id": "qss_step200_row20_col21_ice_and_snow_budget_rescaling",
"description": "Reference: WRF 4.8 em_quarter_ss idealized supercell (GNU real32 build, dx = 2 km, dt = 12 s, 40 layers, WSM6 only), step 200 (t = 40 min), row j = 20, column i = 21 dumped by the instrumented ctessum-claude/WRF fork (module_esm_dump with the 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 (dtcld = 12 s). POINTWISE in the sense of EqWeFiC FORTRAN_BUGS.md N3: the mass-conservation rescaling and the update it feeds are dtcld-dependent by construction (every factor is 1 in the dtcld -> 0 limit), so the test compares them at the kernel's own sub-step instead of replaying at a small dt. Inputs are the state at which the kernel evaluates its rates (t_rates, q/qc/qi/qr/qs/qg_rates, i.e. after the sub-step's sedimentation, melting and freezing), the start-of-sub-step xl and cpm (note N4) and the 22 dumped `<rate>_raw` rates (each after its own per-process limiter, before this block); the expected values are the dumped `<rate>_final` rates, the dumped `*_upd` state and the tendencies (q_upd - q_rates)/dtcld and (t_upd - t_rates)/dtcld from the same replay. The conservation factors are read back from the dump as the ratio of a rate that carries exactly ONE factor (prevp -> f_qr, pidep -> f_qi, psdep -> f_qs, pgdep -> f_qg). This block contains no physical constant beyond T0, xls, qmin, qcrmin and the 1e-4 kg/kg partition threshold, and every input is dumped, so the real64 replay is reproduced to machine precision. Regime: the growing updraft of the early storm -- cloud water 2.6e-4, rain 3.5e-4, cloud ice 5.5e-6, snow 4.6e-6 and graupel 2.2e-5 kg/kg, 7 layers above 0 C. This is the column in which the CLOUD-ICE and SNOW budgets bind: deposition, aggregation and the three ice-collection terms would overdraw the young ice, so f_qi = 0.9738/0.9695/0.9708 at layers 8/9/10, and at layer 8 the snow being produced is itself overdrawn, f_qs = 0.9736 -- so psaut and psaci there carry the PRODUCT f_qi f_qs, which is exactly the sequential cascade this component reproduces with cumulative factors. The rain and graupel budgets are not overdrawn (f_qr = f_qg = 1). Residual (esm vs the real64 replay, measured with zero tolerances): all 22 `<rate>_final` columns, the switches and all seven updated fields are reproduced EXACTLY (0.0); nonzero only in dqv_dt 7.2e-20 kg/kg/s (1.4e-13 of the column maximum), dT_dt 2.1e-15 K/s (1.6e-12 of the column maximum) and one ulp (1.1e-16 relative) in the f_qi spot check at layer 8, where the factor is a quotient of two sums. Tolerances are set at 1e-9 of each rate column's maximum, 1e-12 of each updated field's maximum and rel 1e-12 on the factor spot checks; the switches keep zero tolerance.",
"parameter_overrides": {
"dtcld": 12.0
},
"expression_template_imports": [
{
"ref": "./tests/qss_step200_row20_col21_ice_and_snow_budget_rescaling_inputs.esm"
}
],
"time_span": {
"start": 0.0,
"end": 1.0
},
"assertions": [
{
"variable": "cold",
"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,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "delta3",
"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": [
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
0.0,
0.0,
0.0,
0.0,
0.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "delta2",
"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": [
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
0.0,
0.0,
0.0,
0.0,
0.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "prevp_final",
"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": [
-1.4847396307544897e-11,
-2.6516664510435792e-09,
1.5030860810208841e-09,
6.65997657748553e-09,
8.628847185394765e-09,
-4.0186544481389664e-08,
-3.2424233673208205e-07,
-3.8592944311232425e-07,
-4.4495389128769924e-07,
-4.4748826351512657e-07,
-2.89761164863249e-07,
-1.2587309576939045e-08,
-5.41796319420951e-09,
-7.911139782073025e-10,
-3.957857497076039e-09,
-2.5685618402717464e-10,
-1.8433891754759834e-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
]
},
"k"
]
}
},
"tolerance": {
"abs": 4.5e-16,
"rel": 0.0
}
},
{
"variable": "praut_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pracw_final",
"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,
1.5031052346235762e-16,
6.002257819969729e-09,
4.9218192323355787e-08,
5.290671255888824e-08,
4.982083845462269e-10,
4.5733320641350265e-08,
1.106566742941214e-07,
1.1294271558639313e-07,
7.150594806227687e-08,
2.4535725633113592e-08,
1.3051717007900558e-10,
1.2460100610387214e-11,
9.967499183598295e-14,
4.1071309574000924e-13,
1.1914085694154027e-14,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 1.1e-16,
"rel": 0.0
}
},
{
"variable": "paacw_final",
"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,
1.162123291407835e-12,
1.6906951397390626e-10,
7.817640686531662e-10,
9.00527814202377e-15,
1.4091315443638006e-13,
3.096246950743283e-12,
6.696869143126789e-12,
7.885653104722135e-13,
1.2558441354109789e-11,
2.9383927333923062e-12,
9.582802341962339e-12,
3.479824705293722e-12,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 7.8e-19,
"rel": 0.0
}
},
{
"variable": "praci_final",
"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,
7.355432823462512e-12,
8.080989919748732e-11,
1.9897233974615615e-10,
4.3556176941386677e-10,
6.912961906473485e-11,
2.9220357359618107e-12,
5.225259478185856e-16,
1.616496249212487e-12,
5.757516516395478e-18,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 4.4e-19,
"rel": 0.0
}
},
{
"variable": "piacr_final",
"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,
4.01220334951822e-16,
3.55947821945031e-14,
2.5139248913176736e-13,
2.729649619852529e-12,
1.3409042549224782e-10,
5.6270536565981114e-11,
5.01869947857506e-13,
1.4877099077263455e-10,
3.1946258098232144e-14,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 1.5e-19,
"rel": 0.0
}
},
{
"variable": "psaci_final",
"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,
1.0855918744586973e-15,
1.8868615803587068e-13,
1.4466735422559728e-12,
1.309019033200343e-12,
5.4889095251815944e-12,
2.6435963788648317e-11,
7.787257034464073e-11,
1.040462568516284e-10,
1.1989675046662343e-10,
2.9172267953177055e-13,
5.498920076936062e-13,
5.6173442147072995e-12,
8.227052547896018e-11,
7.390712123297027e-11,
3.99421155670696e-11,
5.721505999635929e-12,
2.5607249620640135e-13,
0.0,
0.0,
1.6733519625121491e-22,
0.0,
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": 1.2e-19,
"rel": 0.0
}
},
{
"variable": "pgaci_final",
"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.720540649904969e-14,
2.382773954211077e-12,
7.944292774660474e-12,
1.090641725085084e-12,
7.106245840650595e-12,
1.9972257994352413e-11,
3.717996062489875e-11,
2.9434519280711496e-11,
7.70151498694416e-12,
1.0257896014571296e-13,
1.5747384073394064e-13,
7.099478461658502e-13,
2.3869849496764185e-12,
1.9821952362867056e-12,
1.5176128007744182e-12,
2.5036260375484027e-13,
1.6529930696486382e-14,
3.9904730717318586e-16,
8.606459065522035e-21,
2.0792633321767632e-23,
5.194715204305446e-20,
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": 3.7e-20,
"rel": 0.0
}
},
{
"variable": "pracs_final",
"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.9517614185808475e-12,
2.760158983923902e-10,
1.1383541982776987e-09,
1.348114786450389e-10,
3.883241970871523e-13,
6.779449466041337e-13,
6.186727672284327e-15,
1.4425797437396761e-12,
1.227041202744497e-17,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 1.1e-18,
"rel": 0.0
}
},
{
"variable": "psacr_final",
"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,
7.978630631813884e-18,
1.9942377275869404e-14,
5.893578781461324e-13,
4.7513239187699767e-14,
6.8234181604983505e-15,
2.4791183489242313e-13,
1.2728318606467918e-13,
2.136307065303782e-12,
5.4416216341502035e-14,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 2.1e-21,
"rel": 0.0
}
},
{
"variable": "pgacr_final",
"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,
8.349924226692997e-11,
3.5587089967739097e-09,
9.584516905686767e-09,
1.5744791585709326e-12,
3.052950613958463e-11,
6.936204444963199e-12,
9.319436402877072e-14,
8.862346432616604e-12,
3.542960081424127e-15,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 9.6e-18,
"rel": 0.0
}
},
{
"variable": "pgacs_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pseml_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pgeml_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "psdep_final",
"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,
-1.769221468027847e-10,
-2.357378874291801e-09,
-6.662729881455587e-09,
-3.282005085628858e-09,
-1.1463416487803531e-09,
-3.63394297039977e-09,
-4.7329280173493725e-09,
-4.1332997114198166e-09,
-2.3929639046134517e-08,
-4.555602134893446e-08,
-3.95287259443684e-08,
-2.774039963097826e-08,
-1.980709835273752e-08,
-1.543470289943454e-08,
-1.063026376173592e-08,
-4.83362813386557e-09,
-1.2950866519211124e-09,
-9.550218770859935e-12,
-6.746629746804449e-12,
-2.395693053048033e-10,
-1.8641873098892872e-11,
-7.40130061914022e-14,
-2.0683487691221604e-25,
-2.2322358474151988e-23,
-2.2600067016290021e-35,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 4.6e-17,
"rel": 0.0
}
},
{
"variable": "pgdep_final",
"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,
-1.3214867417390857e-08,
-3.897295890047656e-08,
-5.449399325519245e-08,
-4.65791727087998e-09,
-6.553369266107102e-09,
-8.07943721157171e-09,
-6.8003088971209835e-09,
-3.6209462596117263e-09,
-2.360057627265315e-09,
-1.820309168618763e-08,
-1.3147137563730487e-08,
-5.814898462001771e-09,
-1.3271883114318147e-09,
-1.146517688265002e-09,
-1.370338188558369e-09,
-7.455976523342058e-10,
-2.9741669467303645e-10,
-2.8149293646093348e-11,
-8.278626440866189e-12,
-2.4459396154681287e-11,
-2.3308099376792368e-11,
-8.18729469519422e-12,
-1.9478525906235883e-13,
-4.0061245206527073e-22,
-4.3738340299251987e-23,
-1.3241770202314308e-30,
-6.648679166549529e-39,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 5.4e-17,
"rel": 0.0
}
},
{
"variable": "pidep_final",
"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.8279597230344947e-10,
-2.648063705252813e-09,
-6.920367127066037e-09,
-1.4510362244478021e-08,
-2.5261130469725802e-08,
-4.0691688819877817e-08,
-5.471575791323307e-08,
-5.6988542680724964e-08,
-4.1549869845510815e-08,
-1.0211500995682506e-09,
-1.241344707749929e-09,
-2.0128100740079278e-09,
-4.484380433709463e-09,
-3.2248098685964062e-09,
-1.9168387834679925e-09,
-1.0476987280369746e-09,
-4.6179625910961915e-10,
-3.3521401114798617e-10,
-5.583655548756681e-12,
-3.0486640913341355e-15,
-9.974322662725603e-12,
-2.3165986266812572e-14,
-2.951159181748888e-16,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 5.7e-17,
"rel": 0.0
}
},
{
"variable": "pigen_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "psaut_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pgaut_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "psevp_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pgevp_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "dqv_dt",
"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": [
1.4847396315881278e-11,
2.651666451084639e-09,
-1.5030860810924067e-09,
-6.659976577461553e-09,
-8.628847185387922e-09,
4.018654448137484e-08,
3.242423367321035e-07,
3.9960402864881554e-07,
4.889322927677112e-07,
5.155653537788516e-07,
3.1221144946423613e-07,
4.554815096154636e-08,
5.782303219606435e-08,
6.704010880591376e-08,
6.870064614883289e-08,
6.809642270293843e-08,
6.479869702644455e-08,
5.3917208215848465e-08,
3.556810816698866e-08,
2.5618667097878332e-08,
1.9806030456296363e-08,
1.3917440733762058e-08,
6.626924514236715e-09,
2.0542996057035275e-09,
3.729135235649628e-10,
2.060891173631652e-11,
2.64031750123649e-10,
5.192429513835523e-11,
8.284473687909647e-12,
1.950803749225724e-13,
5.646886315028669e-22,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 5.2e-16,
"rel": 0.0
}
},
{
"variable": "dT_dt",
"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": [
-3.568885631466401e-08,
-6.400803035451948e-06,
3.6450311048004855e-06,
1.623528126989034e-05,
2.1147617516703576e-05,
-9.895205333047367e-05,
-0.0008015327450863197,
-0.0009957085996082544,
-0.0012304615075085696,
-0.0013071694225506765,
-0.0007906123527969081,
-0.00012505541480815433,
-0.00016222392827340096,
-0.00018983080399218957,
-0.00019362019827440236,
-0.00019305273551850632,
-0.00018379715948195022,
-0.00015293951519150065,
-0.0001008960971304873,
-7.267649470795352e-05,
-5.618904592097351e-05,
-3.948442038866536e-05,
-1.880128008006447e-05,
-5.828351850330667e-06,
-1.0580186634949011e-06,
-5.847098568286432e-08,
-7.491011970728323e-07,
-1.4731735120676603e-07,
-2.35042871092143e-08,
-5.534701585929724e-10,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1.3e-12,
"rel": 0.0
}
},
{
"variable": "qv_upd",
"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.013983463115344983,
0.014053598201332671,
0.013369659551310647,
0.011300207289732269,
0.00930742157450934,
0.007137112132909578,
0.005174519336499953,
0.0046212457667134605,
0.0036890009368045133,
0.0027261262377726776,
0.0020072349010916957,
0.0014644047556969517,
0.0011075970661795819,
0.0008664660786506953,
0.0006684812960077728,
0.00045419054522686744,
0.0002939063879695311,
0.000242830791802086,
0.00020264193388547136,
0.00015822329466422787,
0.00011206751835692685,
7.855625577120723e-05,
5.371751155209273e-05,
3.557523515668516e-05,
2.671693280086745e-05,
2.6259607618028057e-05,
2.9074367986824978e-05,
3.1935452258399186e-05,
3.502686859656187e-05,
3.853053437880379e-05,
4.2448635213077075e-05,
4.679965786635876e-05,
5.1596864068415016e-05,
5.686127406079322e-05,
6.263859540922567e-05,
6.900977314217016e-05,
7.609080785186961e-05,
8.403504034504294e-05,
9.302458056481555e-05,
0.00010317486885469407
]
},
"k"
]
}
},
"tolerance": {
"abs": 1.4e-14,
"rel": 0.0
}
},
{
"variable": "T_upd",
"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": [
297.54568438618685,
293.0756067841136,
288.83524881849826,
285.14017895423365,
281.24137315299623,
278.1868307496908,
275.74204496708313,
272.8141013697076,
269.85098988987414,
266.42952163387326,
262.65754074898877,
258.9836679225227,
255.25372975183703,
251.46840990576447,
247.74798570441232,
244.28805818442515,
241.0751718325555,
237.72492566047225,
234.2652229632092,
230.84637217604563,
227.5440645009811,
224.34403912640846,
221.1635317088578,
217.89256921993405,
215.6752497549479,
215.15846182276223,
215.4019838086372,
215.79862799293397,
216.30244417595637,
216.8537445001943,
217.41697692871094,
217.9737091064453,
218.4553680419922,
218.77813720703125,
218.92938232421875,
218.9575653076172,
218.93128967285156,
218.90538024902344,
218.904052734375,
218.9106903076172
]
},
"k"
]
}
},
"tolerance": {
"abs": 3e-10,
"rel": 0.0
}
},
{
"variable": "qc_upd",
"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,
1.195573088839087e-10,
7.224533089611979e-05,
0.0002601590388648294,
0.00025185688487203985,
2.2460620304561684e-06,
4.345378060414751e-05,
6.545303561564082e-05,
6.55924928629731e-05,
4.939526400881287e-05,
3.165394079751144e-05,
1.8499513506748787e-05,
5.763345491922721e-06,
8.583815774687375e-07,
1.7437905806228355e-07,
4.953166405416902e-07,
4.713450634743351e-08,
1.4192581933029462e-07,
6.872780773186928e-08,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 2.6e-16,
"rel": 0.0
}
},
{
"variable": "qi_upd",
"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.3893272071583987e-12,
6.617444900424222e-24,
0.0,
7.85902682010351e-08,
5.400117967470443e-07,
1.3316146355363806e-06,
2.987382133347308e-06,
4.84937153734593e-06,
3.548732046936535e-06,
0.0,
6.767010941133517e-09,
1.3141289025687607e-07,
1.5166194895712724e-06,
1.3866448571357806e-06,
8.162512955015707e-07,
3.59422143902268e-07,
1.0733561388623676e-07,
6.898516593666001e-08,
0.0,
0.0,
2.5849394142282115e-26,
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": 4.8e-18,
"rel": 0.0
}
},
{
"variable": "qr_upd",
"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,
1.195706559940695e-07,
1.2847340001838332e-05,
3.1683236604319356e-05,
3.61615257649281e-05,
3.7936680967870983e-05,
0.00019742670411350565,
0.00033320188700366316,
0.0003476306385269966,
0.00029650507588766916,
0.00015803798477059987,
1.033927636444795e-06,
2.8407732144435175e-07,
6.994107699572241e-09,
3.522680902871055e-07,
2.1900268643403343e-10,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 3.5e-16,
"rel": 0.0
}
},
{
"variable": "qs_upd",
"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.461319943486977e-08,
1.6654254701385966e-07,
1.9981291074285493e-08,
2.5062802878571353e-09,
1.650110477251297e-08,
5.671747255546913e-08,
6.278002193283422e-08,
1.5091295028414059e-06,
3.5050089093197773e-06,
4.094801130446636e-06,
4.098367888435288e-06,
3.879981238085695e-06,
2.7811660626485626e-06,
1.534994137277627e-06,
3.679215287594411e-07,
2.50793150629892e-08,
0.0,
0.0,
2.0083945272787512e-21,
0.0,
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": 4.1e-18,
"rel": 0.0
}
},
{
"variable": "qg_upd",
"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.432137418481369e-06,
1.3606208691228679e-05,
2.1093342620973886e-05,
3.6344518748395264e-07,
7.644871683700548e-07,
1.5441650679743782e-06,
1.9524131938332403e-06,
1.1466352363546917e-06,
5.731363520032083e-07,
1.7770415927109727e-05,
1.9530859723724873e-05,
1.196310224510659e-05,
2.235287264018116e-06,
2.591288001700734e-06,
5.031262164190033e-06,
2.5503154908674465e-06,
7.786740056600079e-07,
1.310157896115895e-08,
1.09282148127802e-09,
6.878044808622507e-09,
4.235356341635621e-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": 2.1e-17,
"rel": 0.0
}
},
{
"variable": "f_qi",
"time": 0.0,
"coords": {
"lev": 8
},
"expected": 0.9737858004092199,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qi",
"time": 0.0,
"coords": {
"lev": 9
},
"expected": 0.9694735360445228,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qi",
"time": 0.0,
"coords": {
"lev": 10
},
"expected": 0.9707713304609259,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qs",
"time": 0.0,
"coords": {
"lev": 8
},
"expected": 0.97364738261015,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qs",
"time": 0.0,
"coords": {
"lev": 9
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qr",
"time": 0.0,
"coords": {
"lev": 8
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qr",
"time": 0.0,
"coords": {
"lev": 9
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qg",
"time": 0.0,
"coords": {
"lev": 8
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qg",
"time": 0.0,
"coords": {
"lev": 9
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
}
]
},
{
"id": "qss_step250_row23_col24_mature_storm_update",
"description": "Reference: WRF 4.8 em_quarter_ss idealized supercell (GNU real32 build, dx = 2 km, dt = 12 s, 40 layers, WSM6 only), step 250 (t = 50 min), row j = 23, column i = 24 dumped by the instrumented ctessum-claude/WRF fork (module_esm_dump with the 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 (dtcld = 12 s). POINTWISE in the sense of EqWeFiC FORTRAN_BUGS.md N3: the mass-conservation rescaling and the update it feeds are dtcld-dependent by construction (every factor is 1 in the dtcld -> 0 limit), so the test compares them at the kernel's own sub-step instead of replaying at a small dt. Inputs are the state at which the kernel evaluates its rates (t_rates, q/qc/qi/qr/qs/qg_rates, i.e. after the sub-step's sedimentation, melting and freezing), the start-of-sub-step xl and cpm (note N4) and the 22 dumped `<rate>_raw` rates (each after its own per-process limiter, before this block); the expected values are the dumped `<rate>_final` rates, the dumped `*_upd` state and the tendencies (q_upd - q_rates)/dtcld and (t_upd - t_rates)/dtcld from the same replay. The conservation factors are read back from the dump as the ratio of a rate that carries exactly ONE factor (prevp -> f_qr, pidep -> f_qi, psdep -> f_qs, pgdep -> f_qg). This block contains no physical constant beyond T0, xls, qmin, qcrmin and the 1e-4 kg/kg partition threshold, and every input is dumped, so the real64 replay is reproduced to machine precision. Regime: the mature storm core, the same column as the warm_rain, cold_accretion and ice_deposition tests -- cloud water 2.3e-3, rain 1.2e-2, cloud ice 3.9e-4, snow 2.1e-3 and graupel 1.1e-2 kg/kg, freezing level at layer 9, 8 layers above 0 C. NO budget is overdrawn here (every factor is 1 to within 1e-16), so this regime tests the other half of the block: the update itself in both branches -- the ice branch with all five species and the delta2/delta3 partition of piacr, praci, psacr and pracs between snow and graupel, and, in the 8 lowest layers, the warm branch in which cloud ice is untouched, the accreted cloud water becomes rain (paacw enters qr twice) and the latent heating is vaporization plus the fusion of the melting terms only. Residual (esm vs the real64 replay, measured with zero tolerances): all 22 `<rate>_final` columns, the switches and six of the seven updated fields are reproduced EXACTLY (0.0); nonzero only in qc_upd 1.1e-19 kg/kg (5.7e-17 of the column maximum), dqv_dt 7.0e-20 kg/kg/s (4.1e-15 of the column maximum) and dT_dt 2.3e-15 K/s (1.9e-14 of the column maximum). Tolerances are set at 1e-9 of each rate column's maximum, 1e-12 of each updated field's maximum and rel 1e-12 on the factor spot checks; the switches keep zero tolerance.",
"parameter_overrides": {
"dtcld": 12.0
},
"expression_template_imports": [
{
"ref": "./tests/qss_step250_row23_col24_mature_storm_update_inputs.esm"
}
],
"time_span": {
"start": 0.0,
"end": 1.0
},
"assertions": [
{
"variable": "cold",
"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.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "delta3",
"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": [
1.0,
1.0,
1.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "delta2",
"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": [
1.0,
1.0,
1.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "prevp_final",
"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": [
-1.919336376612395e-08,
-5.046321260634071e-09,
2.72013353462863e-08,
1.9365009457152554e-07,
4.049782907551879e-07,
6.894363749532956e-07,
1.0755427116322918e-06,
1.5630348696389676e-06,
2.0883337312921383e-06,
2.6345260559294498e-06,
3.1747321039452112e-06,
3.34692873339902e-06,
1.5919515457107215e-06,
4.817579702512617e-07,
1.9406031082072022e-08,
3.774408074586362e-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
]
},
"k"
]
}
},
"tolerance": {
"abs": 3.3e-15,
"rel": 0.0
}
},
{
"variable": "praut_final",
"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,
1.9357958410801186e-07,
1.5774301493694098e-06,
3.3410524737266776e-06,
4.5624024655531545e-06,
4.776001900199129e-06,
3.925067850146925e-06,
2.668110856689126e-06,
1.6133035731154066e-06,
8.784625818746462e-07,
6.284418778649147e-07,
3.302129684531748e-07,
1.7435399076357076e-07,
1.745086051384306e-07,
1.9620485800765876e-07,
1.9953221741739934e-07,
1.6882265722717114e-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,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 4.8e-15,
"rel": 0.0
}
},
{
"variable": "pracw_final",
"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": [
3.712819835883861e-15,
1.786532330414269e-12,
1.8341137124693437e-07,
4.800049279886456e-06,
1.3777336674382236e-05,
2.4946501079627984e-05,
3.7812017892275785e-05,
4.911112058600663e-05,
5.459983662964868e-05,
5.5146213362748744e-05,
5.142366138469022e-05,
4.187624920846814e-05,
1.0932496007256233e-05,
2.16952438039549e-06,
1.5502256262088853e-08,
1.1976954087040937e-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
]
},
"k"
]
}
},
"tolerance": {
"abs": 5.5e-14,
"rel": 0.0
}
},
{
"variable": "paacw_final",
"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,
1.4556137326140967e-21,
6.474424433135573e-14,
4.53986580509129e-12,
9.056177974370575e-10,
1.5924417224955671e-06,
1.1426845758687226e-05,
1.3563888687542648e-05,
1.4012909443501124e-05,
1.4694771918424788e-05,
1.3992088984433094e-05,
1.2615216277536616e-05,
1.0380753415058703e-05,
7.85861818441924e-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,
0.0,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1.5e-14,
"rel": 0.0
}
},
{
"variable": "praci_final",
"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.7742779547889016e-08,
5.2382123851688705e-08,
8.633719130029905e-08,
1.287084015752049e-07,
1.0384242305687417e-07,
5.1200057112345464e-08,
1.0501429310278737e-09,
5.447637515036745e-13,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 1.3e-16,
"rel": 0.0
}
},
{
"variable": "piacr_final",
"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.6864174216429474e-12,
7.79423122522383e-12,
1.6326338838155124e-11,
5.2258939915413226e-11,
4.706499221933182e-10,
2.062412355542352e-09,
1.6532004761700903e-08,
2.2812468574407131e-10,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 1.7e-17,
"rel": 0.0
}
},
{
"variable": "psaci_final",
"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.339835454639444e-12,
2.4106617193676473e-11,
6.638244337634433e-11,
3.428058574008553e-10,
8.446006305846094e-09,
2.665202947460932e-08,
6.289731382809265e-08,
1.31229141504122e-07,
2.395131840509679e-07,
4.2908049060317376e-07,
7.372017308606025e-07,
1.6739087658603757e-06,
5.032118617131792e-06,
4.118301737381418e-06,
3.4488400414139816e-06,
3.0444491211844277e-06,
2.646873879998877e-06,
1.972396437567465e-06,
1.4131207930606903e-06,
7.634808242932739e-07,
1.756231001760978e-07,
3.4129810707218883e-09,
1.1076622760351909e-16,
3.2898264657288943e-19,
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": "pgaci_final",
"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.470982207727957e-11,
9.026321917318153e-11,
3.821256516850523e-10,
3.6193921737600494e-09,
3.288552589997903e-08,
6.639779741698793e-08,
9.0927856804158e-08,
1.2208262057958115e-07,
1.501529200206558e-07,
1.894299127078329e-07,
2.3217751494915538e-07,
3.718096361221166e-07,
7.669520708033682e-07,
4.3899429126914413e-07,
2.653686348620898e-07,
1.6549109775712073e-07,
1.0195838504869484e-07,
5.416063036039372e-08,
2.781136798327825e-08,
1.0763953452650221e-08,
2.0061039405410337e-09,
5.741101514373344e-11,
1.2226108773459104e-17,
4.321414834537579e-20,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 7.7e-16,
"rel": 0.0
}
},
{
"variable": "pracs_final",
"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.923515715746202e-09,
1.1524362441532116e-08,
2.3465029520851334e-08,
8.686132885783782e-08,
4.06555603256008e-06,
3.6488848323555907e-06,
5.988025005841963e-10,
1.0356973424941688e-12,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 4.1e-15,
"rel": 0.0
}
},
{
"variable": "psacr_final",
"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.3534168348208638e-14,
6.764179035644899e-14,
2.8295612412106983e-13,
7.37013701667065e-12,
1.03121197873361e-07,
1.342289884098848e-06,
1.1443426277640317e-07,
9.725981247282894e-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
]
},
"k"
]
}
},
"tolerance": {
"abs": 1.3e-15,
"rel": 0.0
}
},
{
"variable": "pgacr_final",
"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,
8.30136207033696e-17,
4.5337243169982624e-11,
8.90146163302038e-10,
3.793556240769671e-08,
9.984931457767396e-06,
0.0003240617047759342,
3.102904369910376e-05,
1.5084787511794335e-07,
1.0542515388160218e-08,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 3.2e-13,
"rel": 0.0
}
},
{
"variable": "pgacs_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pseml_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pgeml_final",
"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,
-1.5309678351649967e-18,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 1.5e-27,
"rel": 0.0
}
},
{
"variable": "psdep_final",
"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": 4.2e-15,
"rel": 0.0
}
},
{
"variable": "pgdep_final",
"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": 3.8e-15,
"rel": 0.0
}
},
{
"variable": "pidep_final",
"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.39710984675058e-12,
0.0,
-1.4823807253158012e-19,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 3.1e-15,
"rel": 0.0
}
},
{
"variable": "pigen_final",
"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": 1.1e-14,
"rel": 0.0
}
},
{
"variable": "psaut_final",
"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": 1.5e-14,
"rel": 0.0
}
},
{
"variable": "pgaut_final",
"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": 3.8e-17,
"rel": 0.0
}
},
{
"variable": "psevp_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pgevp_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "dqv_dt",
"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": [
1.9193363766089693e-08,
5.04632126059959e-09,
-2.720133534635354e-08,
-1.9365009457153007e-07,
-4.049782907551182e-07,
-6.894363749532865e-07,
-1.0755427116322658e-06,
-1.5630348696390034e-06,
-2.149456377808492e-06,
-2.7323802168465147e-06,
-3.399746458103512e-06,
-4.204350063740422e-06,
-4.783096787607183e-06,
-4.665778325353293e-06,
-5.678634928687381e-06,
-6.834102438975538e-06,
-7.6610676248952e-06,
-8.840652828396515e-06,
-1.0618298672987781e-05,
-1.1228228418987888e-05,
-8.915662917079612e-06,
-1.687401154396062e-05,
-6.942470841101491e-06,
-2.912771086034471e-06,
-1.1567513738690897e-06,
-1.0556585552006395e-06,
-4.0030257040494883e-07,
-1.7772032566903315e-07,
-1.3244891808233003e-07,
7.665402459997207e-09,
8.360251901287362e-10,
1.7764718940256458e-10,
5.646886315028669e-22,
4.551390369913107e-19,
3.7721200584391507e-19,
0.0,
0.0,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1.7e-14,
"rel": 0.0
}
},
{
"variable": "dT_dt",
"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": [
-4.613604928730789e-05,
-1.2193305764185425e-05,
6.596971028708747e-05,
0.000471204173460175,
0.0009889351781329954,
0.0016897924894578864,
0.0026457057215054647,
0.003858641902117673,
0.005346225552514738,
0.006827205478794933,
0.008570578036203832,
0.015039580645596592,
0.1221896375676863,
0.03153987148187317,
0.024640381755908436,
0.02802245346299988,
0.02972669234707581,
0.032072152436117086,
0.03569118583006059,
0.03592646878536717,
0.02528311374040726,
0.04786070820937264,
0.019694192400040816,
0.008263482564466074,
0.0032818179538480763,
0.00299505402406434,
0.0011357325883996812,
0.0005042289359901512,
0.0003757846726178589,
-2.1747873608054153e-05,
-2.371916188792511e-06,
-5.040068226473219e-07,
0.0,
-2.3684757858670005e-15,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1.2e-10,
"rel": 0.0
}
},
{
"variable": "qv_upd",
"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.013846929468781712,
0.014315361176947447,
0.013586747938266806,
0.012483530526543822,
0.011288834637456434,
0.010100103616668571,
0.008995324128944673,
0.00796552882441988,
0.006995853470134923,
0.00606365320178235,
0.005224457104171869,
0.004337768873130808,
0.0037672403428432285,
0.003335652317895243,
0.0028141786773559574,
0.0022814942156721453,
0.0017838999818040916,
0.0013531790400671225,
0.000982509822008267,
0.0006829070075836849,
0.0004920747555298259,
0.0001660910358643979,
0.00011123353671478709,
6.988452865904442e-05,
4.231984800555517e-05,
2.505321183266298e-05,
1.500512737996692e-05,
9.556008285669237e-06,
1.0146409744070776e-05,
3.602801224554805e-05,
4.106390282050772e-05,
4.628168599247572e-05,
5.233629053691403e-05,
5.885793143534648e-05,
6.558828317793539e-05,
7.24658602848649e-05,
7.955444016261026e-05,
8.704032370587811e-05,
9.51660840655677e-05,
0.00010392525291536003
]
},
"k"
]
}
},
"tolerance": {
"abs": 1.4e-14,
"rel": 0.0
}
},
{
"variable": "T_upd",
"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": [
297.6464800588148,
291.80896622915895,
288.55712708571696,
286.0400172334059,
283.3370920405496,
280.4818560567529,
277.6171982322135,
274.7368026140102,
271.817145349382,
268.78577390546326,
265.77119862441424,
262.33396717248183,
260.75597800862414,
257.807397477229,
254.22998113146232,
250.77661200323698,
247.26537574317737,
243.59022047554822,
239.80101364015155,
235.8868173124939,
231.70499308766682,
227.86441126668973,
223.66682747427637,
219.31342571902886,
214.91752512599305,
210.58119821664815,
206.47607691117798,
202.9432150538725,
202.85935255571985,
211.37560877649327,
214.5903188270448,
216.9422699528947,
219.01785278320312,
220.38127136230466,
221.00733947753906,
221.05303955078125,
220.74871826171875,
220.28884887695312,
219.79849243164062,
219.2654571533203
]
},
"k"
]
}
},
"tolerance": {
"abs": 3e-10,
"rel": 0.0
}
},
{
"variable": "qc_upd",
"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": [
5.176554401468464e-10,
9.128313973237867e-08,
0.0005800859150733688,
0.0013600624429632908,
0.0017761937206108242,
0.0019105858383725216,
0.0017984831637593336,
0.001486828118689324,
0.0011123040352274416,
0.0007693896311976969,
0.0004901914401670894,
0.00042009196323497555,
0.0003255681481436144,
0.00020532119797943575,
0.00022060349713697426,
0.00023295122814483014,
0.00025404306557644333,
0.0002465198649171501,
0.00022288181711408649,
0.00018509251097843224,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 1.9e-15,
"rel": 0.0
}
},
{
"variable": "qi_upd",
"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,
7.280923404197918e-07,
9.078029814094707e-07,
1.3712027871880768e-06,
2.4798142933811704e-06,
4.876341737133661e-06,
7.072455236412034e-06,
1.30340145555152e-05,
2.1656973153420725e-05,
3.566125405850054e-05,
5.991293303470128e-05,
0.00010249235044961705,
0.00017543762153908194,
0.00018075019431337705,
0.00032209893832622563,
0.000250231459911477,
0.00023242059326735197,
0.00021013585063202537,
0.00017174319856708286,
0.00013655018426351115,
9.836733295556986e-05,
5.231617973793404e-05,
6.21057969394643e-06,
1.7143657237314654e-09,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 3.2e-16,
"rel": 0.0
}
},
{
"variable": "qr_upd",
"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": [
6.935495148840638e-07,
2.654354415463728e-06,
5.6527989662491093e-05,
0.0007186003794819086,
0.0016297774186102504,
0.0027260858457740307,
0.004204245372090981,
0.006087685025055615,
0.008128878484091436,
0.010360057741685445,
0.012762909355317568,
0.012053645814551277,
0.00015301282408349557,
0.0006157118862328321,
4.6126785511819195e-06,
2.528257519355897e-06,
2.394386609008792e-06,
2.0258718867260536e-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,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1.3e-14,
"rel": 0.0
}
},
{
"variable": "qs_upd",
"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.4077561720853614e-08,
6.443540026672282e-08,
9.706954867750183e-08,
1.9458392909230754e-05,
0.00016100472232373497,
0.00034740917826705565,
0.0006196972814865435,
0.0008875916562909563,
0.0011315816926212763,
0.0013545832586068808,
0.0015289810761287648,
0.0016478778426645367,
0.0020006183627235274,
0.0021119850394106282,
0.002145806403907096,
0.00214125058118718,
0.0020892172793427295,
0.0020167633436014676,
0.0018320025958034128,
0.0013122185784176564,
0.00043834522195324363,
4.1783753216450335e-05,
1.329194731329531e-15,
3.94779164491777e-18,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 2.1e-15,
"rel": 0.0
}
},
{
"variable": "qg_upd",
"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,
7.973985470506145e-09,
3.4033017360958177e-06,
1.2978645820871055e-05,
6.85986893770123e-05,
0.0009407982484787769,
0.009841854529668528,
0.010143454226116797,
0.010478044332109438,
0.010859305404959697,
0.010625878481750761,
0.010589878525960161,
0.01040382460660208,
0.01011201209164482,
0.00967261891165728,
0.00920660440897916,
0.008695973849093942,
0.008138239781772172,
0.0075407660133951235,
0.0068856056327572645,
0.005979865004221355,
0.004130536701353068,
0.0013393802827322012,
0.00012726509559819404,
5.700975161742019e-08,
4.511128204689531e-09,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1.1e-14,
"rel": 0.0
}
},
{
"variable": "f_qr",
"time": 0.0,
"coords": {
"lev": 10
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qr",
"time": 0.0,
"coords": {
"lev": 20
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qi",
"time": 0.0,
"coords": {
"lev": 10
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qi",
"time": 0.0,
"coords": {
"lev": 20
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qs",
"time": 0.0,
"coords": {
"lev": 10
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qs",
"time": 0.0,
"coords": {
"lev": 20
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qg",
"time": 0.0,
"coords": {
"lev": 10
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qg",
"time": 0.0,
"coords": {
"lev": 20
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
}
]
},
{
"id": "scm_call120_cirrus_ice_layers_20_to_59",
"description": "Reference: WRF 4.8 em_scm_xy single-column case (GNU real32 build, dt = 60 s, 59 layers, full physics suite: RRTM, Dudhia, sfclayrev, slab, YSU, WSM6), microphysics call 120 (t = 2 h) dumped by the instrumented ctessum-claude/WRF fork (module_esm_dump with the 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 (dtcld = 60 s). POINTWISE in the sense of EqWeFiC FORTRAN_BUGS.md N3: the mass-conservation rescaling and the update it feeds are dtcld-dependent by construction (every factor is 1 in the dtcld -> 0 limit), so the test compares them at the kernel's own sub-step instead of replaying at a small dt. Inputs are the state at which the kernel evaluates its rates (t_rates, q/qc/qi/qr/qs/qg_rates, i.e. after the sub-step's sedimentation, melting and freezing), the start-of-sub-step xl and cpm (note N4) and the 22 dumped `<rate>_raw` rates (each after its own per-process limiter, before this block); the expected values are the dumped `<rate>_final` rates, the dumped `*_upd` state and the tendencies (q_upd - q_rates)/dtcld and (t_upd - t_rates)/dtcld from the same replay. The conservation factors are read back from the dump as the ratio of a rate that carries exactly ONE factor (prevp -> f_qr, pidep -> f_qi, psdep -> f_qs, pgdep -> f_qg). This block contains no physical constant beyond T0, xls, qmin, qcrmin and the 1e-4 kg/kg partition threshold, and every input is dumped, so the real64 replay is reproduced to machine precision. Regime: the SCM's thin cirrus layer, levels 20 to 59 of the 59-layer column (an esm-spec 6.6 test cannot rebind the metaparameter NLEV, format gap (j), so the window is taken as the component's 40 levels). Cloud ice reaches 4.5e-5 kg/kg near level 53 and is the only condensate: pidep and pigen are the only nonzero rates, no budget is overdrawn (all eight factors are exactly 1) and the warm branch covers the lower part of the window. The regime pins the identity path -- the rescaling must not perturb rates it does not limit -- and the pure deposition/nucleation update of a cold cirrus layer, four orders of magnitude below the supercell rates. Residual (esm vs the real64 replay, measured with zero tolerances): all 22 `<rate>_final` columns, the switches and all seven updated fields are reproduced EXACTLY (0.0); nonzero only in dqv_dt 2.1e-19 kg/kg/s (6.2e-12 of the column maximum) and dT_dt 1.7e-16 K/s (1.8e-12 of the column maximum). Tolerances are set at 1e-9 of each rate column's maximum, 1e-12 of each updated field's maximum and rel 1e-12 on the factor spot checks; the switches keep zero tolerance.",
"parameter_overrides": {
"dtcld": 60.0
},
"expression_template_imports": [
{
"ref": "./tests/scm_call120_cirrus_ice_layers_20_to_59_inputs.esm"
}
],
"time_span": {
"start": 0.0,
"end": 1.0
},
"assertions": [
{
"variable": "cold",
"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.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "delta3",
"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": [
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "delta2",
"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": [
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "prevp_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "praut_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pracw_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "paacw_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "praci_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "piacr_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "psaci_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pgaci_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pracs_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "psacr_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pgacr_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pgacs_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pseml_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pgeml_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "psdep_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pgdep_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pidep_final",
"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": 3.3e-17,
"rel": 0.0
}
},
{
"variable": "pigen_final",
"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": 1.2e-18,
"rel": 0.0
}
},
{
"variable": "psaut_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pgaut_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "psevp_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "pgevp_final",
"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.0,
"rel": 0.0
}
},
{
"variable": "dqv_dt",
"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,
7.228014483236696e-21,
6.34966164572472e-16,
1.8731847989340767e-09,
3.299721233604687e-08,
2.1763614874464498e-08,
6.772874508939055e-10,
-1.2969892307259124e-09,
-6.248465901216499e-10,
6.660638751178201e-12,
2.700355988886375e-12,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 3.3e-17,
"rel": 0.0
}
},
{
"variable": "dT_dt",
"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,
-1.8014626827304407e-12,
-5.314210048368295e-06,
-9.361079758321011e-05,
-6.173930783290871e-05,
-1.9214168948640994e-06,
3.679622269695907e-06,
1.7727687283771351e-06,
-1.889739612200477e-08,
-7.66146068068944e-09,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 9.4e-14,
"rel": 0.0
}
},
{
"variable": "qv_upd",
"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.001432699616998434,
0.0016770724905654788,
0.001927630277350545,
0.002184529323130846,
0.002447942504659295,
0.0027180099859833717,
0.002994028152897954,
0.0029144608415663242,
0.002825165167450905,
0.0027336112689226866,
0.0026397379115223885,
0.002543484093621373,
0.002444799290969968,
0.0023436129558831453,
0.002239867812022567,
0.002133494708687067,
0.002024371176958084,
0.0018535359995439649,
0.001661421381868422,
0.001452375785447657,
0.0013129577273502946,
0.00115162692964077,
0.0009849804919213057,
0.0008140624267980456,
0.0006388135952875018,
0.0004591723845805973,
0.0002762076910585165,
0.00011139810521854088,
0.00010000237671192779,
0.0001000000557195464,
0.0001012925416107865,
0.00012897979569867005,
0.0001776807629148741,
0.00012736442397513772,
7.698719556681953e-05,
4.4581900906009745e-05,
2.4272006527994854e-05,
1.2013428335529656e-05,
5.214398697717115e-06,
1.967234538824414e-06
]
},
"k"
]
}
},
"tolerance": {
"abs": 3e-15,
"rel": 0.0
}
},
{
"variable": "T_upd",
"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": [
279.0183410644531,
278.81353759765625,
278.5884704589844,
278.342529296875,
278.0738220214844,
277.77960205078125,
277.45892333984375,
277.07861328125,
276.6678161621094,
276.22442626953125,
275.74554443359375,
275.22998046875,
274.6733093261719,
274.072509765625,
273.4240417480469,
272.7232360839844,
271.9638366699219,
270.9003601074219,
269.6949157714844,
268.2908935546875,
266.2558898925781,
264.1224060058594,
261.8860778808594,
259.541259765625,
257.0771484375,
254.4850616455078,
251.7567596435547,
248.89027404785156,
245.86920166015625,
242.66932678211847,
239.27133336907679,
235.6024155787075,
231.98347825871753,
227.92728339662693,
223.2039103525315,
218.3154139833112,
213.13450509174217,
207.46675063894517,
201.19952392578125,
194.2137451171875
]
},
"k"
]
}
},
"tolerance": {
"abs": 2.8e-10,
"rel": 0.0
}
},
{
"variable": "qc_upd",
"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.0,
"rel": 0.0
}
},
{
"variable": "qi_upd",
"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,
3.6795617332364754e-06,
4.010729541923464e-05,
4.525846140048807e-05,
2.6512511150352628e-05,
1.2858055758029373e-05,
4.4286462620284744e-06,
1.2715405820756414e-06,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 4.5e-17,
"rel": 0.0
}
},
{
"variable": "qr_upd",
"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.0,
"rel": 0.0
}
},
{
"variable": "qs_upd",
"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.0,
"rel": 0.0
}
},
{
"variable": "qg_upd",
"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.0,
"rel": 0.0
}
},
{
"variable": "f_qi",
"time": 0.0,
"coords": {
"lev": 30
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qi",
"time": 0.0,
"coords": {
"lev": 34
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qr",
"time": 0.0,
"coords": {
"lev": 30
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qr",
"time": 0.0,
"coords": {
"lev": 34
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qs",
"time": 0.0,
"coords": {
"lev": 30
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qs",
"time": 0.0,
"coords": {
"lev": 34
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qg",
"time": 0.0,
"coords": {
"lev": 30
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
},
{
"variable": "f_qg",
"time": 0.0,
"coords": {
"lev": 34
},
"expected": 1.0,
"tolerance": {
"rel": 1e-12
}
}
]
}
]
}