DudhiaSW
The Dudhia (1989) shortwave radiation scheme of WRF (ra_sw_physics = 1, SUBROUTINE SWPARA of phys/module_ra_sw.F, WRF 4.8) as a single-column component on the EarthSciDiscretizations grids/column_nonuniform_1d grid (layer index `lev`, layer 1 at the surface; interface index `lev_nodes`, interface 1 the surface, interface NLEV+1 the top of the atmosphere). The scheme is a single downward pass of the direct solar beam S(z) that is depleted by four processes: absorption by water vapour, absorption by cloud, reflection by cloud, and Rayleigh/aerosol scattering. The first three are functions of CUMULATIVE slant paths from the top of the atmosphere, written here as the integrals W(z) = int_z^top rho q_l,eff dz (effective liquid water path, q_l,eff = qc + 0.1 qi + 0.05 qr + 0.02 qs + 0.05 qg) and U(z) = int_z^top rho qv dz (water-vapour path), lowered by the grid's integral_lev_nodes_cumulative_to_top rule: the vapour absorptance A_v(U/mu) is the Lacis-Hansen (1974) fit, the cloud reflectance R_c(mu, alw) and absorptance A_c(mu, alw) are Stephens (1978) tables in alw = log10(W/(mu 1 g/m^2) + 1), and a layer's fractional contribution is the downward increment of each cumulative function across the layer (SWPARA: TOTABS-OLDABS, ALBA-OLDALB, ABSC-OLDABC, clamped at 0). Scattering is a per-layer fraction cssca rho dz / mu. The beam itself is a genuinely sequential sweep, because SWPARA applies each layer's fraction not to S but to partial beams -- vapour absorption to the beam depleted only by cloud and scattering, cloud reflection and absorption to the beam depleted only by scattering and vapour -- which SWPARA bookkeeps with the running sums DABS, DSCLD, DSCA of the raw (unrenormalised) layer fluxes. The beam S and the two partial beams P_vap = SDOWN(1) - DSCLD - DSCA and P_cld = SDOWN(1) - DSCA - DABS are carried as three interleaved cells of ONE causal recurrence V_sweep (esm-spec 4.3.1.1), each step reading the previous triple at a fixed lag; one recurrence because the format forbids an edge between two distinct recurrence variables. The sweep runs top-down, i.e. against the lev index, and a recurrence folds only ascending, so the sweep variables live on the reversed index sets lev_down / lev_down_nodes / sweep (m = 1 the top layer, n = 1 the top of the atmosphere) and are mapped back by the reversal templates; all physics fields stay on lev / lev_nodes (lev_down: m = 1 the top layer, lev = NLEV + 1 - m; lev_down_nodes: n = 1 the top of the atmosphere, lev_nodes = NLEV + 2 - n; layer m lies between nodes m and m + 1). The heating rate is the applied (renormalised) vapour plus cloud absorption of each layer per unit volume, q_abs, divided by rho cp (SWPARA TTEN); the reflected and scattered parts leave the column without heating it, exactly as in SWPARA, and the surface absorbs (1 - albedo) S(surface). The theta tendency is dT/dt divided by the Exner function (SWRAD: RTHRATEN = RTHRATEN + TTEN1D/PI3D). Night: SWPARA returns all-zero when cos(zenith) <= 1e-9 or the top-of-atmosphere irradiance <= 1e-9 W/m^2; here the sweep is evaluated with the formal value mu = 1 at night (a near-zero mu would overflow the 1/mu slant paths) and the outputs gsw, dT/dt, dtheta/dt carry the factor `daylight`, so a night column yields exactly zero heating and surface flux while the internals are formal. Transcribed guards: negative increments clipped to 0, the table argument clamp alw_max, the renormalisation of a layer whose raw depletion exceeds 1 - tau_min (ff, tau; TRANS0 < 1: FF = 99/(...)), and the beam floor S_min (SDOWN = AMAX1(1.E-9, ...)). Not transcribed: the slope-dependent radiation option (slope_rad and its shadow correction of the surface flux) and the WRF-Chem aerosol optical depth terms (aer_dry1, aer_water1, zero without chemistry; the aerosol absorption XABSA is identically 0 in SWPARA). Reference tests: WRF v4.8.0 em_scm_xy single-column dumps from the instrumented fork ctessum-claude/WRF, commit e42a269 (v4.8.0-2-ge42a269e), replayed through that commit's real64 (-fdefault-real-8) standalone kernels/sw_driver; tolerances documented per test.
Description
The Dudhia (1989) shortwave radiation scheme of WRF (ra_sw_physics = 1, SUBROUTINE SWPARA of phys/module_ra_sw.F, WRF 4.8) as a single-column component on the EarthSciDiscretizations grids/column_nonuniform_1d grid (layer index lev, layer 1 at the surface; interface index lev_nodes, interface 1 the surface, interface NLEV+1 the top of the atmosphere). The scheme is a single downward pass of the direct solar beam S(z) that is depleted by four processes: absorption by water vapour, absorption by cloud, reflection by cloud, and Rayleigh/aerosol scattering. The first three are functions of CUMULATIVE slant paths from the top of the atmosphere, written here as the integrals W(z) = int_z^top rho q_l,eff dz (effective liquid water path, q_l,eff = qc + 0.1 qi + 0.05 qr + 0.02 qs + 0.05 qg) and U(z) = int_z^top rho qv dz (water-vapour path), lowered by the grid’s integral_lev_nodes_cumulative_to_top rule: the vapour absorptance A_v(U/mu) is the Lacis-Hansen (1974) fit, the cloud reflectance R_c(mu, alw) and absorptance A_c(mu, alw) are Stephens (1978) tables in alw = log10(W/(mu 1 g/m^2) + 1), and a layer’s fractional contribution is the downward increment of each cumulative function across the layer (SWPARA: TOTABS-OLDABS, ALBA-OLDALB, ABSC-OLDABC, clamped at 0). Scattering is a per-layer fraction cssca rho dz / mu. The beam itself is a genuinely sequential sweep, because SWPARA applies each layer’s fraction not to S but to partial beams – vapour absorption to the beam depleted only by cloud and scattering, cloud reflection and absorption to the beam depleted only by scattering and vapour – which SWPARA bookkeeps with the running sums DABS, DSCLD, DSCA of the raw (unrenormalised) layer fluxes. The beam S and the two partial beams P_vap = SDOWN(1) - DSCLD - DSCA and P_cld = SDOWN(1) - DSCA - DABS are carried as three interleaved cells of ONE causal recurrence V_sweep (esm-spec 4.3.1.1), each step reading the previous triple at a fixed lag; one recurrence because the format forbids an edge between two distinct recurrence variables. The sweep runs top-down, i.e. against the lev index, and a recurrence folds only ascending, so the sweep variables live on the reversed index sets lev_down / lev_down_nodes / sweep (m = 1 the top layer, n = 1 the top of the atmosphere) and are mapped back by the reversal templates; all physics fields stay on lev / lev_nodes (lev_down: m = 1 the top layer, lev = NLEV + 1 - m; lev_down_nodes: n = 1 the top of the atmosphere, lev_nodes = NLEV + 2 - n; layer m lies between nodes m and m + 1). The heating rate is the applied (renormalised) vapour plus cloud absorption of each layer per unit volume, q_abs, divided by rho cp (SWPARA TTEN); the reflected and scattered parts leave the column without heating it, exactly as in SWPARA, and the surface absorbs (1 - albedo) S(surface). The theta tendency is dT/dt divided by the Exner function (SWRAD: RTHRATEN = RTHRATEN + TTEN1D/PI3D). Night: SWPARA returns all-zero when cos(zenith) <= 1e-9 or the top-of-atmosphere irradiance <= 1e-9 W/m^2; here the sweep is evaluated with the formal value mu = 1 at night (a near-zero mu would overflow the 1/mu slant paths) and the outputs gsw, dT/dt, dtheta/dt carry the factor daylight, so a night column yields exactly zero heating and surface flux while the internals are formal. Transcribed guards: negative increments clipped to 0, the table argument clamp alw_max, the renormalisation of a layer whose raw depletion exceeds 1 - tau_min (ff, tau; TRANS0 < 1: FF = 99/(…)), and the beam floor S_min (SDOWN = AMAX1(1.E-9, …)). Not transcribed: the slope-dependent radiation option (slope_rad and its shadow correction of the surface flux) and the WRF-Chem aerosol optical depth terms (aer_dry1, aer_water1, zero without chemistry; the aerosol absorption XABSA is identically 0 in SWPARA). Reference tests: WRF v4.8.0 em_scm_xy single-column dumps from the instrumented fork ctessum-claude/WRF, commit e42a269 (v4.8.0-2-ge42a269e), replayed through that commit’s real64 (-fdefault-real-8) standalone kernels/sw_driver; tolerances documented per test.
Reference
- Dudhia, J. (1989). Numerical study of convection observed during the Winter Monsoon Experiment using a mesoscale two-dimensional model. J. Atmos. Sci. 46, 3077-3107.
- Lacis, A. A. and Hansen, J. E. (1974). A parameterization for the absorption of solar radiation in the Earth’s atmosphere. J. Atmos. Sci. 31, 118-133.
- Stephens, G. L. (1978). Radiation profiles in extended water clouds. II: Parameterization schemes. J. Atmos. Sci. 35, 2123-2132.
- Skamarock, W. C., et al. (2021). A Description of the Advanced Research WRF Model Version 4.3. NCAR Technical Note NCAR/TN-556+STR, section 8.3 (Dudhia shortwave).
- wrf-model/WRF v4.8.0 phys/module_ra_sw.F (SWRAD, SWPARA, swinit); instrumented copy in ctessum-claude/WRF branch earthsciml-instrumented.
Variables
| Name | Units | Default | Description |
|---|---|---|---|
T | K | Layer temperature (WRF t3d); the prognostic state, initialised from input_T and heated by dTdt. |
Parameters
| Name | Units | Default | Description |
|---|---|---|---|
p_in | Pa | 0.0 | Coupling target (assembly input path): a shaped parameter that receives the layer pressure (WRF p3d) from the column geometry (components/atmospheric_dynamics/wrf_arw/column_geometry.esm, output p) through a document-level coupling.variable_map (param_to_var); a mount-edge template library lowers this component’s input_p rewrite target to it (esm-spec 9.7.10, 10.4). Unused by this component’s own inline tests, which lower input_p to dumped constants instead. |
exner_in | 1 | 0.0 | Coupling target (assembly input path): a shaped parameter that receives the layer Exner function (WRF pi3d) from the column geometry (components/atmospheric_dynamics/wrf_arw/column_geometry.esm, output exner) through a document-level coupling.variable_map (param_to_var); a mount-edge template library lowers this component’s input_exner rewrite target to it (esm-spec 9.7.10, 10.4). Unused by this component’s own inline tests, which lower input_exner to dumped constants instead. |
ze_in | m | 0.0 | Coupling target (assembly input path): a shaped parameter that receives the interface heights above ground from the column geometry (components/atmospheric_dynamics/wrf_arw/column_geometry.esm, output z_w_agl) through a document-level coupling.variable_map (param_to_var); a mount-edge template library lowers this component’s input_ze rewrite target to it (esm-spec 9.7.10, 10.4). Unused by this component’s own inline tests, which lower input_ze to dumped constants instead. |
csza | 1 | 0.5 | Cosine of the solar zenith angle (WRF coszen). |
albedo | 1 | 0.2 | Surface albedo. |
solcon | W/m^2 | 1370.0 | Solar constant corrected for the Earth-Sun distance (WRF solcon). |
obscur | 1 | 0.0 | Solar-eclipse obscuration fraction (WRF obscur); 0 outside eclipses. |
cssca | m^2/kg | 1e-05 | Clear-sky (Rayleigh + background aerosol) scattering coefficient per unit air mass path, namelist swrad_scat * 1e-5 (swinit); 1e-5 m^2/kg for swrad_scat = 1. |
icloud | 1 | 1.0 | Cloud switch (namelist icloud): 0 drops the condensate from the effective liquid water path, any other value includes it with unit weight (SWPARA: IF (ICLOUD.EQ.0) XLWP = 0, ELSE the full path; WRF’s icloud = 1, 2 and 3 select the cloud fraction scheme elsewhere and all give the same path here). |
Observed
| Name | Units | Default | Description |
|---|---|---|---|
ze | m | Interface heights above ground, ze[1] = 0, consumer-supplied through input_ze (the cumulative sum of the WRF layer thicknesses dz8w); the grid’s single geometry input. | |
zc | m | Layer mid-point heights, grid-derived from ze. | |
dz | m | Layer thicknesses (WRF dz8w), grid-derived from ze; the measure of the column integrals and of the flux divergence. | |
z_top | m | Height of the top of the atmosphere, ze[NLEV+1]: the upper bound of the to-the-top integrals W and U, spelled as the free name the grid’s integral_lev_nodes_cumulative_to_top rule matches. | |
p | Pa | Layer pressure (WRF p3d), consumer-supplied through input_p. | |
exner | 1 | Exner function (WRF pi3d), consumer-supplied through input_exner; converts the temperature tendency to a theta tendency. | |
qv | kg/kg | Water-vapour mixing ratio (WRF qv3d), through input_qv. | |
qc | kg/kg | Cloud-water mixing ratio (WRF qc3d), through input_qc. | |
qr | kg/kg | Rain-water mixing ratio (WRF qr3d), through input_qr. | |
qi | kg/kg | Cloud-ice mixing ratio (WRF qi3d), through input_qi. | |
qs | kg/kg | Snow mixing ratio (WRF qs3d), through input_qs. | |
qg | kg/kg | Graupel mixing ratio (WRF qg3d), through input_qg. | |
rho | kg/m^3 | Dry-air density p/(r_d T) recomputed by the scheme (SWPARA RO). | |
soltop | W/m^2 | Top-of-atmosphere irradiance normal to the beam, solcon (1 - obscur) (SWPARA SOLTOP). | |
daylight | 1 | 1 when the scheme is active (csza > mu_min and soltop > soltop_min), 0 at night or total eclipse (SWPARA’s early return). | |
mu | 1 | Cosine of the solar zenith angle used in the slant paths: csza by day (SWPARA XMU = CSZA on the day branch) and the formal value 1 at night, so that every internal stays finite and benign when the outputs are masked (a value near WRF’s 1e-9 threshold would make the 1/mu slant paths overflow the sweep). | |
S_toa | W/m^2 | Downward solar flux on a horizontal surface at the top of the atmosphere, soltop mu (SWPARA SDOWN(1)). | |
lwc_eff | kg/m^3 | Effective condensed-water content rho (qc + w_ice qi + w_rain qr + w_snow qs + w_graupel qg), zero when icloud = 0; the integrand of the liquid water path (SWPARA XLWP / DZ, in kg/m^3 instead of g/m^3). | |
wvc | kg/m^3 | Water-vapour content rho qv, the integrand of the vapour path (SWPARA XWVP / DZ). | |
m_air | kg/m^2 | Air mass path of the layer rho dz (SWPARA XATP). | |
W | kg/m^2 | Effective liquid water path above each interface, W(z) = int_z^top lwc_eff dz (SWPARA WW at the bottom of each layer; 0 at the top of the atmosphere). | |
U | kg/m^2 | Water-vapour path above each interface, U(z) = int_z^top rho qv dz (SWPARA UV; 0 at the top). | |
alw | 1 | Stephens table argument log10(W/(mu w_ref) + 1) with the slant path in g/m^2, clamped at alw_max (SWPARA ALW). | |
R_cld | 1 | Cumulative cloud reflectance of the cloud above each interface, Stephens table at (mu, alw[kn]) (SWPARA ALBA / 100). Written as an explicit gather over lev_nodes because the closed function interp.bilinear is scalar and the runners do not broadcast it over an array argument. | |
A_cld | 1 | Cumulative cloud absorptance of the cloud above each interface (SWPARA ABSC / 100). | |
A_vap | 1 | Cumulative water-vapour absorptance of the vapour above each interface, Lacis-Hansen fit at the slant path U/(mu u_ref) in g/cm^2 (SWPARA TOTABS). | |
da_vap | 1 | Vapour absorptance increment across each layer, max(0, A_vap[k] - A_vap[k+1]) (SWPARA TOTABS - OLDABS, XABS >= 0). | |
dr_cld | 1 | Cloud reflectance increment across each layer, max(0, R_cld[k] - R_cld[k+1]) (SWPARA (ALBA - OLDALB)/100, XALB >= 0). | |
da_cld | 1 | Cloud absorptance increment across each layer, max(0, A_cld[k] - A_cld[k+1]) (SWPARA (ABSC - OLDABC)/100, XABSC >= 0). | |
f_cld | 1 | Total cloud depletion fraction of the layer, dr_cld + da_cld, applied to the beam depleted only by scattering and vapour (SWPARA (XALB + XABSC)/100 before the beam ratio). | |
f_sca | 1 | Rayleigh/aerosol scattering fraction of the layer, cssca m_air / mu (SWPARA XSCA). | |
a_dn | 1 | da_vap in sweep (top-down) order. | |
c_dn | 1 | f_cld in sweep order. | |
b_dn | 1 | da_cld in sweep order. | |
r_dn | 1 | dr_cld in sweep order. | |
s_dn | 1 | f_sca in sweep order. | |
V_sweep | W/m^2 | SWPARA’s downward pass as ONE causal recurrence (esm-spec 4.3.1.1) over the interleaved triple (S, P_vap, P_cld) of each top-down interface n: cell q = 3n - 2 holds the beam S_dn[n], q = 3n - 1 the partial beam P_vap_dn[n] that vapour absorption acts on, q = 3n the partial beam P_cld_dn[n] that cloud reflection and absorption act on, all S_toa at n = 1. For n > 1, with layer m = n - 1 = floor((q - 1)/3) and its raw fractions a = a_dn[m], c = c_dn[m], s = s_dn[m] read at the previous triple: S = max(S_min, max(tau_min S, S (1 - s) - a P_vap - c P_cld)), P_vap = P_vap - s S - c P_cld, P_cld = P_cld - s S - a P_vap. This is SWPARA term for term: P_vap = SDOWN(1) - DSCLD - DSCA (- DABSA, identically 0) and P_cld = SDOWN(1) - DSCA - DABS, where DSCLD, DSCA and DABS accumulate the RAW fractions (before the TRANS0 < 1 renormalisation) applied to the partial beams, while SDOWN(K+1) = AMAX1(1.E-9, SDOWN(K) TRANS0/100) with TRANS0 floored at 1 % gives the inner max (tau_min) and the outer max (S_min). Because the three sequences are carried separately, the bookkeeping stays exact below a renormalised or floored layer, where S is no longer SDOWN(1) - DSCLD - DSCA - DABS. They are interleaved on one axis because the format admits a causal self-read of the array being defined only (a recurrence that reads another recurrence is a cycle), and each self-read is at a fixed lag 1..5 along that axis. | |
S_dn | W/m^2 | The swept downward beam at each interface, top-down (n = 1 the top of the atmosphere): V_sweep[3n - 2] (SWPARA SDOWN). | |
P_vap_dn | W/m^2 | Partial beam that vapour absorption acts on at each top-down interface, V_sweep[3n - 1]: the TOA beam less the cloud and scattering depletion above (SWPARA SDOWN(1) - DSCLD - DSCA - DABSA). | |
P_cld_dn | W/m^2 | Partial beam that cloud reflection and absorption act on at each top-down interface, V_sweep[3n]: the TOA beam less the scattering and vapour depletion above (SWPARA SDOWN(1) - DSCA - DABS). | |
D_vap_dn | W/m^2 | Flux absorbed by water vapour above node n, the sum of the raw F_vap_dn of the layers above (SWPARA DABS). | |
D_cld_dn | W/m^2 | Flux removed by cloud (reflection + absorption) above node n, the sum of the raw F_cabs_dn + F_cref_dn of the layers above (SWPARA DSCLD). | |
D_sca_dn | W/m^2 | Flux scattered out of the beam above node n (SWPARA DSCA). | |
F_vap_dn | W/m^2 | Flux absorbed by water vapour in layer m: a_dn P_vap_dn, the absorptance increment times the beam depleted only by cloud and scattering (SWPARA XABS*SDOWN, raw). | |
F_cabs_dn | W/m^2 | Flux absorbed by cloud in layer m: b_dn P_cld_dn, the absorptance increment times the beam depleted only by scattering and vapour (SWPARA XABSC*SDOWN/100, raw). | |
F_cref_dn | W/m^2 | Flux reflected by cloud in layer m: r_dn P_cld_dn (SWPARA XALB*SDOWN/100, raw). | |
F_sca_dn | W/m^2 | Flux scattered out of the beam in layer m: s_dn S_dn (SWPARA XSCA*SDOWN). | |
S | W/m^2 | Downward solar beam at each interface (SWPARA SDOWN, reversed): S[NLEV+1] = S_toa, S[1] the flux reaching the surface. | |
D_vap | W/m^2 | D_vap_dn on lev_nodes (SWPARA DABS at the bottom of each layer). | |
D_cld | W/m^2 | D_cld_dn on lev_nodes (SWPARA DSCLD). | |
D_sca | W/m^2 | D_sca_dn on lev_nodes (SWPARA DSCA). | |
F_vap | W/m^2 | Flux absorbed by water vapour in each layer, on lev. | |
F_cabs | W/m^2 | Flux absorbed by cloud in each layer, on lev. | |
F_cref | W/m^2 | Flux reflected by cloud in each layer, on lev. | |
F_sca | W/m^2 | Flux scattered out of the beam in each layer, on lev. | |
S_top | W/m^2 | Beam entering each layer from above, S[k+1] (SWPARA SDOWN(K) for the layer being processed), floored at S_min. The floor changes nothing by day, where every S is at least S_min below the top and S_toa > soltop_min mu above it, and keeps the fractions below finite (0) during a total eclipse, when S_toa = 0. | |
f_raw | 1 | Raw depletion fraction of the layer, (F_vap + F_cabs + F_cref + F_sca)/S_top: the sum of the four per-layer fractions SWPARA computes before its renormalisation (XALB + XABSC + 100 XABS + 100 XSCA, in per cent). | |
tau_raw | 1 | Raw layer transmissivity 1 - f_raw (SWPARA TRANS0/100 before the renormalisation test); may be negative for an optically very thick layer. | |
ff | 1 | Renormalisation factor of the layer’s depletion fractions: 1 where tau_raw >= tau_min, else (1 - tau_min)/f_raw so that the rescaled fractions sum to 1 - tau_min (SWPARA FF = 99./(XALB + XABSC + XABS100. + XSCA100.)). The rescaled fractions are what SWPARA applies to the beam and the heating; the cumulative depletions D_* keep the raw values. | |
xabs | 1 | Layer vapour absorption as a fraction of the entering beam, F_vap/S_top (SWPARA XABS), after the renormalisation: ff times the raw fraction. | |
xabsc | 1 | Layer cloud absorption as a fraction of the entering beam (SWPARA XABSC/100), after the renormalisation: ff times the raw fraction. | |
xalb | 1 | Layer cloud reflection as a fraction of the entering beam (SWPARA XALB/100), after the renormalisation: ff times the raw fraction. | |
xsca | 1 | Layer scattering as a fraction of the entering beam (SWPARA XSCA; identical to f_sca), after the renormalisation: ff times the raw fraction. | |
tau | 1 | Layer transmissivity actually applied to the beam, max(tau_raw, tau_min) (SWPARA TRANS0/100 after the IF(TRANS0.LT.1.) block sets it to 1 %). | |
q_abs | W/m^3 | Volumetric shortwave absorption of the layer, ff (F_vap + F_cabs)/dz: the applied (renormalised) vapour plus cloud absorption per unit volume (SWPARA SDOWN(K)(XABSC + XABS100.)*0.01/DZ(K) after the renormalisation). | |
dTdt | K/s | Shortwave heating rate, daylight q_abs/(rho cp) (SWPARA TTEN). | |
dthdt | K/s | Potential-temperature tendency dTdt/exner (SWRAD’s increment of RTHRATEN). | |
gsw | W/m^2 | Net shortwave flux absorbed at the surface, daylight (1 - albedo) S[1] (SWPARA GSW). | |
n_renorm | 1 | Number of layers whose depletion fractions were renormalised (tau_raw < tau_min) while the scheme is active (0 at night). A diagnostic of how often SWPARA’s numerical guard acts. | |
n_floor | 1 | Number of interfaces at which the daytime beam sits on its floor S_min (SWPARA AMAX1(1.E-9, …); 0 at night); reached only below several consecutive renormalised layers, each of which leaves 1 % of the beam. |
Observed expressions
$$ ze = \mathrm{input_ze}\left(\right) $$Interface heights above ground, ze[1] = 0, consumer-supplied through input_ze (the cumulative sum of the WRF layer thicknesses dz8w); the grid’s single geometry input.
Layer mid-point heights, grid-derived from ze.
$$ dz = \mathrm{column_cell_thickness}\left(ze=ze\right) $$Layer thicknesses (WRF dz8w), grid-derived from ze; the measure of the column integrals and of the flux divergence.
$$ z_{top} = \mathrm{index}\left(ze, NLEV + 1\right) $$Height of the top of the atmosphere, ze[NLEV+1]: the upper bound of the to-the-top integrals W and U, spelled as the free name the grid’s integral_lev_nodes_cumulative_to_top rule matches.
$$ p = \mathrm{input_p}\left(\right) $$Layer pressure (WRF p3d), consumer-supplied through input_p.
Exner function (WRF pi3d), consumer-supplied through input_exner; converts the temperature tendency to a theta tendency.
Water-vapour mixing ratio (WRF qv3d), through input_qv.
Cloud-water mixing ratio (WRF qc3d), through input_qc.
Rain-water mixing ratio (WRF qr3d), through input_qr.
Cloud-ice mixing ratio (WRF qi3d), through input_qi.
Snow mixing ratio (WRF qs3d), through input_qs.
Graupel mixing ratio (WRF qg3d), through input_qg.
Dry-air density p/(r_d T) recomputed by the scheme (SWPARA RO).
$$ soltop = solcon \cdot \left(1.0 - obscur\right) $$Top-of-atmosphere irradiance normal to the beam, solcon (1 - obscur) (SWPARA SOLTOP).
$$ daylight = \mathrm{ifelse}\left(\mathrm{and}\left(\mathrm{>}\left(csza, par.mu_{min}\right), \mathrm{>}\left(soltop, par.soltop_{min}\right)\right), 1.0, 0.0\right) $$1 when the scheme is active (csza > mu_min and soltop > soltop_min), 0 at night or total eclipse (SWPARA’s early return).
$$ mu = \mathrm{ifelse}\left(\mathrm{>}\left(daylight, 0.5\right), csza, 1.0\right) $$Cosine of the solar zenith angle used in the slant paths: csza by day (SWPARA XMU = CSZA on the day branch) and the formal value 1 at night, so that every internal stays finite and benign when the outputs are masked (a value near WRF’s 1e-9 threshold would make the 1/mu slant paths overflow the sweep).
$$ S_{toa} = soltop \cdot mu $$Downward solar flux on a horizontal surface at the top of the atmosphere, soltop mu (SWPARA SDOWN(1)).
$$ lwc_{eff} = \mathrm{ifelse}\left(icloud = 0, 0.0, 1.0\right) \cdot rho \cdot \left(qc + par.w_{ice} \cdot qi + par.w_{rain} \cdot qr + par.w_{snow} \cdot qs + par.w_{graupel} \cdot qg\right) $$Effective condensed-water content rho (qc + w_ice qi + w_rain qr + w_snow qs + w_graupel qg), zero when icloud = 0; the integrand of the liquid water path (SWPARA XLWP / DZ, in kg/m^3 instead of g/m^3).
$$ wvc = rho \cdot qv $$Water-vapour content rho qv, the integrand of the vapour path (SWPARA XWVP / DZ).
$$ m_{air} = rho \cdot dz $$Air mass path of the layer rho dz (SWPARA XATP).
$$ W = \mathrm{integral}\left(lwc_{eff}\right) $$Effective liquid water path above each interface, W(z) = int_z^top lwc_eff dz (SWPARA WW at the bottom of each layer; 0 at the top of the atmosphere).
$$ U = \mathrm{integral}\left(wvc\right) $$Water-vapour path above each interface, U(z) = int_z^top rho qv dz (SWPARA UV; 0 at the top).
$$ alw = \mathrm{min}\left(\log_{10}\left(\frac{W}{mu \cdot par.w_{ref}} + 1.0\right), par.alw_{max}\right) $$Stephens table argument log10(W/(mu w_ref) + 1) with the slant path in g/m^2, clamped at alw_max (SWPARA ALW).
$$ R_{cld} = \mathrm{aggregate}\left(alw\right) $$Cumulative cloud reflectance of the cloud above each interface, Stephens table at (mu, alw[kn]) (SWPARA ALBA / 100). Written as an explicit gather over lev_nodes because the closed function interp.bilinear is scalar and the runners do not broadcast it over an array argument.
$$ A_{cld} = \mathrm{aggregate}\left(alw\right) $$Cumulative cloud absorptance of the cloud above each interface (SWPARA ABSC / 100).
$$ A_{vap} = \mathrm{lacis_hansen_absorptance}\left(u=\frac{U}{mu \cdot par.u_{ref}}, a=par.lacis_{a}, b=par.lacis_{b}, p=par.lacis_{p}, c=par.lacis_{c}\right) $$Cumulative water-vapour absorptance of the vapour above each interface, Lacis-Hansen fit at the slant path U/(mu u_ref) in g/cm^2 (SWPARA TOTABS).
$$ da_{vap} = \mathrm{max}\left(0.0, \mathrm{downward_increment}\left(G=A_{vap}\right)\right) $$Vapour absorptance increment across each layer, max(0, A_vap[k] - A_vap[k+1]) (SWPARA TOTABS - OLDABS, XABS >= 0).
$$ dr_{cld} = \mathrm{max}\left(0.0, \mathrm{downward_increment}\left(G=R_{cld}\right)\right) $$Cloud reflectance increment across each layer, max(0, R_cld[k] - R_cld[k+1]) (SWPARA (ALBA - OLDALB)/100, XALB >= 0).
$$ da_{cld} = \mathrm{max}\left(0.0, \mathrm{downward_increment}\left(G=A_{cld}\right)\right) $$Cloud absorptance increment across each layer, max(0, A_cld[k] - A_cld[k+1]) (SWPARA (ABSC - OLDABC)/100, XABSC >= 0).
$$ f_{cld} = dr_{cld} + da_{cld} $$Total cloud depletion fraction of the layer, dr_cld + da_cld, applied to the beam depleted only by scattering and vapour (SWPARA (XALB + XABSC)/100 before the beam ratio).
$$ f_{sca} = \frac{cssca \cdot m_{air}}{mu} $$Rayleigh/aerosol scattering fraction of the layer, cssca m_air / mu (SWPARA XSCA).
$$ a_{dn} = \mathrm{to_top_down_layers}\left(F=da_{vap}\right) $$da_vap in sweep (top-down) order.
$$ c_{dn} = \mathrm{to_top_down_layers}\left(F=f_{cld}\right) $$f_cld in sweep order.
$$ b_{dn} = \mathrm{to_top_down_layers}\left(F=da_{cld}\right) $$da_cld in sweep order.
$$ r_{dn} = \mathrm{to_top_down_layers}\left(F=dr_{cld}\right) $$dr_cld in sweep order.
$$ s_{dn} = \mathrm{to_top_down_layers}\left(F=f_{sca}\right) $$f_sca in sweep order.
$$ V_{sweep} = \mathrm{aggregate}\left(\right) $$SWPARA’s downward pass as ONE causal recurrence (esm-spec 4.3.1.1) over the interleaved triple (S, P_vap, P_cld) of each top-down interface n: cell q = 3n - 2 holds the beam S_dn[n], q = 3n - 1 the partial beam P_vap_dn[n] that vapour absorption acts on, q = 3n the partial beam P_cld_dn[n] that cloud reflection and absorption act on, all S_toa at n = 1. For n > 1, with layer m = n - 1 = floor((q - 1)/3) and its raw fractions a = a_dn[m], c = c_dn[m], s = s_dn[m] read at the previous triple: S = max(S_min, max(tau_min S, S (1 - s) - a P_vap - c P_cld)), P_vap = P_vap - s S - c P_cld, P_cld = P_cld - s S - a P_vap. This is SWPARA term for term: P_vap = SDOWN(1) - DSCLD - DSCA (- DABSA, identically 0) and P_cld = SDOWN(1) - DSCA - DABS, where DSCLD, DSCA and DABS accumulate the RAW fractions (before the TRANS0 < 1 renormalisation) applied to the partial beams, while SDOWN(K+1) = AMAX1(1.E-9, SDOWN(K) TRANS0/100) with TRANS0 floored at 1 % gives the inner max (tau_min) and the outer max (S_min). Because the three sequences are carried separately, the bookkeeping stays exact below a renormalised or floored layer, where S is no longer SDOWN(1) - DSCLD - DSCA - DABS. They are interleaved on one axis because the format admits a causal self-read of the array being defined only (a recurrence that reads another recurrence is a cycle), and each self-read is at a fixed lag 1..5 along that axis.
$$ S_{dn} = \mathrm{aggregate}\left(\right) $$The swept downward beam at each interface, top-down (n = 1 the top of the atmosphere): V_sweep[3n - 2] (SWPARA SDOWN).
$$ P_{vap\,dn} = \mathrm{aggregate}\left(\right) $$Partial beam that vapour absorption acts on at each top-down interface, V_sweep[3n - 1]: the TOA beam less the cloud and scattering depletion above (SWPARA SDOWN(1) - DSCLD - DSCA - DABSA).
$$ P_{cld\,dn} = \mathrm{aggregate}\left(\right) $$Partial beam that cloud reflection and absorption act on at each top-down interface, V_sweep[3n]: the TOA beam less the scattering and vapour depletion above (SWPARA SDOWN(1) - DSCA - DABS).
$$ D_{vap\,dn} = \mathrm{cumulative_from_top}\left(F=F_{vap\,dn}\right) $$Flux absorbed by water vapour above node n, the sum of the raw F_vap_dn of the layers above (SWPARA DABS).
$$ D_{cld\,dn} = \mathrm{aggregate}\left(F_{cabs\,dn}, F_{cref\,dn}\right) $$Flux removed by cloud (reflection + absorption) above node n, the sum of the raw F_cabs_dn + F_cref_dn of the layers above (SWPARA DSCLD).
$$ D_{sca\,dn} = \mathrm{cumulative_from_top}\left(F=F_{sca\,dn}\right) $$Flux scattered out of the beam above node n (SWPARA DSCA).
$$ F_{vap\,dn} = \mathrm{aggregate}\left(a_{dn}, P_{vap\,dn}\right) $$Flux absorbed by water vapour in layer m: a_dn P_vap_dn, the absorptance increment times the beam depleted only by cloud and scattering (SWPARA XABS*SDOWN, raw).
$$ F_{cabs\,dn} = \mathrm{aggregate}\left(b_{dn}, P_{cld\,dn}\right) $$Flux absorbed by cloud in layer m: b_dn P_cld_dn, the absorptance increment times the beam depleted only by scattering and vapour (SWPARA XABSC*SDOWN/100, raw).
$$ F_{cref\,dn} = \mathrm{aggregate}\left(r_{dn}, P_{cld\,dn}\right) $$Flux reflected by cloud in layer m: r_dn P_cld_dn (SWPARA XALB*SDOWN/100, raw).
$$ F_{sca\,dn} = \mathrm{aggregate}\left(s_{dn}, S_{dn}\right) $$Flux scattered out of the beam in layer m: s_dn S_dn (SWPARA XSCA*SDOWN).
$$ S = \mathrm{to_bottom_up_nodes}\left(G=S_{dn}\right) $$Downward solar beam at each interface (SWPARA SDOWN, reversed): S[NLEV+1] = S_toa, S[1] the flux reaching the surface.
$$ D_{vap} = \mathrm{to_bottom_up_nodes}\left(G=D_{vap\,dn}\right) $$D_vap_dn on lev_nodes (SWPARA DABS at the bottom of each layer).
$$ D_{cld} = \mathrm{to_bottom_up_nodes}\left(G=D_{cld\,dn}\right) $$D_cld_dn on lev_nodes (SWPARA DSCLD).
$$ D_{sca} = \mathrm{to_bottom_up_nodes}\left(G=D_{sca\,dn}\right) $$D_sca_dn on lev_nodes (SWPARA DSCA).
$$ F_{vap} = \mathrm{to_bottom_up_layers}\left(F=F_{vap\,dn}\right) $$Flux absorbed by water vapour in each layer, on lev.
$$ F_{cabs} = \mathrm{to_bottom_up_layers}\left(F=F_{cabs\,dn}\right) $$Flux absorbed by cloud in each layer, on lev.
$$ F_{cref} = \mathrm{to_bottom_up_layers}\left(F=F_{cref\,dn}\right) $$Flux reflected by cloud in each layer, on lev.
$$ F_{sca} = \mathrm{to_bottom_up_layers}\left(F=F_{sca\,dn}\right) $$Flux scattered out of the beam in each layer, on lev.
$$ S_{top} = \mathrm{aggregate}\left(S\right) $$Beam entering each layer from above, S[k+1] (SWPARA SDOWN(K) for the layer being processed), floored at S_min. The floor changes nothing by day, where every S is at least S_min below the top and S_toa > soltop_min mu above it, and keeps the fractions below finite (0) during a total eclipse, when S_toa = 0.
$$ f_{raw} = \frac{F_{vap} + F_{cabs} + F_{cref} + F_{sca}}{S_{top}} $$Raw depletion fraction of the layer, (F_vap + F_cabs + F_cref + F_sca)/S_top: the sum of the four per-layer fractions SWPARA computes before its renormalisation (XALB + XABSC + 100 XABS + 100 XSCA, in per cent).
$$ tau_{raw} = 1.0 - f_{raw} $$Raw layer transmissivity 1 - f_raw (SWPARA TRANS0/100 before the renormalisation test); may be negative for an optically very thick layer.
$$ ff = \mathrm{ifelse}\left(\mathrm{<}\left(tau_{raw}, par.tau_{min}\right), \frac{1.0 - par.tau_{min}}{f_{raw}}, 1.0\right) $$Renormalisation factor of the layer’s depletion fractions: 1 where tau_raw >= tau_min, else (1 - tau_min)/f_raw so that the rescaled fractions sum to 1 - tau_min (SWPARA FF = 99./(XALB + XABSC + XABS100. + XSCA100.)). The rescaled fractions are what SWPARA applies to the beam and the heating; the cumulative depletions D* keep the raw values._
$$ xabs = \frac{ff \cdot F_{vap}}{S_{top}} $$Layer vapour absorption as a fraction of the entering beam, F_vap/S_top (SWPARA XABS), after the renormalisation: ff times the raw fraction.
$$ xabsc = \frac{ff \cdot F_{cabs}}{S_{top}} $$Layer cloud absorption as a fraction of the entering beam (SWPARA XABSC/100), after the renormalisation: ff times the raw fraction.
$$ xalb = \frac{ff \cdot F_{cref}}{S_{top}} $$Layer cloud reflection as a fraction of the entering beam (SWPARA XALB/100), after the renormalisation: ff times the raw fraction.
$$ xsca = \frac{ff \cdot F_{sca}}{S_{top}} $$Layer scattering as a fraction of the entering beam (SWPARA XSCA; identical to f_sca), after the renormalisation: ff times the raw fraction.
$$ tau = \mathrm{max}\left(tau_{raw}, par.tau_{min}\right) $$Layer transmissivity actually applied to the beam, max(tau_raw, tau_min) (SWPARA TRANS0/100 after the IF(TRANS0.LT.1.) block sets it to 1 %).
$$ q_{abs} = \frac{ff \cdot \left(F_{vap} + F_{cabs}\right)}{dz} $$Volumetric shortwave absorption of the layer, ff (F_vap + F_cabs)/dz: the applied (renormalised) vapour plus cloud absorption per unit volume (SWPARA SDOWN(K)(XABSC + XABS100.)*0.01/DZ(K) after the renormalisation).
$$ dTdt = \frac{daylight \cdot q_{abs}}{rho \cdot wrf.cp} $$Shortwave heating rate, daylight q_abs/(rho cp) (SWPARA TTEN).
$$ dthdt = \frac{dTdt}{exner} $$Potential-temperature tendency dTdt/exner (SWRAD’s increment of RTHRATEN).
$$ gsw = daylight \cdot \left(1.0 - albedo\right) \cdot \mathrm{index}\left(S, 1\right) $$Net shortwave flux absorbed at the surface, daylight (1 - albedo) S[1] (SWPARA GSW).
$$ n_{renorm} = daylight \cdot \mathrm{aggregate}\left(tau_{raw}\right) $$Number of layers whose depletion fractions were renormalised (tau_raw < tau_min) while the scheme is active (0 at night). A diagnostic of how often SWPARA’s numerical guard acts.
$$ n_{floor} = daylight \cdot \mathrm{aggregate}\left(S\right) $$Number of interfaces at which the daytime beam sits on its floor S_min (SWPARA AMAX1(1.E-9, …); 0 at night); reached only below several consecutive renormalised layers, each of which leaves 1 % of the beam.
Equations
$$ \mathrm{ic}\left(T\right) = \mathrm{input_T}\left(\right) $$ $$ \mathrm{D}\left(T\right) = dTdt $$Expression Templates
downward_increment
Parameters: G
to_top_down_layers
Parameters: F
to_bottom_up_layers
Parameters: F
to_bottom_up_nodes
Parameters: G
cumulative_from_top
Parameters: F
Raw .esm
Raw .esm JSON (this component)
{
"expression_template_imports": [
{
"ref": "${ESD_ROOT}/grids/column_nonuniform_1d/grid.esm",
"bindings": {
"NLEV": "NLEV"
}
},
{
"ref": "${ESD_ROOT}/grids/column_nonuniform_1d/rules/integral_lev_nodes_cumulative_to_top.esm",
"bindings": {
"NLEV": "NLEV"
}
},
{
"ref": "../../../lib/wrf_thermo.esm"
},
{
"ref": "./lacis_hansen_absorptance.esm"
},
{
"ref": "./stephens_cloud_tables.esm"
}
],
"subsystems": {
"wrf": {
"ref": "../../../lib/wrf_constants.esm"
},
"par": {
"ref": "./dudhia_sw_parameters.esm"
}
},
"expression_templates": {
"downward_increment": {
"params": [
"G"
],
"description": "Increment of a cumulative-from-the-top interface field G across each layer, G[k] - G[k+1] (bottom minus top): the layer's own contribution to a quantity accumulated downward from the top of the atmosphere.",
"body": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [
"G"
],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "-",
"args": [
{
"op": "index",
"args": [
"G",
"k"
]
},
{
"op": "index",
"args": [
"G",
{
"op": "+",
"args": [
"k",
1
]
}
]
}
]
}
}
},
"to_top_down_layers": {
"params": [
"F"
],
"description": "Reverse a layer field from lev (surface up) to lev_down (top down): F_dn[m] = F[NLEV + 1 - m].",
"body": {
"op": "aggregate",
"output_idx": [
"m"
],
"args": [
"F"
],
"ranges": {
"m": {
"from": "lev_down"
}
},
"expr": {
"op": "index",
"args": [
"F",
{
"op": "-",
"args": [
{
"op": "+",
"args": [
"NLEV",
1
]
},
"m"
]
}
]
}
}
},
"to_bottom_up_layers": {
"params": [
"F"
],
"description": "Reverse a layer field from lev_down (top down) to lev (surface up): F[k] = F_dn[NLEV + 1 - k].",
"body": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [
"F"
],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
"F",
{
"op": "-",
"args": [
{
"op": "+",
"args": [
"NLEV",
1
]
},
"k"
]
}
]
}
}
},
"to_bottom_up_nodes": {
"params": [
"G"
],
"description": "Reverse an interface field from lev_down_nodes (top down) to lev_nodes (surface up): G[kn] = G_dn[NLEV + 2 - kn].",
"body": {
"op": "aggregate",
"output_idx": [
"kn"
],
"args": [
"G"
],
"ranges": {
"kn": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
"G",
{
"op": "-",
"args": [
{
"op": "+",
"args": [
"NLEV",
2
]
},
"kn"
]
}
]
}
}
},
"cumulative_from_top": {
"params": [
"F"
],
"description": "Running sum of a top-down layer field over the layers above node n: C[n] = sum_{j<n} F[j] (C[1] = 0).",
"body": {
"op": "aggregate",
"output_idx": [
"n"
],
"reduce": "+",
"args": [
"F"
],
"ranges": {
"n": {
"from": "lev_down_nodes"
},
"j": {
"from": "lev_down"
}
},
"filter": {
"op": "<",
"args": [
"j",
"n"
]
},
"expr": {
"op": "index",
"args": [
"F",
"j"
]
}
}
}
},
"variables": {
"p_in": {
"type": "parameter",
"shape": [
"lev"
],
"units": "Pa",
"default": 0.0,
"description": "Coupling target (assembly input path): a shaped parameter that receives the layer pressure (WRF p3d) from the column geometry (components/atmospheric_dynamics/wrf_arw/column_geometry.esm, output `p`) through a document-level `coupling.variable_map` (param_to_var); a mount-edge template library lowers this component's `input_p` rewrite target to it (esm-spec 9.7.10, 10.4). Unused by this component's own inline tests, which lower `input_p` to dumped constants instead."
},
"exner_in": {
"type": "parameter",
"shape": [
"lev"
],
"units": "1",
"default": 0.0,
"description": "Coupling target (assembly input path): a shaped parameter that receives the layer Exner function (WRF pi3d) from the column geometry (components/atmospheric_dynamics/wrf_arw/column_geometry.esm, output `exner`) through a document-level `coupling.variable_map` (param_to_var); a mount-edge template library lowers this component's `input_exner` rewrite target to it (esm-spec 9.7.10, 10.4). Unused by this component's own inline tests, which lower `input_exner` to dumped constants instead."
},
"ze_in": {
"type": "parameter",
"shape": [
"lev_nodes"
],
"units": "m",
"default": 0.0,
"description": "Coupling target (assembly input path): a shaped parameter that receives the interface heights above ground from the column geometry (components/atmospheric_dynamics/wrf_arw/column_geometry.esm, output `z_w_agl`) through a document-level `coupling.variable_map` (param_to_var); a mount-edge template library lowers this component's `input_ze` rewrite target to it (esm-spec 9.7.10, 10.4). Unused by this component's own inline tests, which lower `input_ze` to dumped constants instead."
},
"csza": {
"type": "parameter",
"units": "1",
"default": 0.5,
"description": "Cosine of the solar zenith angle (WRF coszen)."
},
"albedo": {
"type": "parameter",
"units": "1",
"default": 0.2,
"description": "Surface albedo."
},
"solcon": {
"type": "parameter",
"units": "W/m^2",
"default": 1370.0,
"description": "Solar constant corrected for the Earth-Sun distance (WRF solcon)."
},
"obscur": {
"type": "parameter",
"units": "1",
"default": 0.0,
"description": "Solar-eclipse obscuration fraction (WRF obscur); 0 outside eclipses."
},
"cssca": {
"type": "parameter",
"units": "m^2/kg",
"default": 1e-05,
"description": "Clear-sky (Rayleigh + background aerosol) scattering coefficient per unit air mass path, namelist swrad_scat * 1e-5 (swinit); 1e-5 m^2/kg for swrad_scat = 1."
},
"icloud": {
"type": "parameter",
"units": "1",
"default": 1.0,
"description": "Cloud switch (namelist icloud): 0 drops the condensate from the effective liquid water path, any other value includes it with unit weight (SWPARA: IF (ICLOUD.EQ.0) XLWP = 0, ELSE the full path; WRF's icloud = 1, 2 and 3 select the cloud fraction scheme elsewhere and all give the same path here)."
},
"ze": {
"type": "unknown",
"units": "m",
"shape": [
"lev_nodes"
],
"description": "Interface heights above ground, ze[1] = 0, consumer-supplied through `input_ze` (the cumulative sum of the WRF layer thicknesses dz8w); the grid's single geometry input."
},
"zc": {
"type": "unknown",
"units": "m",
"shape": [
"lev"
],
"description": "Layer mid-point heights, grid-derived from ze."
},
"dz": {
"type": "unknown",
"units": "m",
"shape": [
"lev"
],
"description": "Layer thicknesses (WRF dz8w), grid-derived from ze; the measure of the column integrals and of the flux divergence."
},
"z_top": {
"type": "unknown",
"units": "m",
"description": "Height of the top of the atmosphere, ze[NLEV+1]: the upper bound of the to-the-top integrals W and U, spelled as the free name the grid's integral_lev_nodes_cumulative_to_top rule matches."
},
"T": {
"type": "unknown",
"units": "K",
"shape": [
"lev"
],
"description": "Layer temperature (WRF t3d); the prognostic state, initialised from `input_T` and heated by dTdt."
},
"p": {
"type": "unknown",
"units": "Pa",
"shape": [
"lev"
],
"description": "Layer pressure (WRF p3d), consumer-supplied through `input_p`."
},
"exner": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Exner function (WRF pi3d), consumer-supplied through `input_exner`; converts the temperature tendency to a theta tendency."
},
"qv": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Water-vapour mixing ratio (WRF qv3d), through `input_qv`."
},
"qc": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Cloud-water mixing ratio (WRF qc3d), through `input_qc`."
},
"qr": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Rain-water mixing ratio (WRF qr3d), through `input_qr`."
},
"qi": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Cloud-ice mixing ratio (WRF qi3d), through `input_qi`."
},
"qs": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Snow mixing ratio (WRF qs3d), through `input_qs`."
},
"qg": {
"type": "unknown",
"units": "kg/kg",
"shape": [
"lev"
],
"description": "Graupel mixing ratio (WRF qg3d), through `input_qg`."
},
"rho": {
"type": "unknown",
"units": "kg/m^3",
"shape": [
"lev"
],
"description": "Dry-air density p/(r_d T) recomputed by the scheme (SWPARA RO)."
},
"soltop": {
"type": "unknown",
"units": "W/m^2",
"description": "Top-of-atmosphere irradiance normal to the beam, solcon (1 - obscur) (SWPARA SOLTOP)."
},
"daylight": {
"type": "unknown",
"units": "1",
"description": "1 when the scheme is active (csza > mu_min and soltop > soltop_min), 0 at night or total eclipse (SWPARA's early return)."
},
"mu": {
"type": "unknown",
"units": "1",
"description": "Cosine of the solar zenith angle used in the slant paths: csza by day (SWPARA XMU = CSZA on the day branch) and the formal value 1 at night, so that every internal stays finite and benign when the outputs are masked (a value near WRF's 1e-9 threshold would make the 1/mu slant paths overflow the sweep)."
},
"S_toa": {
"type": "unknown",
"units": "W/m^2",
"description": "Downward solar flux on a horizontal surface at the top of the atmosphere, soltop mu (SWPARA SDOWN(1))."
},
"lwc_eff": {
"type": "unknown",
"units": "kg/m^3",
"shape": [
"lev"
],
"description": "Effective condensed-water content rho (qc + w_ice qi + w_rain qr + w_snow qs + w_graupel qg), zero when icloud = 0; the integrand of the liquid water path (SWPARA XLWP / DZ, in kg/m^3 instead of g/m^3)."
},
"wvc": {
"type": "unknown",
"units": "kg/m^3",
"shape": [
"lev"
],
"description": "Water-vapour content rho qv, the integrand of the vapour path (SWPARA XWVP / DZ)."
},
"m_air": {
"type": "unknown",
"units": "kg/m^2",
"shape": [
"lev"
],
"description": "Air mass path of the layer rho dz (SWPARA XATP)."
},
"W": {
"type": "unknown",
"units": "kg/m^2",
"shape": [
"lev_nodes"
],
"description": "Effective liquid water path above each interface, W(z) = int_z^top lwc_eff dz (SWPARA WW at the bottom of each layer; 0 at the top of the atmosphere)."
},
"U": {
"type": "unknown",
"units": "kg/m^2",
"shape": [
"lev_nodes"
],
"description": "Water-vapour path above each interface, U(z) = int_z^top rho qv dz (SWPARA UV; 0 at the top)."
},
"alw": {
"type": "unknown",
"units": "1",
"shape": [
"lev_nodes"
],
"description": "Stephens table argument log10(W/(mu w_ref) + 1) with the slant path in g/m^2, clamped at alw_max (SWPARA ALW)."
},
"R_cld": {
"type": "unknown",
"units": "1",
"shape": [
"lev_nodes"
],
"description": "Cumulative cloud reflectance of the cloud above each interface, Stephens table at (mu, alw[kn]) (SWPARA ALBA / 100). Written as an explicit gather over lev_nodes because the closed function interp.bilinear is scalar and the runners do not broadcast it over an array argument."
},
"A_cld": {
"type": "unknown",
"units": "1",
"shape": [
"lev_nodes"
],
"description": "Cumulative cloud absorptance of the cloud above each interface (SWPARA ABSC / 100)."
},
"A_vap": {
"type": "unknown",
"units": "1",
"shape": [
"lev_nodes"
],
"description": "Cumulative water-vapour absorptance of the vapour above each interface, Lacis-Hansen fit at the slant path U/(mu u_ref) in g/cm^2 (SWPARA TOTABS)."
},
"da_vap": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Vapour absorptance increment across each layer, max(0, A_vap[k] - A_vap[k+1]) (SWPARA TOTABS - OLDABS, XABS >= 0)."
},
"dr_cld": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Cloud reflectance increment across each layer, max(0, R_cld[k] - R_cld[k+1]) (SWPARA (ALBA - OLDALB)/100, XALB >= 0)."
},
"da_cld": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Cloud absorptance increment across each layer, max(0, A_cld[k] - A_cld[k+1]) (SWPARA (ABSC - OLDABC)/100, XABSC >= 0)."
},
"f_cld": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Total cloud depletion fraction of the layer, dr_cld + da_cld, applied to the beam depleted only by scattering and vapour (SWPARA (XALB + XABSC)/100 before the beam ratio)."
},
"f_sca": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Rayleigh/aerosol scattering fraction of the layer, cssca m_air / mu (SWPARA XSCA)."
},
"a_dn": {
"type": "unknown",
"units": "1",
"shape": [
"lev_down"
],
"description": "da_vap in sweep (top-down) order."
},
"c_dn": {
"type": "unknown",
"units": "1",
"shape": [
"lev_down"
],
"description": "f_cld in sweep order."
},
"b_dn": {
"type": "unknown",
"units": "1",
"shape": [
"lev_down"
],
"description": "da_cld in sweep order."
},
"r_dn": {
"type": "unknown",
"units": "1",
"shape": [
"lev_down"
],
"description": "dr_cld in sweep order."
},
"s_dn": {
"type": "unknown",
"units": "1",
"shape": [
"lev_down"
],
"description": "f_sca in sweep order."
},
"V_sweep": {
"type": "unknown",
"units": "W/m^2",
"shape": [
"sweep"
],
"description": "SWPARA's downward pass as ONE causal recurrence (esm-spec 4.3.1.1) over the interleaved triple (S, P_vap, P_cld) of each top-down interface n: cell q = 3n - 2 holds the beam S_dn[n], q = 3n - 1 the partial beam P_vap_dn[n] that vapour absorption acts on, q = 3n the partial beam P_cld_dn[n] that cloud reflection and absorption act on, all S_toa at n = 1. For n > 1, with layer m = n - 1 = floor((q - 1)/3) and its raw fractions a = a_dn[m], c = c_dn[m], s = s_dn[m] read at the previous triple: S = max(S_min, max(tau_min S, S (1 - s) - a P_vap - c P_cld)), P_vap = P_vap - s S - c P_cld, P_cld = P_cld - s S - a P_vap. This is SWPARA term for term: P_vap = SDOWN(1) - DSCLD - DSCA (- DABSA, identically 0) and P_cld = SDOWN(1) - DSCA - DABS, where DSCLD, DSCA and DABS accumulate the RAW fractions (before the TRANS0 < 1 renormalisation) applied to the partial beams, while SDOWN(K+1) = AMAX1(1.E-9, SDOWN(K) TRANS0/100) with TRANS0 floored at 1 % gives the inner max (tau_min) and the outer max (S_min). Because the three sequences are carried separately, the bookkeeping stays exact below a renormalised or floored layer, where S is no longer SDOWN(1) - DSCLD - DSCA - DABS. They are interleaved on one axis because the format admits a causal self-read of the array being defined only (a recurrence that reads another recurrence is a cycle), and each self-read is at a fixed lag 1..5 along that axis."
},
"S_dn": {
"type": "unknown",
"units": "W/m^2",
"shape": [
"lev_down_nodes"
],
"description": "The swept downward beam at each interface, top-down (n = 1 the top of the atmosphere): V_sweep[3n - 2] (SWPARA SDOWN)."
},
"P_vap_dn": {
"type": "unknown",
"units": "W/m^2",
"shape": [
"lev_down_nodes"
],
"description": "Partial beam that vapour absorption acts on at each top-down interface, V_sweep[3n - 1]: the TOA beam less the cloud and scattering depletion above (SWPARA SDOWN(1) - DSCLD - DSCA - DABSA)."
},
"P_cld_dn": {
"type": "unknown",
"units": "W/m^2",
"shape": [
"lev_down_nodes"
],
"description": "Partial beam that cloud reflection and absorption act on at each top-down interface, V_sweep[3n]: the TOA beam less the scattering and vapour depletion above (SWPARA SDOWN(1) - DSCA - DABS)."
},
"D_vap_dn": {
"type": "unknown",
"units": "W/m^2",
"shape": [
"lev_down_nodes"
],
"description": "Flux absorbed by water vapour above node n, the sum of the raw F_vap_dn of the layers above (SWPARA DABS)."
},
"D_cld_dn": {
"type": "unknown",
"units": "W/m^2",
"shape": [
"lev_down_nodes"
],
"description": "Flux removed by cloud (reflection + absorption) above node n, the sum of the raw F_cabs_dn + F_cref_dn of the layers above (SWPARA DSCLD)."
},
"D_sca_dn": {
"type": "unknown",
"units": "W/m^2",
"shape": [
"lev_down_nodes"
],
"description": "Flux scattered out of the beam above node n (SWPARA DSCA)."
},
"F_vap_dn": {
"type": "unknown",
"units": "W/m^2",
"shape": [
"lev_down"
],
"description": "Flux absorbed by water vapour in layer m: a_dn P_vap_dn, the absorptance increment times the beam depleted only by cloud and scattering (SWPARA XABS*SDOWN, raw)."
},
"F_cabs_dn": {
"type": "unknown",
"units": "W/m^2",
"shape": [
"lev_down"
],
"description": "Flux absorbed by cloud in layer m: b_dn P_cld_dn, the absorptance increment times the beam depleted only by scattering and vapour (SWPARA XABSC*SDOWN/100, raw)."
},
"F_cref_dn": {
"type": "unknown",
"units": "W/m^2",
"shape": [
"lev_down"
],
"description": "Flux reflected by cloud in layer m: r_dn P_cld_dn (SWPARA XALB*SDOWN/100, raw)."
},
"F_sca_dn": {
"type": "unknown",
"units": "W/m^2",
"shape": [
"lev_down"
],
"description": "Flux scattered out of the beam in layer m: s_dn S_dn (SWPARA XSCA*SDOWN)."
},
"S": {
"type": "unknown",
"units": "W/m^2",
"shape": [
"lev_nodes"
],
"description": "Downward solar beam at each interface (SWPARA SDOWN, reversed): S[NLEV+1] = S_toa, S[1] the flux reaching the surface."
},
"D_vap": {
"type": "unknown",
"units": "W/m^2",
"shape": [
"lev_nodes"
],
"description": "D_vap_dn on lev_nodes (SWPARA DABS at the bottom of each layer)."
},
"D_cld": {
"type": "unknown",
"units": "W/m^2",
"shape": [
"lev_nodes"
],
"description": "D_cld_dn on lev_nodes (SWPARA DSCLD)."
},
"D_sca": {
"type": "unknown",
"units": "W/m^2",
"shape": [
"lev_nodes"
],
"description": "D_sca_dn on lev_nodes (SWPARA DSCA)."
},
"F_vap": {
"type": "unknown",
"units": "W/m^2",
"shape": [
"lev"
],
"description": "Flux absorbed by water vapour in each layer, on lev."
},
"F_cabs": {
"type": "unknown",
"units": "W/m^2",
"shape": [
"lev"
],
"description": "Flux absorbed by cloud in each layer, on lev."
},
"F_cref": {
"type": "unknown",
"units": "W/m^2",
"shape": [
"lev"
],
"description": "Flux reflected by cloud in each layer, on lev."
},
"F_sca": {
"type": "unknown",
"units": "W/m^2",
"shape": [
"lev"
],
"description": "Flux scattered out of the beam in each layer, on lev."
},
"S_top": {
"type": "unknown",
"units": "W/m^2",
"shape": [
"lev"
],
"description": "Beam entering each layer from above, S[k+1] (SWPARA SDOWN(K) for the layer being processed), floored at S_min. The floor changes nothing by day, where every S is at least S_min below the top and S_toa > soltop_min mu above it, and keeps the fractions below finite (0) during a total eclipse, when S_toa = 0."
},
"f_raw": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Raw depletion fraction of the layer, (F_vap + F_cabs + F_cref + F_sca)/S_top: the sum of the four per-layer fractions SWPARA computes before its renormalisation (XALB + XABSC + 100 XABS + 100 XSCA, in per cent)."
},
"tau_raw": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Raw layer transmissivity 1 - f_raw (SWPARA TRANS0/100 before the renormalisation test); may be negative for an optically very thick layer."
},
"ff": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Renormalisation factor of the layer's depletion fractions: 1 where tau_raw >= tau_min, else (1 - tau_min)/f_raw so that the rescaled fractions sum to 1 - tau_min (SWPARA FF = 99./(XALB + XABSC + XABS*100. + XSCA*100.)). The rescaled fractions are what SWPARA applies to the beam and the heating; the cumulative depletions D_* keep the raw values."
},
"xabs": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Layer vapour absorption as a fraction of the entering beam, F_vap/S_top (SWPARA XABS), after the renormalisation: ff times the raw fraction."
},
"xabsc": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Layer cloud absorption as a fraction of the entering beam (SWPARA XABSC/100), after the renormalisation: ff times the raw fraction."
},
"xalb": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Layer cloud reflection as a fraction of the entering beam (SWPARA XALB/100), after the renormalisation: ff times the raw fraction."
},
"xsca": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Layer scattering as a fraction of the entering beam (SWPARA XSCA; identical to f_sca), after the renormalisation: ff times the raw fraction."
},
"tau": {
"type": "unknown",
"units": "1",
"shape": [
"lev"
],
"description": "Layer transmissivity actually applied to the beam, max(tau_raw, tau_min) (SWPARA TRANS0/100 after the IF(TRANS0.LT.1.) block sets it to 1 %)."
},
"q_abs": {
"type": "unknown",
"units": "W/m^3",
"shape": [
"lev"
],
"description": "Volumetric shortwave absorption of the layer, ff (F_vap + F_cabs)/dz: the applied (renormalised) vapour plus cloud absorption per unit volume (SWPARA SDOWN(K)*(XABSC + XABS*100.)*0.01/DZ(K) after the renormalisation)."
},
"dTdt": {
"type": "unknown",
"units": "K/s",
"shape": [
"lev"
],
"description": "Shortwave heating rate, daylight q_abs/(rho cp) (SWPARA TTEN)."
},
"dthdt": {
"type": "unknown",
"units": "K/s",
"shape": [
"lev"
],
"description": "Potential-temperature tendency dTdt/exner (SWRAD's increment of RTHRATEN)."
},
"gsw": {
"type": "unknown",
"units": "W/m^2",
"description": "Net shortwave flux absorbed at the surface, daylight (1 - albedo) S[1] (SWPARA GSW)."
},
"n_renorm": {
"type": "unknown",
"units": "1",
"description": "Number of layers whose depletion fractions were renormalised (tau_raw < tau_min) while the scheme is active (0 at night). A diagnostic of how often SWPARA's numerical guard acts."
},
"n_floor": {
"type": "unknown",
"units": "1",
"description": "Number of interfaces at which the daytime beam sits on its floor S_min (SWPARA AMAX1(1.E-9, ...); 0 at night); reached only below several consecutive renormalised layers, each of which leaves 1 % of the beam."
}
},
"equations": [
{
"lhs": "ze",
"rhs": {
"op": "input_ze",
"args": []
}
},
{
"lhs": "zc",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "column_cell_center",
"bindings": {
"ze": "ze"
}
}
},
{
"lhs": "dz",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "column_cell_thickness",
"bindings": {
"ze": "ze"
}
}
},
{
"lhs": "z_top",
"rhs": {
"op": "index",
"args": [
"ze",
{
"op": "+",
"args": [
"NLEV",
1
]
}
]
}
},
{
"lhs": {
"op": "ic",
"args": [
"T"
]
},
"rhs": {
"op": "input_T",
"args": []
}
},
{
"lhs": {
"op": "D",
"args": [
"T"
],
"wrt": "t"
},
"rhs": "dTdt"
},
{
"lhs": "p",
"rhs": {
"op": "input_p",
"args": []
}
},
{
"lhs": "exner",
"rhs": {
"op": "input_exner",
"args": []
}
},
{
"lhs": "qv",
"rhs": {
"op": "input_qv",
"args": []
}
},
{
"lhs": "qc",
"rhs": {
"op": "input_qc",
"args": []
}
},
{
"lhs": "qr",
"rhs": {
"op": "input_qr",
"args": []
}
},
{
"lhs": "qi",
"rhs": {
"op": "input_qi",
"args": []
}
},
{
"lhs": "qs",
"rhs": {
"op": "input_qs",
"args": []
}
},
{
"lhs": "qg",
"rhs": {
"op": "input_qg",
"args": []
}
},
{
"lhs": "rho",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "dry_air_density",
"bindings": {
"p": "p",
"T": "T",
"r_d": "wrf.r_d"
}
}
},
{
"lhs": "soltop",
"rhs": {
"op": "*",
"args": [
"solcon",
{
"op": "-",
"args": [
1.0,
"obscur"
]
}
]
}
},
{
"lhs": "daylight",
"rhs": {
"op": "ifelse",
"args": [
{
"op": "and",
"args": [
{
"op": ">",
"args": [
"csza",
"par.mu_min"
]
},
{
"op": ">",
"args": [
"soltop",
"par.soltop_min"
]
}
]
},
1.0,
0.0
]
}
},
{
"lhs": "mu",
"rhs": {
"op": "ifelse",
"args": [
{
"op": ">",
"args": [
"daylight",
0.5
]
},
"csza",
1.0
]
}
},
{
"lhs": "S_toa",
"rhs": {
"op": "*",
"args": [
"soltop",
"mu"
]
}
},
{
"lhs": "lwc_eff",
"rhs": {
"op": "*",
"args": [
{
"op": "ifelse",
"args": [
{
"op": "==",
"args": [
"icloud",
0
]
},
0.0,
1.0
]
},
"rho",
{
"op": "+",
"args": [
"qc",
{
"op": "*",
"args": [
"par.w_ice",
"qi"
]
},
{
"op": "*",
"args": [
"par.w_rain",
"qr"
]
},
{
"op": "*",
"args": [
"par.w_snow",
"qs"
]
},
{
"op": "*",
"args": [
"par.w_graupel",
"qg"
]
}
]
}
]
}
},
{
"lhs": "wvc",
"rhs": {
"op": "*",
"args": [
"rho",
"qv"
]
}
},
{
"lhs": "m_air",
"rhs": {
"op": "*",
"args": [
"rho",
"dz"
]
}
},
{
"lhs": "W",
"rhs": {
"op": "integral",
"args": [
"lwc_eff"
],
"var": "lev",
"lower": "lev_nodes",
"upper": "z_top"
}
},
{
"lhs": "U",
"rhs": {
"op": "integral",
"args": [
"wvc"
],
"var": "lev",
"lower": "lev_nodes",
"upper": "z_top"
}
},
{
"lhs": "alw",
"rhs": {
"op": "min",
"args": [
{
"op": "log10",
"args": [
{
"op": "+",
"args": [
{
"op": "/",
"args": [
"W",
{
"op": "*",
"args": [
"mu",
"par.w_ref"
]
}
]
},
1.0
]
}
]
},
"par.alw_max"
]
}
},
{
"lhs": "R_cld",
"rhs": {
"op": "aggregate",
"output_idx": [
"kn"
],
"args": [
"alw"
],
"ranges": {
"kn": {
"from": "lev_nodes"
}
},
"expr": {
"op": "apply_expression_template",
"args": [],
"name": "stephens_cloud_albedo",
"bindings": {
"mu": "mu",
"alw": {
"op": "index",
"args": [
"alw",
"kn"
]
}
}
}
}
},
{
"lhs": "A_cld",
"rhs": {
"op": "aggregate",
"output_idx": [
"kn"
],
"args": [
"alw"
],
"ranges": {
"kn": {
"from": "lev_nodes"
}
},
"expr": {
"op": "apply_expression_template",
"args": [],
"name": "stephens_cloud_absorption",
"bindings": {
"mu": "mu",
"alw": {
"op": "index",
"args": [
"alw",
"kn"
]
}
}
}
}
},
{
"lhs": "A_vap",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "lacis_hansen_absorptance",
"bindings": {
"u": {
"op": "/",
"args": [
"U",
{
"op": "*",
"args": [
"mu",
"par.u_ref"
]
}
]
},
"a": "par.lacis_a",
"b": "par.lacis_b",
"p": "par.lacis_p",
"c": "par.lacis_c"
}
}
},
{
"lhs": "da_vap",
"rhs": {
"op": "max",
"args": [
0.0,
{
"op": "apply_expression_template",
"args": [],
"name": "downward_increment",
"bindings": {
"G": "A_vap"
}
}
]
}
},
{
"lhs": "dr_cld",
"rhs": {
"op": "max",
"args": [
0.0,
{
"op": "apply_expression_template",
"args": [],
"name": "downward_increment",
"bindings": {
"G": "R_cld"
}
}
]
}
},
{
"lhs": "da_cld",
"rhs": {
"op": "max",
"args": [
0.0,
{
"op": "apply_expression_template",
"args": [],
"name": "downward_increment",
"bindings": {
"G": "A_cld"
}
}
]
}
},
{
"lhs": "f_cld",
"rhs": {
"op": "+",
"args": [
"dr_cld",
"da_cld"
]
}
},
{
"lhs": "f_sca",
"rhs": {
"op": "/",
"args": [
{
"op": "*",
"args": [
"cssca",
"m_air"
]
},
"mu"
]
}
},
{
"lhs": "a_dn",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "to_top_down_layers",
"bindings": {
"F": "da_vap"
}
}
},
{
"lhs": "c_dn",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "to_top_down_layers",
"bindings": {
"F": "f_cld"
}
}
},
{
"lhs": "b_dn",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "to_top_down_layers",
"bindings": {
"F": "da_cld"
}
}
},
{
"lhs": "r_dn",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "to_top_down_layers",
"bindings": {
"F": "dr_cld"
}
}
},
{
"lhs": "s_dn",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "to_top_down_layers",
"bindings": {
"F": "f_sca"
}
}
},
{
"lhs": "V_sweep",
"rhs": {
"op": "aggregate",
"args": [],
"output_idx": [
"q"
],
"ranges": {
"q": {
"from": "sweep"
}
},
"expr": {
"op": "ifelse",
"args": [
{
"op": "<=",
"args": [
"q",
3
]
},
"S_toa",
{
"op": "ifelse",
"args": [
{
"op": "==",
"args": [
{
"op": "-",
"args": [
"q",
{
"op": "*",
"args": [
3,
{
"op": "floor",
"args": [
{
"op": "/",
"args": [
{
"op": "-",
"args": [
"q",
1
]
},
3
]
}
]
}
]
}
]
},
1
]
},
{
"op": "max",
"args": [
"par.S_min",
{
"op": "max",
"args": [
{
"op": "*",
"args": [
"par.tau_min",
{
"op": "index",
"args": [
"V_sweep",
{
"op": "-",
"args": [
"q",
3
]
}
]
}
]
},
{
"op": "-",
"args": [
{
"op": "*",
"args": [
{
"op": "index",
"args": [
"V_sweep",
{
"op": "-",
"args": [
"q",
3
]
}
]
},
{
"op": "-",
"args": [
1.0,
{
"op": "index",
"args": [
"s_dn",
{
"op": "floor",
"args": [
{
"op": "/",
"args": [
{
"op": "-",
"args": [
"q",
1
]
},
3
]
}
]
}
]
}
]
}
]
},
{
"op": "+",
"args": [
{
"op": "*",
"args": [
{
"op": "index",
"args": [
"a_dn",
{
"op": "floor",
"args": [
{
"op": "/",
"args": [
{
"op": "-",
"args": [
"q",
1
]
},
3
]
}
]
}
]
},
{
"op": "index",
"args": [
"V_sweep",
{
"op": "-",
"args": [
"q",
2
]
}
]
}
]
},
{
"op": "*",
"args": [
{
"op": "index",
"args": [
"c_dn",
{
"op": "floor",
"args": [
{
"op": "/",
"args": [
{
"op": "-",
"args": [
"q",
1
]
},
3
]
}
]
}
]
},
{
"op": "index",
"args": [
"V_sweep",
{
"op": "-",
"args": [
"q",
1
]
}
]
}
]
}
]
}
]
}
]
}
]
},
{
"op": "ifelse",
"args": [
{
"op": "==",
"args": [
{
"op": "-",
"args": [
"q",
{
"op": "*",
"args": [
3,
{
"op": "floor",
"args": [
{
"op": "/",
"args": [
{
"op": "-",
"args": [
"q",
1
]
},
3
]
}
]
}
]
}
]
},
2
]
},
{
"op": "-",
"args": [
{
"op": "index",
"args": [
"V_sweep",
{
"op": "-",
"args": [
"q",
3
]
}
]
},
{
"op": "+",
"args": [
{
"op": "*",
"args": [
{
"op": "index",
"args": [
"s_dn",
{
"op": "floor",
"args": [
{
"op": "/",
"args": [
{
"op": "-",
"args": [
"q",
1
]
},
3
]
}
]
}
]
},
{
"op": "index",
"args": [
"V_sweep",
{
"op": "-",
"args": [
"q",
4
]
}
]
}
]
},
{
"op": "*",
"args": [
{
"op": "index",
"args": [
"c_dn",
{
"op": "floor",
"args": [
{
"op": "/",
"args": [
{
"op": "-",
"args": [
"q",
1
]
},
3
]
}
]
}
]
},
{
"op": "index",
"args": [
"V_sweep",
{
"op": "-",
"args": [
"q",
2
]
}
]
}
]
}
]
}
]
},
{
"op": "-",
"args": [
{
"op": "index",
"args": [
"V_sweep",
{
"op": "-",
"args": [
"q",
3
]
}
]
},
{
"op": "+",
"args": [
{
"op": "*",
"args": [
{
"op": "index",
"args": [
"s_dn",
{
"op": "floor",
"args": [
{
"op": "/",
"args": [
{
"op": "-",
"args": [
"q",
1
]
},
3
]
}
]
}
]
},
{
"op": "index",
"args": [
"V_sweep",
{
"op": "-",
"args": [
"q",
5
]
}
]
}
]
},
{
"op": "*",
"args": [
{
"op": "index",
"args": [
"a_dn",
{
"op": "floor",
"args": [
{
"op": "/",
"args": [
{
"op": "-",
"args": [
"q",
1
]
},
3
]
}
]
}
]
},
{
"op": "index",
"args": [
"V_sweep",
{
"op": "-",
"args": [
"q",
4
]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
}
},
{
"lhs": "S_dn",
"rhs": {
"op": "aggregate",
"args": [],
"output_idx": [
"n"
],
"ranges": {
"n": {
"from": "lev_down_nodes"
}
},
"expr": {
"op": "index",
"args": [
"V_sweep",
{
"op": "-",
"args": [
{
"op": "*",
"args": [
3,
"n"
]
},
2
]
}
]
}
}
},
{
"lhs": "P_vap_dn",
"rhs": {
"op": "aggregate",
"args": [],
"output_idx": [
"n"
],
"ranges": {
"n": {
"from": "lev_down_nodes"
}
},
"expr": {
"op": "index",
"args": [
"V_sweep",
{
"op": "-",
"args": [
{
"op": "*",
"args": [
3,
"n"
]
},
1
]
}
]
}
}
},
{
"lhs": "P_cld_dn",
"rhs": {
"op": "aggregate",
"args": [],
"output_idx": [
"n"
],
"ranges": {
"n": {
"from": "lev_down_nodes"
}
},
"expr": {
"op": "index",
"args": [
"V_sweep",
{
"op": "*",
"args": [
3,
"n"
]
}
]
}
}
},
{
"lhs": "D_vap_dn",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "cumulative_from_top",
"bindings": {
"F": "F_vap_dn"
}
}
},
{
"lhs": "D_cld_dn",
"rhs": {
"op": "aggregate",
"args": [
"F_cabs_dn",
"F_cref_dn"
],
"output_idx": [
"n"
],
"reduce": "+",
"ranges": {
"n": {
"from": "lev_down_nodes"
},
"j": {
"from": "lev_down"
}
},
"filter": {
"op": "<",
"args": [
"j",
"n"
]
},
"expr": {
"op": "+",
"args": [
{
"op": "index",
"args": [
"F_cabs_dn",
"j"
]
},
{
"op": "index",
"args": [
"F_cref_dn",
"j"
]
}
]
}
}
},
{
"lhs": "F_vap_dn",
"rhs": {
"op": "aggregate",
"args": [
"a_dn",
"P_vap_dn"
],
"output_idx": [
"m"
],
"ranges": {
"m": {
"from": "lev_down"
}
},
"expr": {
"op": "*",
"args": [
{
"op": "index",
"args": [
"a_dn",
"m"
]
},
{
"op": "index",
"args": [
"P_vap_dn",
"m"
]
}
]
}
}
},
{
"lhs": "F_cabs_dn",
"rhs": {
"op": "aggregate",
"args": [
"b_dn",
"P_cld_dn"
],
"output_idx": [
"m"
],
"ranges": {
"m": {
"from": "lev_down"
}
},
"expr": {
"op": "*",
"args": [
{
"op": "index",
"args": [
"b_dn",
"m"
]
},
{
"op": "index",
"args": [
"P_cld_dn",
"m"
]
}
]
}
}
},
{
"lhs": "F_cref_dn",
"rhs": {
"op": "aggregate",
"args": [
"r_dn",
"P_cld_dn"
],
"output_idx": [
"m"
],
"ranges": {
"m": {
"from": "lev_down"
}
},
"expr": {
"op": "*",
"args": [
{
"op": "index",
"args": [
"r_dn",
"m"
]
},
{
"op": "index",
"args": [
"P_cld_dn",
"m"
]
}
]
}
}
},
{
"lhs": "F_sca_dn",
"rhs": {
"op": "aggregate",
"output_idx": [
"m"
],
"args": [
"s_dn",
"S_dn"
],
"ranges": {
"m": {
"from": "lev_down"
}
},
"expr": {
"op": "*",
"args": [
{
"op": "index",
"args": [
"s_dn",
"m"
]
},
{
"op": "index",
"args": [
"S_dn",
"m"
]
}
]
}
}
},
{
"lhs": "D_sca_dn",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "cumulative_from_top",
"bindings": {
"F": "F_sca_dn"
}
}
},
{
"lhs": "S",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "to_bottom_up_nodes",
"bindings": {
"G": "S_dn"
}
}
},
{
"lhs": "D_vap",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "to_bottom_up_nodes",
"bindings": {
"G": "D_vap_dn"
}
}
},
{
"lhs": "D_cld",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "to_bottom_up_nodes",
"bindings": {
"G": "D_cld_dn"
}
}
},
{
"lhs": "D_sca",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "to_bottom_up_nodes",
"bindings": {
"G": "D_sca_dn"
}
}
},
{
"lhs": "F_vap",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "to_bottom_up_layers",
"bindings": {
"F": "F_vap_dn"
}
}
},
{
"lhs": "F_cabs",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "to_bottom_up_layers",
"bindings": {
"F": "F_cabs_dn"
}
}
},
{
"lhs": "F_cref",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "to_bottom_up_layers",
"bindings": {
"F": "F_cref_dn"
}
}
},
{
"lhs": "F_sca",
"rhs": {
"op": "apply_expression_template",
"args": [],
"name": "to_bottom_up_layers",
"bindings": {
"F": "F_sca_dn"
}
}
},
{
"lhs": "S_top",
"rhs": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [
"S"
],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "max",
"args": [
{
"op": "index",
"args": [
"S",
{
"op": "+",
"args": [
"k",
1
]
}
]
},
"par.S_min"
]
}
}
},
{
"lhs": "f_raw",
"rhs": {
"op": "/",
"args": [
{
"op": "+",
"args": [
"F_vap",
"F_cabs",
"F_cref",
"F_sca"
]
},
"S_top"
]
}
},
{
"lhs": "tau_raw",
"rhs": {
"op": "-",
"args": [
1.0,
"f_raw"
]
}
},
{
"lhs": "ff",
"rhs": {
"op": "ifelse",
"args": [
{
"op": "<",
"args": [
"tau_raw",
"par.tau_min"
]
},
{
"op": "/",
"args": [
{
"op": "-",
"args": [
1.0,
"par.tau_min"
]
},
"f_raw"
]
},
1.0
]
}
},
{
"lhs": "xabs",
"rhs": {
"op": "/",
"args": [
{
"op": "*",
"args": [
"ff",
"F_vap"
]
},
"S_top"
]
}
},
{
"lhs": "xabsc",
"rhs": {
"op": "/",
"args": [
{
"op": "*",
"args": [
"ff",
"F_cabs"
]
},
"S_top"
]
}
},
{
"lhs": "xalb",
"rhs": {
"op": "/",
"args": [
{
"op": "*",
"args": [
"ff",
"F_cref"
]
},
"S_top"
]
}
},
{
"lhs": "xsca",
"rhs": {
"op": "/",
"args": [
{
"op": "*",
"args": [
"ff",
"F_sca"
]
},
"S_top"
]
}
},
{
"lhs": "tau",
"rhs": {
"op": "max",
"args": [
"tau_raw",
"par.tau_min"
]
}
},
{
"lhs": "q_abs",
"rhs": {
"op": "/",
"args": [
{
"op": "*",
"args": [
"ff",
{
"op": "+",
"args": [
"F_vap",
"F_cabs"
]
}
]
},
"dz"
]
}
},
{
"lhs": "dTdt",
"rhs": {
"op": "/",
"args": [
{
"op": "*",
"args": [
"daylight",
"q_abs"
]
},
{
"op": "*",
"args": [
"rho",
"wrf.cp"
]
}
]
}
},
{
"lhs": "dthdt",
"rhs": {
"op": "/",
"args": [
"dTdt",
"exner"
]
}
},
{
"lhs": "gsw",
"rhs": {
"op": "*",
"args": [
"daylight",
{
"op": "-",
"args": [
1.0,
"albedo"
]
},
{
"op": "index",
"args": [
"S",
1
]
}
]
}
},
{
"lhs": "n_renorm",
"rhs": {
"op": "*",
"args": [
"daylight",
{
"op": "aggregate",
"output_idx": [],
"reduce": "+",
"args": [
"tau_raw"
],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "ifelse",
"args": [
{
"op": "<",
"args": [
{
"op": "index",
"args": [
"tau_raw",
"k"
]
},
"par.tau_min"
]
},
1.0,
0.0
]
}
}
]
}
},
{
"lhs": "n_floor",
"rhs": {
"op": "*",
"args": [
"daylight",
{
"op": "aggregate",
"output_idx": [],
"reduce": "+",
"args": [
"S"
],
"ranges": {
"kn": {
"from": "lev_nodes"
}
},
"expr": {
"op": "ifelse",
"args": [
{
"op": "<=",
"args": [
{
"op": "index",
"args": [
"S",
"kn"
]
},
"par.S_min"
]
},
1.0,
0.0
]
}
}
]
}
}
],
"tests": [
{
"id": "scm_call1_morning_clear",
"description": "Reference: WRF 4.8 em_scm_xy single-column run (GNU real32 build, dt = 60 s, 59 layers, mp=6 ra_lw=1 ra_sw=1 sf_sfclay=1 sf_surface=1 bl_pbl=1, swrad_scat = 1, icloud = 1) dumped by the instrumented fork ctessum-claude/WRF, commit e42a269 (v4.8.0-2-ge42a269e; module_esm_dump, SWRAD/SWPARA hooks) and replayed through the real64 (-fdefault-real-8) standalone kernels/sw_driver of that commit; inputs are the dumped SWRAD arguments (single-precision values widened) of tile column 1, and every expected value is the real64 replay (the same inputs through the same Fortran in binary64, so the scheme's constants and literals are exact and the only residual is evaluation-order roundoff). The scheme is diagnostic (no time step), so no small-dt replay is involved. Column assertions are Linf_error of the whole field against the inline reference (WRF's top-down arrays reversed onto lev/lev_nodes, the top-of-atmosphere interface appended as 0 for the cumulative fields, per-cent quantities divided by 100, g/m^2 paths converted to kg/m^2); spot checks use a relative tolerance. Tolerances: measured Linf mismatch between this component and the real64 replay over all six regimes is at binary64 roundoff -- S and the cumulative depletions <= 1.2e-12 W/m^2 (1e-15 relative), U <= 4e-15 kg/m^2, W <= 1e-16 kg/m^2, the dimensionless absorptances/reflectances and layer fractions <= 4e-15, heating rates <= 1.3e-18 K/s -- so the column tolerances are set at about 1e-9 of each field's column maximum (S, D_*: abs 1e-6 W/m^2; U: 1e-8 kg/m^2; W: 1e-12 kg/m^2; rho: 1e-9 kg/m^3; m_air: 1e-7 kg/m^2; fractions: abs 1e-9; dT/dt, dtheta/dt: 1e-13 K/s), i.e. the 1e-9 relative contract for double-precision references, roughly a million times the measured error; scalar spot checks use rel 1e-9. Regime: first radiation call of the run (call 1, 19:00 UTC = 12:34 LST, cos zenith 0.629), no condensate at all (qc = qr = qs = qg = 0, qi = 0): pure clear-sky vapour absorption and scattering, the cloud tables return 0 everywhere, gsw = 542 W/m^2.",
"parameter_overrides": {
"csza": 0.6286112070083618,
"albedo": 0.20000000298023224,
"solcon": 1384.3160400390625,
"obscur": 0.0,
"cssca": 9.999999747378752e-06,
"icloud": 1.0
},
"expression_template_imports": [
{
"ref": "./tests/scm_call1_morning_clear_inputs.esm"
}
],
"time_span": {
"start": 0,
"end": 1
},
"assertions": [
{
"variable": "daylight",
"time": 0.0,
"expected": 1.0,
"tolerance": {
"abs": 0.0
}
},
{
"variable": "S_toa",
"time": 0.0,
"expected": 870.1965768099908,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "gsw",
"time": 0.0,
"expected": 542.4128734982716,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "rho",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
1.1905377628716882,
1.1852256323047996,
1.1797693128155913,
1.174164323899759,
1.1684060930380629,
1.1624904225284554,
1.1564125530738538,
1.1501673496519331,
1.1437500451701321,
1.137155248750941,
1.1303776311082572,
1.123411516139269,
1.116250982473323,
1.108890417925363,
1.0899485527598152,
1.0709177046130327,
1.0605276115020834,
1.0499008199091981,
1.039032403586955,
1.027916828582693,
1.016548372254304,
1.0049217429174195,
0.9930310337963525,
0.9808698398532785,
0.9684323237717261,
0.9557120784241295,
0.9428204910531117,
0.9296373486057353,
0.9161540754493631,
0.9023629855802144,
0.8882570135750102,
0.8738277070947928,
0.8590673920649767,
0.84396688572582,
0.8285174942834097,
0.8127094617020386,
0.7972722182194152,
0.7816473451183692,
0.7659589566017052,
0.7514262828510911,
0.7364107952746105,
0.7208892648781282,
0.7048374162859617,
0.6882286949658596,
0.6710345004919588,
0.6532235552606354,
0.6347608252996069,
0.6156064483237612,
0.5957164104871129,
0.5750430874999698,
0.5535329113471962,
0.5311252755313098,
0.5077504651551652,
0.483327942453059,
0.4577633112025035,
0.4309440030354307,
0.4027333662026162,
0.3729617517044453,
0.3414136706942198
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "m_air",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
60.921863381262575,
62.46435768441636,
64.04507759991688,
65.66691711360774,
67.3293119690078,
69.03329889696002,
70.78135567391318,
72.57286405831124,
74.41031578201012,
76.29427480967625,
78.22552651723794,
80.20564429840718,
82.23507649944553,
84.31763416827934,
86.38480922351668,
88.35914253877192,
90.62785827144104,
92.95569637208757,
95.34454070517448,
97.79589665060433,
100.31006980476147,
102.8919892400688,
105.53985224301688,
108.25728234923623,
111.0461577525274,
113.90718338609484,
116.77623603589572,
119.71463966853618,
122.7270694782138,
125.81574848408975,
128.98073020897326,
132.22468165610422,
135.5501800187525,
138.95865322290916,
142.45181074990163,
146.0331361533973,
149.68883220338347,
153.43054206574095,
157.2674933367312,
161.2066211870862,
165.24439775958416,
169.3818734995849,
173.62540909030147,
177.96895069548805,
182.42013918232254,
186.98237208203005,
191.66336569965694,
196.51612681671162,
201.49002251543072,
206.59068718778823,
211.8209364999566,
217.18277874434565,
222.681800924803,
228.31911681542076,
234.09810099033575,
240.02318437814597,
246.1007637054272,
252.3322993579994,
258.7182117929054
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-07
}
},
{
"variable": "W",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"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,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 1e-12
}
},
{
"variable": "U",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
9.894143952336787,
9.741839283103428,
9.585678377839239,
9.425565672506588,
9.261398368102721,
9.093075076266194,
8.920491816808262,
8.743538415098627,
8.562106242110987,
8.37608043948896,
8.1853447389644,
7.9897809088291964,
7.789266783890686,
7.583679078090469,
7.372884977749657,
7.199467912637198,
7.154042419584365,
7.087411065876932,
6.997993844220589,
6.884115499987514,
6.744001056554137,
6.575771485787315,
6.377431484194361,
6.146874026627773,
5.881864659333285,
5.580037508161992,
5.238892099036628,
4.8985523318845035,
4.560338729732255,
4.224850858201733,
3.8927305792930946,
3.564669993469569,
3.2414073394377847,
2.9237301813735437,
2.612481393294372,
2.308561440986593,
2.0129279070365125,
1.7354725252104877,
1.4805599741924604,
1.2490504649058742,
1.0373042746841743,
0.8471197788934582,
0.6804084526396263,
0.5391959018785112,
0.42563865402629714,
0.34201827131927587,
0.2907537359408366,
0.27158739985505326,
0.2519357876698236,
0.23178678739331998,
0.2111277191964331,
0.18994562608154214,
0.16822734717554474,
0.14595916764560599,
0.1231272565408465,
0.09971744703319448,
0.07571512745533093,
0.05110505170649104,
0.025871822408136107,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-08
}
},
{
"variable": "A_vap",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.11305137636481286,
0.11255600500524462,
0.11204154167112042,
0.11150697562554814,
0.1109512017535957,
0.11037304111691532,
0.10977121849007403,
0.10914433877165605,
0.10849090167567649,
0.10780925995485774,
0.10709761980278663,
0.10635401977801151,
0.10557630068789407,
0.10476208965030386,
0.1039087347188069,
0.10319196879154316,
0.1030019434847107,
0.10272146208373766,
0.10234174524413937,
0.10185252008108873,
0.10124167134893378,
0.10049478055163191,
0.09959446852982144,
0.09851957769273947,
0.09724391133391655,
0.0957344796838376,
0.09394887948244156,
0.09207396005850103,
0.09010668480127555,
0.08803912868178403,
0.08586213017044778,
0.08356501937107873,
0.08113515648818491,
0.07855734472825807,
0.0758130137106092,
0.07287897619466409,
0.06972548808300612,
0.06642519497370981,
0.06301643498626333,
0.05950777386545351,
0.055833714194295225,
0.052008460618831985,
0.04807070033811327,
0.044106138632300285,
0.04028791043952957,
0.036934592726007666,
0.03454946299424701,
0.03357336974286598,
0.032515312641933164,
0.03136167287734098,
0.030094958815048353,
0.028692185679826933,
0.027122275995230975,
0.025341676498522366,
0.023286655007122365,
0.020858494835465004,
0.01789228830914737,
0.01408171458917308,
0.008758700936624684,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "R_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"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,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 1e-09
}
},
{
"variable": "A_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"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,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
678.0160943986463,
679.0564857281682,
680.1296874463197,
681.2370181454979,
682.3799104574018,
683.5598585212599,
684.7784536123676,
686.0374192380627,
687.338567124108,
688.6838648924885,
690.0754161489172,
691.5154808562665,
693.0065092711353,
694.5511440068091,
696.1523106751192,
697.6723221099783,
698.8035622249263,
700.0329982227952,
701.3686295626409,
702.8197180897552,
704.3970718757072,
706.113411802896,
707.9839638608593,
710.0270573765702,
712.2652201955924,
714.7265983343551,
717.4470902923651,
720.2791506365189,
723.22679583151,
726.2980732400413,
729.502142620274,
732.849485096403,
736.3523243629709,
740.0251242730476,
743.8852675058492,
747.9541081300717,
752.2586254456389,
756.7425487427822,
761.3773066598691,
766.1585936754697,
771.1429717908177,
776.3220382471886,
781.667201553118,
787.1108321605637,
792.5120267347847,
797.6074302499056,
801.9765243709037,
805.2458796656132,
808.6591100173118,
812.2307448309526,
815.9788965383934,
819.9266691473567,
824.1044596541976,
828.5538953540021,
833.334604579516,
838.5373520090297,
844.3116446721625,
850.9321985178051,
858.9933076237618,
870.1965768099908
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "D_vap",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
93.03707363945328,
92.65478997561377,
92.25742512644501,
91.84416217697368,
91.41410767942014,
90.96630713835677,
90.49972718705533,
90.0132367703387,
89.5056179620074,
88.97553287190442,
88.42152319160525,
87.84199295477067,
87.23518409493433,
86.59916289303948,
85.93176758800838,
85.37050916696094,
85.22152455928043,
85.00133702911702,
84.70285245026875,
84.31776498676737,
83.83627364701256,
83.24670783789576,
82.5349941165596,
81.68399116486586,
80.67246723237116,
79.47367620148538,
78.05323066816763,
76.55922292383813,
74.98891291010206,
73.33562536320328,
71.59164537928751,
69.74799005157875,
67.79402468561102,
65.71697323119646,
63.501237402545236,
61.12736201568158,
58.57042225317641,
55.88850159733869,
53.112102688552866,
50.247609982988486,
47.24081910134197,
44.10248725177931,
40.863558295976155,
37.593965237611094,
34.436487108086396,
31.65570434966296,
29.672114454821443,
28.85795133443124,
27.972747057186957,
27.004571824043637,
25.938103720532432,
24.753209478933382,
23.422668432592133,
21.90833581180861,
20.15439756971839,
18.074407013885594,
15.523957040525168,
12.234795576878764,
7.62179157235326,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "D_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"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,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 1e-06
}
},
{
"variable": "D_sca",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
99.14340877189198,
98.48530110620949,
97.80946423722666,
97.1153964875198,
96.40255867316931,
95.67041115037463,
94.91839601056839,
94.14592080158978,
93.35239172387577,
92.53717904559812,
91.6996374694686,
90.83910299895368,
89.9548834439212,
89.04626991014221,
88.1124985468631,
87.15374553305162,
86.17149002578407,
85.16224155807848,
84.1250947970811,
83.05909373346817,
81.96323128727107,
80.83645716919905,
79.67761883257197,
78.48552826855465,
77.25888938202712,
75.99630227415024,
74.69625584945797,
73.35820324963356,
71.98086806837848,
70.5628782067459,
69.10278881042902,
67.59910166200878,
66.05022776140855,
64.45447930574636,
62.81007190159594,
61.11510666423699,
59.3675291111749,
57.56552646986943,
55.70716746156847,
53.79037315153235,
51.81278591783079,
49.77205131102246,
47.665816960896215,
45.49177941181568,
43.248062967119296,
40.93344221042196,
38.54793798426544,
36.092745809946145,
33.56471973549186,
30.9612601549943,
28.279576551064707,
25.5166981837004,
22.669448723200762,
19.73434564417984,
16.70757466075601,
13.58481778707507,
10.360975097302813,
7.029582715306751,
3.581477613875686,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "xabs",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.0005629629815398702,
0.0005842486462555956,
0.0006066360730019394,
0.0006302273718246891,
0.000655100698908949,
0.0006813589838291862,
0.000709131022702733,
0.0007385280451455082,
0.0007697074334473405,
0.0008028248323798059,
0.0008380582255612898,
0.0008756178357899627,
0.0009157298312485502,
0.0009586915029899927,
0.0008044728209226134,
0.00021319955382906268,
0.0003145387870606096,
0.0004255744643646361,
0.0005479178423565549,
0.0006835510239596444,
0.0008349449242317694,
0.0010052681383557864,
0.0011985500310904475,
0.00142015067395391,
0.0016772721676785673,
0.001979861027436737,
0.002074206567008385,
0.0021712553002556476,
0.002276320986951552,
0.0023906440872834473,
0.002515735311550688,
0.0026535739771829073,
0.0028067309964035637,
0.002978598885390344,
0.003173824919283467,
0.0033990168753338457,
0.0035440331197093937,
0.0036465480183087797,
0.0037387725324891743,
0.003899135428367942,
0.004042564419076024,
0.00414361629778968,
0.004153916989542956,
0.003984139070461515,
0.003486405282799534,
0.0024733765073703517,
0.0010110739352411115,
0.0010946569033586158,
0.0011919953034341523,
0.001306980006511756,
0.001445122211759771,
0.0016145296033218393,
0.0018276814933523675,
0.0021047226797634563,
0.002480498395032018,
0.0030207447563402236,
0.003865362562817139,
0.005370244405380159,
0.008758700936624684
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "xabsc",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"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,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 1e-09
}
},
{
"variable": "xalb",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"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,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": 1e-09
}
},
{
"variable": "xsca",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.0009691501068232859,
0.0009936882354310789,
0.0010188344602827008,
0.0010446348191474157,
0.0010710803357858476,
0.0010981875025991052,
0.001125995736262529,
0.0011544952017376478,
0.0011837255377035877,
0.0012136957157575126,
0.00124441822972549,
0.001275918109286513,
0.0013082024867704732,
0.0013413319886470803,
0.001374216782617809,
0.0014056246424104378,
0.001441715562363228,
0.0014787470058991912,
0.0015167489416920389,
0.0015557453174513843,
0.0015957409946301137,
0.0016368143853252976,
0.0016789368118193932,
0.0017221659176207974,
0.0017665315811938485,
0.0018120450166750233,
0.001857686146602959,
0.0019044305177762695,
0.0019523525035759462,
0.0020014874679770544,
0.0020518362624249273,
0.0021034413138305524,
0.0021563436204003893,
0.002210565897700737,
0.0022661353403037768,
0.002323107364873109,
0.0023812624839177313,
0.002440785917895964,
0.002501824460182241,
0.002564488436053607,
0.002628721724061809,
0.0026945410347796383,
0.002762047554488559,
0.00283114497825437,
0.0029019548576323054,
0.0029745312408337443,
0.0030489968794858526,
0.00312619500990988,
0.0032053201594079185,
0.0032864619603595524,
0.0033696652046181544,
0.003454961840267639,
0.0035424407458333053,
0.0036321196393267236,
0.0037240522037559906,
0.0038183089267044765,
0.003914991567834478,
0.004014123359085973,
0.004115710989124827
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.9984678869116369,
0.9984220631183134,
0.9983745294667153,
0.998325137809028,
0.9982738189653052,
0.9982204535135718,
0.9981648732410348,
0.9981069767531169,
0.9980465670288491,
0.9979834794518626,
0.9979175235447133,
0.9978484640549236,
0.997776067681981,
0.9976999765083631,
0.9978213103964595,
0.9983811758037605,
0.9982437456505763,
0.9980956785297361,
0.9979353332159513,
0.9977607036585888,
0.9975693140811381,
0.997357917476319,
0.9971225131570902,
0.9968576834084253,
0.9965561962511277,
0.9962080939558882,
0.9960681072863887,
0.9959243141819681,
0.9957713265094725,
0.9956078684447395,
0.9954324284260244,
0.9952429847089865,
0.9950369253831961,
0.9948108352169089,
0.9945600397404128,
0.9942778757597931,
0.9940747043963728,
0.9939126660637951,
0.9937594030073285,
0.9935363761355785,
0.9933287138568622,
0.9931618426674307,
0.9930840354559685,
0.9931847159512841,
0.993611639859568,
0.9945520922517959,
0.995939929185273,
0.9957791480867314,
0.995602684537158,
0.9954065580331286,
0.9951852125836221,
0.9949305085564106,
0.9946298777608144,
0.9942631576809099,
0.9937954494012121,
0.9931609463169552,
0.9922196458693483,
0.9906156322355337,
0.9871255880742504
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
6.246872186676092e-06,
6.33296703276152e-06,
6.423781697222797e-06,
6.5196896812481e-06,
6.6211053244051116e-06,
6.728488350691114e-06,
6.842352940662854e-06,
6.9632742690033835e-06,
7.091898317955752e-06,
7.228954027700366e-06,
7.375265586174828e-06,
7.531769840925654e-06,
7.699535954370172e-06,
7.879792725723514e-06,
6.468082499024559e-06,
1.678571974640571e-06,
2.418694751054525e-06,
3.196656332810309e-06,
4.020810527456474e-06,
4.901374716760622e-06,
5.8511039753263714e-06,
6.886108067903012e-06,
8.027210347707391e-06,
9.301845054149593e-06,
1.0747068265741632e-05,
1.2414337020243151e-05,
1.2736451165869754e-05,
1.3058346742945985e-05,
1.3410905100458058e-05,
1.3799283891667415e-05,
1.4230001974173216e-05,
1.4711413088679542e-05,
1.5254473247119113e-05,
1.5873856243626547e-05,
1.658975614847124e-05,
1.7430873202455303e-05,
1.783637455903802e-05,
1.801441255890206e-05,
1.8132547127226695e-05,
1.8568225767564677e-05,
1.890698060036975e-05,
1.9036388034733274e-05,
1.874694389092576e-05,
1.766225579323719e-05,
1.5175546444632947e-05,
1.0560908528847385e-05,
4.2288509143864655e-06,
4.484307305233755e-06,
4.783551812046164e-06,
5.139101431580464e-06,
5.568789014067572e-06,
6.09892019083947e-06,
6.769967934466629e-06,
7.64754569171785e-06,
8.845319636043327e-06,
1.0578246306921532e-05,
1.3305227074048721e-05,
1.819956657567628e-05,
2.9327843245168613e-05
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-13
}
},
{
"variable": "dthdt",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
6.304725196616424e-06,
6.403060502727571e-06,
6.506879572546973e-06,
6.616620323766804e-06,
6.732769866752504e-06,
6.855869726436352e-06,
6.986524091141328e-06,
7.125410196148352e-06,
7.273289045481584e-06,
7.431018705816474e-06,
7.599570286763505e-06,
7.780048359333626e-06,
7.97371323793699e-06,
8.182013703266453e-06,
6.734575915112424e-06,
1.7526887454740946e-06,
2.53290657802316e-06,
3.357789738346841e-06,
4.23681112033183e-06,
5.181579122411557e-06,
6.206604625375212e-06,
7.330239168554316e-06,
8.576219884175453e-06,
9.975833973920857e-06,
1.1571355883825888e-05,
1.3421489350081682e-05,
1.3828686560273033e-05,
1.4241376780478482e-05,
1.4693783682643256e-05,
1.5192490801425163e-05,
1.5745796718609488e-05,
1.636428940611982e-05,
1.706181107252413e-05,
1.7856821299055294e-05,
1.8774634660147184e-05,
1.9851093463190942e-05,
2.0447417818470705e-05,
2.0795099381057183e-05,
2.108443568493905e-05,
2.175710719703773e-05,
2.233363996447059e-05,
2.2678926590786272e-05,
2.2536179700293046e-05,
2.143573932722515e-05,
1.860509009862531e-05,
1.3087659384432315e-05,
5.301072464657889e-06,
5.690618851159968e-06,
6.150636666637535e-06,
6.7018149787934495e-06,
7.373756497695124e-06,
8.210310661296016e-06,
9.27922896049405e-06,
1.0690813493865396e-05,
1.2636957702160911e-05,
1.5482130797935015e-05,
2.0007861409455735e-05,
2.8221541669647565e-05,
4.7114340848519924e-05
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-13
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 1
},
"expected": 678.0160943986463,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 30
},
"expected": 726.2980732400413,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 60
},
"expected": 870.1965768099908,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 6.246872186676092e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 10
},
"expected": 7.228954027700366e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 30
},
"expected": 1.3799283891667415e-05,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 2.9327843245168613e-05,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 6.304725196616424e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 30
},
"expected": 1.5192490801425163e-05,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 4.7114340848519924e-05,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 0.9984678869116369,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 20
},
"expected": 0.9977607036585888,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 0.9871255880742504,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "n_renorm",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0
}
},
{
"variable": "n_floor",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0
}
}
]
},
{
"id": "scm_call120_noon_ice_cloud",
"description": "Reference: WRF 4.8 em_scm_xy single-column run (GNU real32 build, dt = 60 s, 59 layers, mp=6 ra_lw=1 ra_sw=1 sf_sfclay=1 sf_surface=1 bl_pbl=1, swrad_scat = 1, icloud = 1) dumped by the instrumented fork ctessum-claude/WRF, commit e42a269 (v4.8.0-2-ge42a269e; module_esm_dump, SWRAD/SWPARA hooks) and replayed through the real64 (-fdefault-real-8) standalone kernels/sw_driver of that commit; inputs are the dumped SWRAD arguments (single-precision values widened) of tile column 1, and every expected value is the real64 replay (the same inputs through the same Fortran in binary64, so the scheme's constants and literals are exact and the only residual is evaluation-order roundoff). The scheme is diagnostic (no time step), so no small-dt replay is involved. Column assertions are Linf_error of the whole field against the inline reference (WRF's top-down arrays reversed onto lev/lev_nodes, the top-of-atmosphere interface appended as 0 for the cumulative fields, per-cent quantities divided by 100, g/m^2 paths converted to kg/m^2); spot checks use a relative tolerance. Tolerances: measured Linf mismatch between this component and the real64 replay over all six regimes is at binary64 roundoff -- S and the cumulative depletions <= 1.2e-12 W/m^2 (1e-15 relative), U <= 4e-15 kg/m^2, W <= 1e-16 kg/m^2, the dimensionless absorptances/reflectances and layer fractions <= 4e-15, heating rates <= 1.3e-18 K/s -- so the column tolerances are set at about 1e-9 of each field's column maximum (S, D_*: abs 1e-6 W/m^2; U: 1e-8 kg/m^2; W: 1e-12 kg/m^2; rho: 1e-9 kg/m^3; m_air: 1e-7 kg/m^2; fractions: abs 1e-9; dT/dt, dtheta/dt: 1e-13 K/s), i.e. the 1e-9 relative contract for double-precision references, roughly a million times the measured error; scalar spot checks use rel 1e-9. Regime: 1 h into the run (call 120, 20:00 UTC = 13:34 LST, cos zenith 0.562) with a thin cirrus layer (qi up to 4.6e-5 kg/kg, effective liquid water path 3.1 g/m^2 through the 0.1 ice weight), so the Stephens cloud tables are exercised inside their first alw interval (cumulative cloud albedo up to 30 %, layer reflection up to 9.6 %, minimum layer transmissivity 0.88); gsw = 315 W/m^2.",
"parameter_overrides": {
"csza": 0.5617246031761169,
"albedo": 0.20000000298023224,
"solcon": 1384.34814453125,
"obscur": 0.0,
"cssca": 9.999999747378752e-06,
"icloud": 1.0
},
"expression_template_imports": [
{
"ref": "./tests/scm_call120_noon_ice_cloud_inputs.esm"
}
],
"time_span": {
"start": 0,
"end": 1
},
"assertions": [
{
"variable": "daylight",
"time": 0.0,
"expected": 1.0,
"tolerance": {
"abs": 0.0
}
},
{
"variable": "S_toa",
"time": 0.0,
"expected": 777.6224121444102,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "gsw",
"time": 0.0,
"expected": 315.1387028099304,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "rho",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
1.1882461455048003,
1.1833917601194026,
1.1780775474208702,
1.1725343400583939,
1.1668039528757117,
1.1608981426718805,
1.1548200123941375,
1.1485687612602415,
1.1421425608669449,
1.1355383023014927,
1.1287535535137803,
1.1217869701359786,
1.114645810179855,
1.1074133193610034,
1.0927540538207259,
1.071260767973995,
1.0606674681425088,
1.0499866438555263,
1.039091855556952,
1.0279625942791653,
1.01658613071161,
1.0049549719278756,
0.9930611172322815,
0.9808991863203149,
0.9684662522976394,
0.9557531867235668,
0.9428617409676621,
0.9296782046639335,
0.9161953299864448,
0.9024068961156496,
0.888300422877125,
0.873872634171112,
0.859114617397605,
0.8440173364448315,
0.8285745486494659,
0.8127820667284728,
0.7973383101753023,
0.7817139048046132,
0.766031659652959,
0.7514621566591547,
0.7364247639976375,
0.720890028503199,
0.704828672635759,
0.6882205064401412,
0.671035525000523,
0.6532358272278359,
0.6347615718009271,
0.6155804737790096,
0.5956690380589317,
0.5749817307816427,
0.5535838798090931,
0.5306443061147867,
0.5070629550241419,
0.48325956629626343,
0.45789663016355947,
0.4310167572831105,
0.4027497395886416,
0.3729621923440745,
0.34141283116931365
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "m_air",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
60.99308477644407,
62.518327025647004,
64.09230087128896,
65.710068946424,
67.3695218549805,
69.07110125419246,
70.81691963760801,
72.60627931536509,
74.44153248664655,
76.32281171308841,
78.25099166337174,
80.22728187097789,
82.25111852564723,
84.3219135064156,
86.4039376463457,
88.36044414044098,
90.6277685139275,
92.95586103064815,
95.3444151256693,
97.79585886402121,
100.31007285113621,
102.89195658934653,
105.53989772085423,
108.25716859648836,
111.04614690499214,
113.90694946629472,
116.77605079458885,
119.71490754457008,
122.72700388159001,
125.81548178355771,
128.9807442872736,
132.22465274085025,
135.5500807784695,
138.9587175474322,
142.4519105794684,
146.03288729674927,
149.68878263768343,
153.43024778191307,
157.26259674167898,
161.20661192256657,
165.2442959820773,
169.3824049198503,
173.6249760052356,
177.9691855420861,
182.42009004001034,
186.98333317626154,
191.66638058215943,
196.5162512674653,
201.48970578779347,
206.59110432152318,
211.83016907116777,
217.20867527855208,
222.6919977196627,
228.30994135209096,
234.07684677254719,
239.99383450549382,
246.0659317181276,
252.29362584334604,
258.6778997082085
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-07
}
},
{
"variable": "W",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.002997985434091424,
0.0021324950417247693,
0.001098682913044643,
0.0004636966184857311,
0.00014627035408090532,
3.242280484117975e-05,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-12
}
},
{
"variable": "U",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
10.135266425135013,
9.938266250464014,
9.748262015406992,
9.558539152799575,
9.367298554268983,
9.173749243995234,
8.977465852017167,
8.77819955433473,
8.575819023231645,
8.370279533970228,
8.161633519637014,
7.950063691332471,
7.735983563609426,
7.520375523274632,
7.306877507317923,
7.121521081385254,
7.075256393779865,
7.008624900329904,
6.919209603419082,
6.8053336623854275,
6.665221527307166,
6.496994228569019,
6.298656529838755,
6.0681014793614745,
5.803094154920062,
5.501269567017426,
5.160227203116742,
4.819887975843153,
4.481673589023628,
4.146185668211795,
3.8140657710912826,
3.4860052996131565,
3.1627425623435754,
2.8450656368601477,
2.533816478225719,
2.2298960807620603,
1.934271176826828,
1.6568175946278345,
1.4019052646143306,
1.173452398159749,
0.9617905398768669,
0.7714924322705835,
0.6046561579327767,
0.4633167513622003,
0.34962982259888287,
0.26587006607515923,
0.21423100381747587,
0.19291516786620616,
0.17326308997538048,
0.15311410817736246,
0.1322170664545722,
0.1053088045083876,
0.0669868653030319,
0.038632287091019304,
0.02104175258308007,
0.010605521084507423,
0.004780489879454269,
0.0018244372202235472,
0.0005088791576718286,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-08
}
},
{
"variable": "A_vap",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.11747577353357176,
0.11683296162447797,
0.11620306543613844,
0.11556405103334862,
0.11490940121570245,
0.11423570064404995,
0.11354060111350947,
0.11282222353913346,
0.1120789782297004,
0.1113094726745832,
0.11051256963493652,
0.10968754303373614,
0.1088345280181847,
0.10795601482192256,
0.10706593459294275,
0.10627609848980782,
0.10607639097654553,
0.1057869220233543,
0.10539499162992837,
0.10488993555074291,
0.1042591655737956,
0.10348768189635223,
0.10255737654821023,
0.10144616632623575,
0.10012665309574566,
0.09856426585231785,
0.09671500652668472,
0.09477074570783037,
0.09272845344816322,
0.09057941107119259,
0.08831346616614245,
0.08591871171656723,
0.0833809434459319,
0.08068294125183507,
0.0778034366482043,
0.07471557322809728,
0.07138452070704292,
0.06788226525617123,
0.06424424620741492,
0.06052618779607888,
0.05655100860201262,
0.052359288095987326,
0.04797389823542091,
0.043459372691290396,
0.038977165849098695,
0.03488251242865872,
0.031826017884192606,
0.030394980442163454,
0.02896254585096872,
0.027356964513718527,
0.025509894366202653,
0.022771141423362323,
0.01778925662756073,
0.012619804370765186,
0.008154037867564032,
0.004666049730382505,
0.0022853728898061423,
0.0009136932605246258,
0.00026046260337021175,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "R_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.2960082634715171,
0.25134938498407466,
0.17374988267006658,
0.09648478896722949,
0.03710081866701993,
0.008996166525229282,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "A_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03306557537570226,
0.02807695953267548,
0.019408714387121585,
0.010777824324190315,
0.004144343477940278,
0.001004915939993551,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
393.92337997989193,
394.6442981097857,
395.3711429098632,
396.1143547302963,
396.877297344636,
397.6619186403466,
398.46969308601314,
399.30190555811873,
400.1597131641896,
401.0442090556852,
401.956379889949,
402.8970391033742,
403.8666210750107,
404.86447639923733,
405.88466361793473,
406.8756360567048,
407.6092613867821,
408.40236149936976,
409.26157372987046,
410.1926391755286,
411.2022656204223,
412.29834750118346,
413.49034236994044,
414.78964707282506,
416.21028547584154,
417.7698064594325,
419.490370832286,
421.282479824281,
423.14864990134254,
425.0941632972141,
427.1250749140547,
429.24835603628344,
431.47217861060193,
433.80628523913805,
436.26249918257105,
438.8554934999388,
441.6039991649984,
444.4753027834594,
447.45418492793266,
450.51550340839214,
453.7473860785774,
457.1325963662525,
460.6624928956342,
464.3079691909315,
467.99184763708195,
471.54027913953234,
474.6307162633209,
476.9677267857017,
479.35737318464936,
481.88745315469083,
484.5951056287182,
490.52855126168333,
532.2109397453206,
602.3769069306296,
672.9784816935509,
728.7682711821238,
757.7288379337921,
769.8576118063417,
773.8388679720447,
777.6224121444102
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "D_vap",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
60.53411724818375,
60.24171110418086,
59.95490296343356,
59.663654251219505,
59.364975330610186,
59.05728334314923,
58.73947746334157,
58.41066701569459,
58.07008986395149,
57.717070510852366,
57.35104702621059,
56.971643130308834,
56.57887620728399,
56.173847955355896,
55.762944546572854,
55.39782427807933,
55.30537674684495,
55.1711865971503,
54.989232595978706,
54.75440826317046,
54.46068205639913,
54.100862678572966,
53.66626438888537,
53.146289193277276,
52.527783110143695,
51.794142386493235,
50.924223810436246,
50.007912366597026,
49.043557875579076,
48.026800874141635,
46.95256705671978,
45.814907193271075,
44.606729246592366,
43.31944298498364,
41.94244963338906,
40.46238150057156,
38.86192427501599,
37.175061660727,
35.41836213638554,
33.61832428611367,
31.68862913837282,
29.648180175404242,
27.507365030222047,
25.297030751448155,
23.09587400538595,
21.078769731950448,
19.568253277667644,
18.858707086049378,
18.146065950593712,
17.344508430114345,
16.41910004732874,
15.034487786344652,
12.321688962566952,
9.160376174305531,
6.127646773677961,
3.573248241562648,
1.7651385212588595,
0.7081691365181356,
0.20254155790615683,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "D_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
248.17480241604426,
211.26317549480927,
146.64660437980623,
81.81304376267846,
31.614510612915417,
7.69940946215473,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "D_sca",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
72.29109561730677,
71.86258363141589,
71.42254697208578,
70.97058386386674,
70.50632017013632,
70.02939086188675,
69.53942229602782,
69.0360202715692,
68.51878981724143,
67.98731327884498,
67.44116592922295,
66.87991061169951,
66.3030955630878,
65.71026849078926,
65.10098468087492,
64.4751325105983,
63.83395471175536,
63.1750447488623,
62.4977865195332,
61.80154540668323,
61.08564516856095,
60.34938266562591,
59.59198608655654,
58.81265657927994,
58.01052425939703,
57.184643999456455,
56.33399820265997,
55.45820065450418,
54.556385068460536,
53.6276286740264,
52.67095087460764,
51.68532961582759,
50.669684988187846,
49.62286462126044,
48.54364402942198,
47.43071784487174,
46.28266940536774,
45.09822840119567,
43.87604578106391,
42.614765150876295,
41.31257762843189,
39.967816303725364,
38.57873491952586,
37.143592903002464,
35.66087120291415,
34.12954397389927,
32.54962330439348,
30.922158973630964,
29.245153710138858,
27.516631260576677,
25.734387169334948,
23.884570680338058,
21.826607941713494,
19.438524659668975,
16.70323991450295,
13.66638210780834,
10.429026227204627,
7.056631201550438,
3.5810026144592544,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "xabs",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.0007409359400437661,
0.0007254149572890943,
0.0007352642203849459,
0.0007525724515049757,
0.0007737527106266319,
0.0007975660014350346,
0.0008234632569243297,
0.0008511030484554572,
0.0008802504689703781,
0.0009106049883870327,
0.0009416894617694364,
0.0009725164262879119,
0.0010004045193846467,
0.0010123649539265046,
0.0008973756011348907,
0.00022680429517192506,
0.00032857339316548826,
0.0004445909727447121,
0.0005724732976199429,
0.0007143107694899349,
0.0008727160319873169,
0.0010510482232708985,
0.0012535876902366359,
0.0014860422837135302,
0.0017560884302961226,
0.0020737510001267293,
0.002175052340703608,
0.002278996970078456,
0.0023918394775196083,
0.002515033371988321,
0.002650353454941448,
0.0028001294326072236,
0.002967421877945135,
0.003156341317841117,
0.003372563759003527,
0.003624190968790543,
0.003795177378192357,
0.003925987472045663,
0.003995507006204264,
0.004252796174580447,
0.0044635822936017,
0.004647252984990054,
0.004760491797341872,
0.004703408311866906,
0.004277692410744467,
0.0031825088485103094,
0.0014876188718258106,
0.0014866593804976397,
0.0016633708041824849,
0.0019096527637953976,
0.0028226945351554782,
0.005097224842983981,
0.005248064379442557,
0.004506428486384444,
0.0035050902092264016,
0.002386222656160508,
0.0013729413966054357,
0.0006534016311910619,
0.00026046260337021175
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "xabsc",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"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,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0005528712890199714,
0.0069688660513856715,
0.010778499874614423,
0.009680135180921541,
0.006921246188001494,
0.0031713277862695016,
0.001004915939993551,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "xalb",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"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,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.004949391272541362,
0.06238639173211334,
0.09649083660153362,
0.08665810204469387,
0.061960091179138234,
0.028390228213068504,
0.008996166525229282,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "xsca",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.0010858182620230726,
0.0011129711088460178,
0.0011409914910222735,
0.0011697915119777303,
0.001199333619573735,
0.0012296256763326048,
0.0012607052895352527,
0.0012925600386852207,
0.0013252317983792439,
0.0013587229285216586,
0.001393049000242054,
0.0014282315460395225,
0.0014642605287847983,
0.0015011254785617344,
0.0015381903333956072,
0.0015730206832433305,
0.0016133843116724418,
0.0016548297538828156,
0.001697351552308161,
0.0017409929321331183,
0.001785751767857683,
0.0018317152819780885,
0.001878854770788851,
0.0019272284897184837,
0.001976878767136969,
0.002027807682709778,
0.0020788843355676375,
0.002131202796591465,
0.0021848250919991596,
0.0022398071562791154,
0.002296156164420428,
0.0023539052527332205,
0.002413105578565651,
0.0024737872126543146,
0.0025359741441869452,
0.002599723828757821,
0.0026648072384555135,
0.0027314139889620284,
0.0027996386820106087,
0.0028698512925844208,
0.0029417314262776984,
0.003015399355541216,
0.0030909269531258776,
0.003168263950696278,
0.0032475003658420367,
0.003328736669097624,
0.0034121057660023205,
0.003498444703897609,
0.0035869837204649292,
0.003677800436984253,
0.0037710679311917677,
0.0038668178065061217,
0.003964433653695053,
0.004064446070077421,
0.004167110351509364,
0.004272446445923156,
0.004380543848545485,
0.004491411236811567,
0.00460506610732078
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.9981732457979331,
0.9981616139338648,
0.9981237442885927,
0.9980776360365173,
0.9980269136697996,
0.9979728083222323,
0.9979158314535406,
0.9978563369128594,
0.9977945177326504,
0.9977306720830913,
0.9976652615379885,
0.9975992520276726,
0.9975353349518304,
0.9974865095675117,
0.9975644340654695,
0.9982001750215848,
0.9980580422951622,
0.9979005792733724,
0.997730175150072,
0.9975446962983768,
0.997341532200155,
0.997117236494751,
0.9968675575389746,
0.9965867292265679,
0.9962670328025669,
0.9958984413171634,
0.9957460633237288,
0.9955898002333301,
0.9954233354304813,
0.9952451594717325,
0.9950534903806382,
0.9948459653146595,
0.9946194725434893,
0.9943698714695046,
0.9940914620968095,
0.9937760852024516,
0.9935400153833521,
0.9933425985389923,
0.9932048543117851,
0.9928773525328352,
0.9925946862801206,
0.9923373476594688,
0.9921485812495322,
0.9921283277374369,
0.9924748072234135,
0.9934887544823922,
0.9951002753621718,
0.9950148959156049,
0.9947496454753526,
0.9944125467992202,
0.9879039749720913,
0.9216806995670107,
0.8835181654907143,
0.8950908882179229,
0.9234464620721244,
0.9617797748985782,
0.9842454322896264,
0.9948551871319974,
0.9951344712893089
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
4.772610077357006e-06,
4.567033373163456e-06,
4.523850141636232e-06,
4.5250429863643535e-06,
4.546767854856866e-06,
4.580528677585846e-06,
4.622305388184013e-06,
4.669725863225311e-06,
4.720992044197101e-06,
4.774244417275569e-06,
4.82682990786417e-06,
4.8737459459201875e-06,
4.9022286517348164e-06,
4.851201899380452e-06,
4.206805821002794e-06,
1.0415676597721743e-06,
1.474040477756268e-06,
1.9486547079462114e-06,
2.4518725810286138e-06,
2.9900075887387844e-06,
3.571001736368824e-06,
4.20490943039191e-06,
4.904740299485903e-06,
5.687709020857938e-06,
6.577032615909098e-06,
7.602885367902371e-06,
7.811589005766712e-06,
8.019338244455979e-06,
8.247590668798008e-06,
8.499919134490767e-06,
8.780871398509457e-06,
9.096378602539358e-06,
9.45421365181053e-06,
9.864977634407547e-06,
1.0343404011492928e-05,
1.0910469974296953e-05,
1.1218647843042382e-05,
1.1398207430199707e-05,
1.1394788109482905e-05,
1.1916697447681552e-05,
1.229275760806951e-05,
1.2582325982065201e-05,
1.267347811300953e-05,
1.231278273130599e-05,
1.1007932115048061e-05,
8.042158387186452e-06,
3.6854013497470556e-06,
3.6101269595002623e-06,
3.96033468480368e-06,
4.459353192666861e-06,
7.781675524595763e-06,
2.9432237674877496e-05,
4.315729247547336e-05,
4.162973303920195e-05,
3.231564210235598e-05,
1.7468161701531752e-05,
7.406188696647129e-06,
1.995145322895855e-06,
7.794798249701869e-07
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-13
}
},
{
"variable": "dthdt",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
4.816775582612733e-06,
4.617554165325104e-06,
4.582347034772636e-06,
4.592298476292746e-06,
4.623432007229901e-06,
4.667232030160684e-06,
4.719688895941551e-06,
4.778450227304526e-06,
4.841736950450968e-06,
4.907692623144684e-06,
4.973629386531375e-06,
5.034407710608302e-06,
5.076799995873153e-06,
5.037269520321472e-06,
4.380137675613966e-06,
1.0875594153255847e-06,
1.5436477244520056e-06,
2.0468836033458937e-06,
2.583593011794263e-06,
3.160947116956659e-06,
3.787974683686243e-06,
4.476119507691328e-06,
5.2402009851359334e-06,
6.0998366298018745e-06,
7.081495627321185e-06,
8.219707775835243e-06,
8.481499535950388e-06,
8.745871708588325e-06,
9.036564657053636e-06,
9.35810738833429e-06,
9.716236978290691e-06,
1.0118406526551217e-05,
1.0574361789601415e-05,
1.1097332553733299e-05,
1.170565797346569e-05,
1.2425377835481264e-05,
1.2860957212953153e-05,
1.315765056246031e-05,
1.3249828697153345e-05,
1.3963283853145312e-05,
1.452070049077663e-05,
1.4989937950364068e-05,
1.52351453256777e-05,
1.4943402246317868e-05,
1.349566411935847e-05,
9.966310543747809e-06,
4.619844497174959e-06,
4.581291096966731e-06,
5.0921686411411565e-06,
5.815384915167537e-06,
1.0303927423746582e-05,
3.9621593956060915e-05,
5.915378750055176e-05,
5.819637765480245e-05,
4.6168482429467186e-05,
2.5566296542424814e-05,
1.1137201366417275e-05,
3.093828748563421e-06,
1.2522144291824598e-06
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-13
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 1
},
"expected": 393.92337997989193,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 30
},
"expected": 425.0941632972141,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 60
},
"expected": 777.6224121444102,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 4.772610077357006e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 10
},
"expected": 4.774244417275569e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 30
},
"expected": 8.499919134490767e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 7.794798249701869e-07,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 4.816775582612733e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 30
},
"expected": 9.35810738833429e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 1.2522144291824598e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 0.9981732457979331,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 20
},
"expected": 0.9975446962983768,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 0.9951344712893089,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "n_renorm",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0
}
},
{
"variable": "n_floor",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0
}
}
]
},
{
"id": "scm_call2400_afternoon_low_sun",
"description": "Reference: WRF 4.8 em_scm_xy single-column run (GNU real32 build, dt = 60 s, 59 layers, mp=6 ra_lw=1 ra_sw=1 sf_sfclay=1 sf_surface=1 bl_pbl=1, swrad_scat = 1, icloud = 1) dumped by the instrumented fork ctessum-claude/WRF, commit e42a269 (v4.8.0-2-ge42a269e; module_esm_dump, SWRAD/SWPARA hooks) and replayed through the real64 (-fdefault-real-8) standalone kernels/sw_driver of that commit; inputs are the dumped SWRAD arguments (single-precision values widened) of tile column 1, and every expected value is the real64 replay (the same inputs through the same Fortran in binary64, so the scheme's constants and literals are exact and the only residual is evaluation-order roundoff). The scheme is diagnostic (no time step), so no small-dt replay is involved. Column assertions are Linf_error of the whole field against the inline reference (WRF's top-down arrays reversed onto lev/lev_nodes, the top-of-atmosphere interface appended as 0 for the cumulative fields, per-cent quantities divided by 100, g/m^2 paths converted to kg/m^2); spot checks use a relative tolerance. Tolerances: measured Linf mismatch between this component and the real64 replay over all six regimes is at binary64 roundoff -- S and the cumulative depletions <= 1.2e-12 W/m^2 (1e-15 relative), U <= 4e-15 kg/m^2, W <= 1e-16 kg/m^2, the dimensionless absorptances/reflectances and layer fractions <= 4e-15, heating rates <= 1.3e-18 K/s -- so the column tolerances are set at about 1e-9 of each field's column maximum (S, D_*: abs 1e-6 W/m^2; U: 1e-8 kg/m^2; W: 1e-12 kg/m^2; rho: 1e-9 kg/m^3; m_air: 1e-7 kg/m^2; fractions: abs 1e-9; dT/dt, dtheta/dt: 1e-13 K/s), i.e. the 1e-9 relative contract for double-precision references, roughly a million times the measured error; scalar spot checks use rel 1e-9. Regime: day 2, 15:00 UTC = 08:34 LST (call 2400), low sun (cos zenith 0.386): long slant paths (large Lacis-Hansen argument and scattering fraction), a trace of ice (effective path 0.9 g/m^2); gsw = 300 W/m^2.",
"parameter_overrides": {
"csza": 0.3863790035247803,
"albedo": 0.20000000298023224,
"solcon": 1384.9686279296875,
"obscur": 0.0,
"cssca": 9.999999747378752e-06,
"icloud": 1.0
},
"expression_template_imports": [
{
"ref": "./tests/scm_call2400_afternoon_low_sun_inputs.esm"
}
],
"time_span": {
"start": 0,
"end": 1
},
"assertions": [
{
"variable": "daylight",
"time": 0.0,
"expected": 1.0,
"tolerance": {
"abs": 0.0
}
},
{
"variable": "S_toa",
"time": 0.0,
"expected": 535.1227983725548,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "gsw",
"time": 0.0,
"expected": 300.07140449791274,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "rho",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
1.2062918376615348,
1.2011383728086538,
1.195425533346902,
1.1894288346478339,
1.1791871515726131,
1.1672895278781696,
1.1584851934370717,
1.150896234448783,
1.1437007781008806,
1.1365275204261491,
1.1291595458060688,
1.1214426231156818,
1.1131779561799748,
1.1037272479540579,
1.0917728785169984,
1.07678398621358,
1.064257615851101,
1.0528270231211154,
1.0416341023388809,
1.0304217673389482,
1.0191110207508651,
1.0076381047275602,
0.9959576778467848,
0.9840744481280359,
0.9720181366074299,
0.959741718911561,
0.9470063495647675,
0.9339110458968173,
0.9205418779451703,
0.906898608228577,
0.8929018813396441,
0.8786391788780796,
0.864078479818929,
0.8492044684806399,
0.8340664543394866,
0.8187168495088628,
0.803357473231926,
0.7878340993213567,
0.7722288934381548,
0.7568275514034879,
0.7416767062148807,
0.7260523468604505,
0.7099095482422286,
0.6932645686648368,
0.6761203956125887,
0.6574803721635206,
0.6371081007064419,
0.6171554891265252,
0.5971142202301917,
0.576434155615519,
0.554399234110138,
0.5314600443311969,
0.5079012003431846,
0.4834019606429198,
0.4577982526952479,
0.43095800803242545,
0.40273634474194464,
0.3729601558276223,
0.3414110876322399
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "m_air",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
61.17798805051432,
62.71770149230121,
64.2978910875508,
65.91482252667794,
67.52165327308421,
69.16842350821472,
70.89124723098715,
72.67371642836797,
74.50801506426866,
76.39006297218792,
78.3184895566859,
80.29382704017225,
82.31449566681101,
84.37726693271928,
86.44570224972556,
88.39973279201723,
90.62987648519703,
92.95580974342724,
95.34448732911297,
97.79598153465497,
100.31003288110902,
102.89224916467566,
105.53978229000163,
108.25731889101482,
111.04630879761045,
113.90407324459629,
116.77621766301199,
119.71481017339251,
122.72715557865638,
125.81579749303124,
128.98072312890378,
132.2248998682735,
135.55020195499338,
138.95895951691284,
142.45207498291086,
146.03282145188663,
149.68907235302052,
153.4304985005248,
157.25943689214049,
161.15733627168305,
165.2207993015577,
169.37617162977693,
173.62973277076773,
177.98721530244262,
182.4646903968282,
186.99505848434896,
191.672478875422,
196.5164107051176,
201.50010051636133,
206.60576648378597,
211.8552213893571,
217.21171644857162,
222.68962848855548,
228.31065159720558,
234.07707494402663,
239.99437015478384,
246.06640047636492,
252.29370509910385,
258.6772455028432
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-07
}
},
{
"variable": "W",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.631460252290011e-07,
3.056449170843556e-07,
1.7746698947371257e-07,
6.196472527779594e-08,
1.5127738580836344e-08,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-12
}
},
{
"variable": "U",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
11.204529265486517,
10.891013690626702,
10.575425801798117,
10.25624202311608,
9.9360946226339,
9.646837077786534,
9.38939647762924,
9.143426768121875,
8.898703516594297,
8.651383006883538,
8.400579447846454,
8.146651794001198,
7.8908285720535165,
7.6354172045602455,
7.387340689376523,
7.175812906091537,
7.105186358859538,
7.037286154662941,
6.947870809692554,
6.834037571222329,
6.693970663577088,
6.525787433161684,
6.327492268141233,
6.096975484095336,
5.832002575498873,
5.530265170109668,
5.191139398427396,
4.850872279671052,
4.512658167941186,
4.177169946747115,
3.8450492162363363,
3.5169887985741872,
3.193725457127657,
2.8760486894967285,
2.5647989565287443,
2.2608782083112104,
1.965412697960151,
1.6879956092290385,
1.4331361797238842,
1.2067927977620925,
1.0259807317983203,
0.8504425092156616,
0.6876414285080289,
0.5435603881778535,
0.4190194957310855,
0.3074671054227933,
0.24855286227809015,
0.2236733201042535,
0.20396181048705775,
0.17752049737302153,
0.14791023516913424,
0.10554553656824502,
0.06568626989457256,
0.038538317954657474,
0.021120029493881233,
0.010634184019109684,
0.004789873238157499,
0.001826280404736324,
0.0005089617428796051,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-08
}
},
{
"variable": "A_vap",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.13371584106254017,
0.13270719515254195,
0.13166704680741553,
0.13058833969347633,
0.12947789041040159,
0.12844868141495575,
0.12751089024036547,
0.12659474844257318,
0.1256627679514882,
0.124699113667195,
0.12369838010946287,
0.12265977652281046,
0.12158613158959766,
0.12048531166995122,
0.11938681873844224,
0.11842606014383172,
0.11810011960977136,
0.1177842573829524,
0.11736449382475482,
0.11682367820828408,
0.11614806364477115,
0.11532145795265349,
0.11432431247204336,
0.11313275069127195,
0.11171714038498053,
0.11004037832751525,
0.10806546175457885,
0.10597683709029032,
0.10378114610103412,
0.10146935598110218,
0.09903048469123066,
0.096451707421493,
0.09371776305255534,
0.09081026712038658,
0.08770661623944018,
0.0843784924096303,
0.08079151161542365,
0.07702171536691073,
0.07311155717025367,
0.06916262531136673,
0.06557777478295272,
0.061601905810762914,
0.05730902411923239,
0.05280515564290318,
0.048104297686777,
0.04287246864380416,
0.03948740082289303,
0.03786863705008337,
0.036483879021865534,
0.034452953783099045,
0.031877758191226443,
0.027384525054795855,
0.02164108284049159,
0.01599955355723179,
0.010774822676614393,
0.0063925580143492505,
0.003223055228243365,
0.0013119953025374637,
0.0003772608936700667,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "R_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.0004639347692407527,
0.00045370797895507073,
0.0001607763793647363,
9.336726725514464e-05,
3.260517161624575e-05,
7.960535680771588e-06,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "A_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.4008300149392364e-05,
3.3258634945015584e-05,
1.1785560662583405e-05,
6.844199356167962e-06,
2.390091315126918e-06,
5.835395506671733e-07,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
375.0892570197073,
376.1291614964731,
377.2003084560228,
378.3064121845831,
379.44503193160034,
380.56613181089676,
381.6655533782857,
382.7750644942783,
383.912085693941,
385.08441041830935,
386.2951861318347,
387.54550922834227,
388.8348732831556,
390.16049430509827,
391.50978554625635,
392.82183621014093,
393.87022379546653,
394.9395930403693,
396.0829236490372,
397.30921274746515,
398.626008877995,
400.04207504908834,
401.5678881738738,
403.2160256365196,
405.0019377468478,
406.9447548619893,
409.06379471519364,
411.27509592475656,
413.5772594847676,
415.9763145229081,
418.4793420148563,
421.0944185505742,
423.83095140269654,
426.7000213340614,
429.71494555874324,
432.8920246689507,
436.2508043154731,
439.7580263163349,
443.39631519133326,
447.1195019761542,
450.7341252593248,
454.60965738550664,
458.71472031236334,
463.00184440187917,
467.4683904926819,
472.2847948316177,
476.2708219461685,
479.4570125538229,
482.60596219226136,
486.16488019504806,
490.0900740101056,
495.0931419432931,
500.85568294670264,
506.84280818646346,
512.6167793922972,
518.0742888196982,
522.9997309886493,
527.371992864465,
531.3383188601146,
535.1227983725548
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "D_vap",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
64.86015629904298,
64.41580242301528,
63.95693344790837,
63.48037489783822,
62.989074261807936,
62.533032615905334,
62.11685738765064,
61.70964636555233,
61.29472230599817,
60.86498126412544,
60.41794044767788,
59.95316671781799,
59.47184448176443,
58.97742451405975,
58.483110498525306,
58.04993157256084,
57.902680470870266,
57.759689867291705,
57.56926321115116,
57.32339079939627,
57.01555272463576,
56.638058326910105,
56.18161547809202,
55.63486629219689,
54.98370587434064,
54.21045831029105,
53.297333655190805,
52.32903862530341,
51.308293605348055,
50.23052124856683,
49.090179366850016,
47.88079674158428,
46.59467923769104,
45.22256623403823,
43.75308675843706,
42.17201480796818,
40.462054937476516,
38.6585220283004,
36.78095294743918,
34.87757931722922,
33.14295231998162,
31.211391485737728,
29.117186823051682,
26.910685224707795,
24.59755311874329,
22.011479514784508,
20.330450527510337,
19.522720212741575,
18.828355016363002,
17.804830211923644,
16.500261014283574,
14.211835015264366,
11.270468060520319,
8.363914248968527,
5.656078046124186,
3.370966928552815,
1.707904615614071,
0.6987298195540877,
0.20188090513725696,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "D_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.25410200961267576,
0.24860166073680448,
0.08921986178263544,
0.05212802362542631,
0.018339989219948366,
0.004505905981987776,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "D_sca",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
94.91928304419204,
94.32373244345389,
93.71145445901104,
93.08190928052096,
92.434590169534,
91.76953193614014,
91.08628559700584,
90.38398550311156,
89.66188836300302,
88.91930468050732,
88.15556978342956,
87.37002041678188,
86.56197859802211,
85.7307775437841,
84.87580031816042,
83.99692858024028,
83.09579209660522,
82.16941345528106,
81.21650950275371,
80.23609281608066,
79.2271347603113,
78.18856298694362,
77.11919271097617,
76.0178044342255,
74.88305274175357,
73.7134831906616,
72.50756799255744,
71.26456181288191,
69.98314327282621,
68.66186059146686,
67.29917498123552,
65.89348107078338,
64.44306572255425,
62.946108794842225,
61.40066404576156,
59.80465688602295,
58.155837109992206,
56.452148018306445,
54.6914282241693,
52.87161506955828,
50.99161878363528,
49.04764749169729,
47.03678922752664,
44.956166736354696,
42.80275275151645,
40.57242201653948,
38.26742388926291,
35.88896359637733,
33.43437915431743,
30.898985955970176,
28.278361338552738,
25.56371940438443,
22.7480457045948,
19.82685607534003,
16.79781291050782,
13.659202635083686,
10.410656862309406,
7.052075688535694,
3.5825986073029816,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "xabs",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.0011813863999797078,
0.0012165127249900106,
0.0012597157614067343,
0.0012947873728357264,
0.001198324306297459,
0.0010904186258648386,
0.0010638389484338958,
0.0010807788423856512,
0.0011159658252742806,
0.0011572518439175996,
0.0011992752303731115,
0.001237857684907443,
0.001267222014841026,
0.0012625840624768817,
0.0011027363706246187,
0.00037385690208213603,
0.00036205689705044877,
0.00048077471855181,
0.0006188439730723564,
0.0007722478410954162,
0.0009436367354092249,
0.0011366517648952355,
0.0013559708720208507,
0.00160779580828392,
0.0019001290833981423,
0.0022322304415525224,
0.0023543731178523454,
0.0024680878760766334,
0.0025909464533271456,
0.0027249657682656444,
0.0028719987062010713,
0.0030345058557822296,
0.0032156384697684124,
0.003419661081814278,
0.0036523471451754773,
0.003919671559516754,
0.004101193841266604,
0.004234516653687154,
0.00425696848783722,
0.003848448342467094,
0.004248833703517076,
0.004565374883238954,
0.004765643215081176,
0.00494821073041241,
0.005475665598933343,
0.003529565343526699,
0.0016846772361642861,
0.0014387828803945663,
0.0021053038714534916,
0.0026618967957575328,
0.004622213085071011,
0.00587268359907388,
0.005734625735248657,
0.005282379180124492,
0.00441077885331353,
0.003179853094369638,
0.0019135919421480198,
0.0009350895592900692,
0.0003772608936700667
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "xabsc",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"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,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
7.500373036084543e-07,
2.1476854201351e-05,
4.941863793671574e-06,
4.4542657178360926e-06,
1.8065673288126875e-06,
5.835395506671736e-07,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "xalb",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"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,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
1.0231866392703583e-05,
0.00029298316452606033,
6.741596694526988e-05,
6.07642466357792e-05,
2.4644848261419866e-05,
7.96053568077159e-06,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "xsca",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.0015833672623751854,
0.0016232170831171067,
0.0016641144802560608,
0.0017059628049199119,
0.001747549710294061,
0.001790170302471865,
0.00183475925952009,
0.0018808919203554644,
0.0019283659956242766,
0.0019770758852198696,
0.002026986116319116,
0.002078110463542048,
0.0021304080407177906,
0.0021837952898949055,
0.0022373291322073424,
0.002287902027605459,
0.0023456210966153407,
0.0024058193262875963,
0.00246764146215812,
0.0025310893752498787,
0.002596156349904534,
0.0026629875233062416,
0.002731509182979548,
0.002801842625210401,
0.0028740253735144495,
0.002947988097904812,
0.0030223229949788723,
0.0030983776565763664,
0.003176341140660264,
0.0032562792793316914,
0.003338191741630301,
0.0034221553273277535,
0.003508218544334379,
0.0035964416994414185,
0.003686848148702072,
0.0037795226042457945,
0.0038741512143776785,
0.003970984272562942,
0.004070082263394708,
0.004170965055821687,
0.004276132854541431,
0.004383679387488044,
0.004493767176801989,
0.004606544589183201,
0.004722427567824091,
0.004839679487098827,
0.0049607373145232276,
0.005086104678255168,
0.0052150891634337344,
0.005347230552895059,
0.00548309339029228,
0.0056217265684679295,
0.0057635021787269605,
0.005908981692762991,
0.006058224357311122,
0.006211371785284501,
0.006368523962623228,
0.006529694844286435,
0.006694909314644376
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.9972352463376452,
0.997160270191893,
0.9970761697583371,
0.9969992498222443,
0.9970541259834086,
0.9971194110716634,
0.997101401792046,
0.9970383292372589,
0.9969556681791015,
0.9968656722708624,
0.9967737386533078,
0.9966840318515504,
0.9966023699444412,
0.9965536206476283,
0.996659934497168,
0.9973382410703124,
0.9972923220063342,
0.9971134059551606,
0.9969135145647695,
0.9966966627836547,
0.9964602069146862,
0.9962003607117985,
0.9959125199449995,
0.9955903615665056,
0.9952258455430875,
0.9948197814605427,
0.9946233038871688,
0.9944335344673471,
0.9942327124060126,
0.9940187549524027,
0.9937898095521686,
0.99354333881689,
0.9932761429858972,
0.9929838972187442,
0.9926608047061225,
0.9923008058362375,
0.9920246549443558,
0.9917944990737498,
0.9916729492487681,
0.9919805866017113,
0.9914750334419415,
0.991050945729273,
0.9907405896081168,
0.9904452446804044,
0.9898019068332425,
0.9916307551693744,
0.9933545854493124,
0.9934751124413502,
0.9926796069651127,
0.9919908726513473,
0.9898946935246368,
0.9884946079287619,
0.9881874120672969,
0.9887362812963736,
0.9894657782770218,
0.9905823237047555,
0.9917093400199972,
0.9925352155964235,
0.9929278297916855
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
7.230758243895862e-06,
7.283642485600905e-06,
7.378525728435245e-06,
7.420177566872222e-06,
6.72374904880648e-06,
5.989883945708839e-06,
5.7184320690579755e-06,
5.683832975088632e-06,
5.741877166995457e-06,
5.8258643530377185e-06,
5.907821003696468e-06,
5.967656627736401e-06,
5.979567037554277e-06,
5.832134476140022e-06,
4.9885458981930354e-06,
1.6582792230211934e-06,
1.5706744174343692e-06,
2.0393945851911716e-06,
2.5672270035778014e-06,
3.133656459191336e-06,
3.746417702781371e-06,
4.41625157626617e-06,
5.157295427563729e-06,
5.987986119957252e-06,
6.932094785167519e-06,
7.980697934645315e-06,
8.254739206988189e-06,
8.4882751213631e-06,
8.742515894179988e-06,
9.022979262893713e-06,
9.334455215727623e-06,
9.683167872377054e-06,
1.0077197497681126e-05,
1.0527543144390501e-05,
1.1049252881418793e-05,
1.1656965233672797e-05,
1.199455204573128e-05,
1.2182440184392847e-05,
1.2049177187514218e-05,
1.0715343058821354e-05,
1.1638412097632246e-05,
1.2308832696525337e-05,
1.2651155925823202e-05,
1.2937837353429996e-05,
1.4109515657698687e-05,
8.949424967349981e-06,
4.195238754850769e-06,
3.517541097047543e-06,
5.056769568524687e-06,
6.286005262745442e-06,
1.0753448511257344e-05,
1.3482532732241302e-05,
1.3042230827897356e-05,
1.1818228552602541e-05,
9.728297771026743e-06,
6.9024646666772206e-06,
4.084101752825557e-06,
1.9605051589600597e-06,
7.769392721335235e-07
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-13
}
},
{
"variable": "dthdt",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
7.2974658882683484e-06,
7.364031284171669e-06,
7.473776507397121e-06,
7.530329833237158e-06,
6.837019525332818e-06,
6.10318891488565e-06,
5.838845349729145e-06,
5.816113268350481e-06,
5.888684171136545e-06,
5.988665284671715e-06,
6.087462140578281e-06,
6.164351925846342e-06,
6.1924831801955214e-06,
6.055814850804686e-06,
5.194082092692038e-06,
1.731502452894472e-06,
1.64484543241143e-06,
2.1421983526868564e-06,
2.7051455678867435e-06,
3.3128096839825823e-06,
3.97405037687491e-06,
4.701094979170175e-06,
5.510032478382509e-06,
6.421874891659085e-06,
7.463794666815367e-06,
8.628176183942441e-06,
8.962656555092547e-06,
9.257296188854211e-06,
9.578838125270094e-06,
9.933981167827035e-06,
1.0328792980799157e-05,
1.0771128353293662e-05,
1.1271161368913872e-05,
1.1842673571456831e-05,
1.2504474087602522e-05,
1.3275527721961888e-05,
1.375045246550778e-05,
1.406294437960496e-05,
1.401075636794244e-05,
1.2555602311180634e-05,
1.374773798342889e-05,
1.466407979462472e-05,
1.5208275234739294e-05,
1.570196878929054e-05,
1.7298169491979953e-05,
1.109064643369258e-05,
5.258953688082098e-06,
4.463800300229549e-06,
6.501960877755974e-06,
8.197508487327644e-06,
1.4238960657054339e-05,
1.8150199329859575e-05,
1.7876439723680183e-05,
1.652133809586257e-05,
1.3898564950758707e-05,
1.0102410232451962e-05,
6.141550234941046e-06,
3.040113556704527e-06,
1.2481329764287765e-06
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-13
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 1
},
"expected": 375.0892570197073,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 30
},
"expected": 415.9763145229081,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 60
},
"expected": 535.1227983725548,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 7.230758243895862e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 10
},
"expected": 5.8258643530377185e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 30
},
"expected": 9.022979262893713e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 7.769392721335235e-07,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 7.2974658882683484e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 30
},
"expected": 9.933981167827035e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 1.2481329764287765e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 0.9972352463376452,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 20
},
"expected": 0.9966966627836547,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 0.9929278297916855,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "n_renorm",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0
}
},
{
"variable": "n_floor",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0
}
}
]
},
{
"id": "scm_call2820_midday_clear",
"description": "Reference: WRF 4.8 em_scm_xy single-column run (GNU real32 build, dt = 60 s, 59 layers, mp=6 ra_lw=1 ra_sw=1 sf_sfclay=1 sf_surface=1 bl_pbl=1, swrad_scat = 1, icloud = 1) dumped by the instrumented fork ctessum-claude/WRF, commit e42a269 (v4.8.0-2-ge42a269e; module_esm_dump, SWRAD/SWPARA hooks) and replayed through the real64 (-fdefault-real-8) standalone kernels/sw_driver of that commit; inputs are the dumped SWRAD arguments (single-precision values widened) of tile column 1, and every expected value is the real64 replay (the same inputs through the same Fortran in binary64, so the scheme's constants and literals are exact and the only residual is evaluation-order roundoff). The scheme is diagnostic (no time step), so no small-dt replay is involved. Column assertions are Linf_error of the whole field against the inline reference (WRF's top-down arrays reversed onto lev/lev_nodes, the top-of-atmosphere interface appended as 0 for the cumulative fields, per-cent quantities divided by 100, g/m^2 paths converted to kg/m^2); spot checks use a relative tolerance. Tolerances: measured Linf mismatch between this component and the real64 replay over all six regimes is at binary64 roundoff -- S and the cumulative depletions <= 1.2e-12 W/m^2 (1e-15 relative), U <= 4e-15 kg/m^2, W <= 1e-16 kg/m^2, the dimensionless absorptances/reflectances and layer fractions <= 4e-15, heating rates <= 1.3e-18 K/s -- so the column tolerances are set at about 1e-9 of each field's column maximum (S, D_*: abs 1e-6 W/m^2; U: 1e-8 kg/m^2; W: 1e-12 kg/m^2; rho: 1e-9 kg/m^3; m_air: 1e-7 kg/m^2; fractions: abs 1e-9; dT/dt, dtheta/dt: 1e-13 K/s), i.e. the 1e-9 relative contract for double-precision references, roughly a million times the measured error; scalar spot checks use rel 1e-9. Regime: day 2, 18:30 UTC = 12:04 LST (call 2820), cos zenith 0.639, essentially clear (effective path 0.08 g/m^2); gsw = 550 W/m^2.",
"parameter_overrides": {
"csza": 0.6393358707427979,
"albedo": 0.20000000298023224,
"solcon": 1385.0826416015625,
"obscur": 0.0,
"cssca": 9.999999747378752e-06,
"icloud": 1.0
},
"expression_template_imports": [
{
"ref": "./tests/scm_call2820_midday_clear_inputs.esm"
}
],
"time_span": {
"start": 0,
"end": 1
},
"assertions": [
{
"variable": "daylight",
"time": 0.0,
"expected": 1.0,
"tolerance": {
"abs": 0.0
}
},
{
"variable": "S_toa",
"time": 0.0,
"expected": 885.5330167190696,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "gsw",
"time": 0.0,
"expected": 549.7341188089144,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "rho",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
1.1855123038861388,
1.181036957279821,
1.1758153297840463,
1.1703047448269943,
1.1645823714050731,
1.1586727922989095,
1.152583038964798,
1.1463161438602048,
1.139870309882523,
1.1332426609297728,
1.126428211253679,
1.1194193380597413,
1.1121974150951934,
1.1046756500338042,
1.0951480144241073,
1.077540399798754,
1.0646969727571687,
1.053179981616935,
1.0419180238650403,
1.0306684434634363,
1.01933771024168,
1.0078591581467709,
0.9961807014232171,
0.9843036575859045,
0.9722598874143923,
0.9599989334987596,
0.9472921098197021,
0.9342237681271008,
0.9208756322769353,
0.9072529954126929,
0.8932791139746316,
0.879038257400619,
0.8645063196750585,
0.8496669508032554,
0.8345697223580107,
0.8192672793271079,
0.8039276811731628,
0.7884259989865681,
0.77284024585006,
0.7573526789228802,
0.7421178041154041,
0.7264694802478614,
0.7103200080144962,
0.6936875857266737,
0.676548601759983,
0.6579265837084685,
0.6374122157424361,
0.6173423783301157,
0.597232462096122,
0.5764864551601723,
0.5541391232753383,
0.5313161804067934,
0.5078544437380521,
0.48338645812073283,
0.4577933902477033,
0.43095661982104105,
0.40273598930754967,
0.37295992954938934,
0.34141100716172795
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "m_air",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
61.144023539819145,
62.677324602121516,
64.25719719272814,
65.8802320048878,
67.54462248390541,
69.25092519548713,
71.00133819974518,
72.7950631734653,
74.63447651218627,
76.51954080826778,
78.45080229053225,
80.42874898346615,
82.45168009909686,
84.51550841749105,
86.55713287026171,
88.41638579210515,
90.63051025546343,
92.95598957864198,
95.34440229176526,
97.79599183530149,
100.31007256458015,
102.89206094752798,
105.53982449012523,
108.25730166426926,
111.04627375729083,
113.90342814762255,
116.77618596658994,
119.71475452135746,
122.72713690777105,
125.81578990876451,
128.9806933948009,
132.2250806122868,
135.55020085389458,
138.95871508888786,
142.45184199922468,
146.03279240865203,
149.6891359946897,
153.430663699755,
157.25921626633996,
161.1571061320887,
165.2118019679376,
169.37309588267058,
173.6305811387505,
177.9914956597146,
182.47189695300526,
186.99507121339127,
191.67246765979166,
196.51653746674188,
201.5003420394863,
206.60508906867315,
211.85512529443415,
217.21129031983938,
222.68971001468893,
228.31041061532466,
234.07727110645945,
239.99401793573077,
246.0665766076736,
252.29355203027626,
258.67751794186483
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-07
}
},
{
"variable": "W",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.919133483844416e-08,
7.149475609915976e-08,
2.1653575113575445e-08,
6.365901350342353e-09,
8.822468701346163e-11,
8.822468701346163e-11,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-12
}
},
{
"variable": "U",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
11.903577283231792,
11.611643994758857,
11.321671295496493,
11.028280932389105,
10.730097185134653,
10.426518988282728,
10.117234681213231,
9.80208880008675,
9.481062737173577,
9.154271273267254,
8.822024424765331,
8.484946469597565,
8.144268106317153,
7.802673589011185,
7.467732320332794,
7.186319879431045,
7.105282361348617,
7.036941978571954,
6.94751028788194,
6.833685076017287,
6.693624825200882,
6.525449644203232,
6.327163166774715,
6.096655087656676,
5.831691345658197,
5.5299797611818144,
5.191188208354467,
4.850941791274904,
4.512727948264282,
4.177239663810582,
3.84511895332028,
3.517058491163717,
3.193794707834351,
2.8761178165430064,
2.564868631061545,
2.260948512582089,
1.965511927765454,
1.688100767947748,
1.4332472620374206,
1.2069402814726253,
1.0260154002267725,
0.8562644048636282,
0.695338587158109,
0.5507208276088833,
0.42351233119264187,
0.30756833768867203,
0.24861235374310758,
0.22368866554372854,
0.20396234716537465,
0.17721958522509726,
0.14790660058026794,
0.10555559076443652,
0.0657027239677516,
0.03854616487862849,
0.0211244877290934,
0.010636415131886876,
0.004790864404919887,
0.0018266081322833654,
0.0005089660431717137,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-08
}
},
{
"variable": "A_vap",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.1185089237246351,
0.11769142462983981,
0.11686264239261028,
0.11600629817108321,
0.11511675431363526,
0.11419024000780559,
0.11322352516883402,
0.1122135457668816,
0.11115735305891856,
0.11005211128832208,
0.10889532856471866,
0.10768534351613128,
0.10642256784704854,
0.10511316415990002,
0.10378397620657205,
0.10262991978276394,
0.10229091838239923,
0.1020026318146696,
0.10162198971280452,
0.10113184672751567,
0.10051975052046687,
0.09977120420637611,
0.09886872192465383,
0.09779098952132748,
0.09651161211062897,
0.09499768975368861,
0.09321813133659287,
0.0913366382518753,
0.08936099335270144,
0.08728349426592989,
0.08509462128935169,
0.08278324243146724,
0.08033608871512074,
0.0777371542033301,
0.07496671023612649,
0.0719999614832225,
0.06880704965706043,
0.06545532537139795,
0.0619825061179992,
0.058478577616414576,
0.05529656695394305,
0.0518946072386786,
0.0481545949026348,
0.04417637380722176,
0.039944247613521104,
0.035118832133785687,
0.032094915354468276,
0.030646320133285186,
0.02940819454016822,
0.027572331675582918,
0.025296527852157732,
0.02130858047845069,
0.016291565588191392,
0.011539061359071158,
0.007397040424425519,
0.004182512960578628,
0.002029948980831277,
0.000806619277226195,
0.00022912117713779333,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "R_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.776874436077404e-05,
1.604190272516496e-05,
4.8587911044080495e-06,
1.4284456256852208e-06,
1.9796848847454207e-08,
1.9796848847454207e-08,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "A_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.301521181832701e-06,
2.0778496313094884e-06,
6.293416359561095e-07,
1.850213947513615e-07,
2.564214219691287e-09,
2.564214219691287e-09,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
687.1676510710421,
688.4690145078907,
689.7976260535322,
691.1669495755677,
692.582068131558,
694.046596372464,
695.5637490292897,
697.1366545173796,
698.7683630497321,
700.4618838623422,
702.2199762600075,
704.0447687569946,
705.9367667113017,
707.8918881094288,
709.889495724004,
711.773879383954,
713.0307588498518,
714.2738739907192,
715.619190381938,
717.0816417099788,
718.6724955421623,
720.4047485590037,
722.2939754508311,
724.358947488014,
726.622747627804,
729.1139447469837,
731.8598437525636,
734.728993747277,
737.7166575574588,
740.8308256440407,
744.0810959196663,
747.4784970105329,
751.035976826611,
754.768898838274,
758.6959043331261,
762.8400499474008,
767.2288891789465,
771.8095189104334,
776.5533799721659,
781.3881715129086,
786.0209771569305,
790.9064880071217,
796.1476316223655,
801.6649199823249,
807.4757609869703,
813.872115315253,
818.8270039779479,
822.5228308559075,
826.1164717234349,
830.3015230889014,
834.9498252509678,
841.1655222817103,
848.3753111961815,
855.4685082357469,
862.1468057285299,
868.1387051667765,
873.3039880605978,
877.7583461281612,
881.7472052421981,
885.5330167190696
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "D_vap",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
98.63822975330274,
97.99529589146246,
97.34292778224037,
96.66826964474554,
95.96682082427746,
95.23553963393174,
94.47180054484336,
93.67309898294496,
92.83701115912123,
91.96119207561006,
91.04355852330814,
90.0826761882515,
89.07874993728441,
88.03655829485625,
86.97737245326883,
86.05663102761825,
85.78583108499578,
85.55525109175557,
85.2504064051147,
84.85734163779712,
84.3658049399571,
83.7638475014685,
83.03705051960895,
82.16783047684582,
81.13440422343719,
79.90960538360322,
78.46758039535729,
76.94042998752356,
75.33413034563353,
73.64206366190025,
71.85608082513804,
69.96665538241685,
67.96244036211156,
65.82975819202647,
63.55176709118177,
61.10732225224995,
58.47093551711794,
55.69736061246825,
52.817106817743564,
49.90431737278377,
47.25283122973914,
44.41111439690934,
41.279127985442955,
37.93899796726446,
34.37617434054729,
30.30268021459508,
27.74272380987531,
26.512814830919275,
25.4584581158285,
23.890279106943954,
21.940165589534367,
18.511817599718764,
14.18434297102498,
10.070863446634394,
6.473021936198803,
3.6705670873016985,
1.7868780099922332,
0.7122188740822497,
0.20289436718505444,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "D_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.017447892535387366,
0.015766233070186535,
0.004800174538518434,
0.0014164080247963764,
1.9801459634894723e-05,
1.9801459634894723e-05,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "D_sca",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
99.70968800218999,
99.05125842718164,
98.37501499076222,
97.68034960622153,
96.96667987069935,
96.23343282013911,
95.48001925240172,
94.70581532621024,
93.91019461768157,
93.09249288858261,
92.25203404321928,
91.38812388128879,
90.50005217794866,
89.58712242224982,
88.64870064926215,
87.68505841496264,
86.69897889168726,
85.68644374406023,
84.64597203948233,
83.57658547875897,
82.47726834441556,
81.3469727660629,
80.18454285609499,
78.98879086167523,
77.75841697529377,
76.49201869594795,
75.18814467861392,
73.8461450917343,
72.46478092344259,
71.04267952059394,
69.57839208173058,
68.07041643358525,
66.51715163781249,
64.91691179623453,
63.26789740222713,
61.56819662688426,
59.81574413047052,
58.00868930363308,
56.14508203662521,
54.22307994084228,
52.24176043986497,
50.19796642250366,
48.088809218726375,
45.91165087694528,
43.66363349901706,
41.34077329668647,
38.945841038711364,
36.4799231397078,
33.940638987271306,
31.32376663068926,
28.62557798603229,
25.83822894510544,
22.955914659327927,
19.976197144153197,
16.897422821270965,
13.718944290453006,
10.440734240454965,
7.062431915366586,
3.5828973082269355,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "xabs",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.0009338602729998511,
0.0009457384087481235,
0.0009761145811574486,
0.0010128024572747503,
0.001053648550641805,
0.001098014510034809,
0.0011456886633673473,
0.0011965164252352289,
0.0012503450989822767,
0.0013067608204329316,
0.0013648028899541469,
0.001422119229805808,
0.0014722469065319426,
0.001492043265842623,
0.0012935869836182942,
0.0003797871820554881,
0.00032281734168987966,
0.00042598729986288773,
0.0005481450708740319,
0.0006839508968117777,
0.0008355822746763884,
0.0010062343125676846,
0.0011999852362940722,
0.0014222321786407724,
0.0016798455833388134,
0.0019703567569058673,
0.0020785220412290113,
0.002177393753325842,
0.0022840122537588466,
0.0024002529382295096,
0.0025277321692567262,
0.0026686005493023013,
0.002825609498970713,
0.0030025087625153196,
0.003204400239736196,
0.003436245392106332,
0.003593600281796408,
0.0037090222887548635,
0.0037277112082719516,
0.0033733020111437364,
0.003592987130488945,
0.003933926682773794,
0.004166491429177341,
0.00441229792750976,
0.005005078868409617,
0.003126370273920171,
0.001495288559560355,
0.0012762809496960979,
0.0018886861763791317,
0.002335605635731973,
0.004075711496728977,
0.005100896468323889,
0.004808452309803798,
0.0041731193417753835,
0.003228118769752041,
0.0021569683673295643,
0.001224322321343183,
0.0005776309852405986,
0.00022912117713779333
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "xabsc",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"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,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
2.236756408449229e-07,
1.4485160045472513e-06,
4.443209618458578e-07,
1.824571846477444e-07,
0.0,
2.564214219691287e-09
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "xalb",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"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,
0.0,
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.7268732146713945e-06,
1.1183173455216474e-05,
3.430351042385573e-06,
1.4086488086156493e-06,
0.0,
1.9796848847454207e-08
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "xsca",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.0009563677683867855,
0.0009803504837909204,
0.0010050616352059057,
0.0010304478968788614,
0.0010564810120713163,
0.0010831696861557916,
0.0011105482994972458,
0.001138604365338238,
0.0011673750534292474,
0.0011968597786687473,
0.0012270670847476775,
0.0012580046049695402,
0.001289645736917555,
0.0013219265514424726,
0.0013538600701862727,
0.0013829410737707366,
0.0014175727049484518,
0.0014539460631604693,
0.0014913037770333353,
0.0015296496542755358,
0.0015689729705607102,
0.001609358446112418,
0.0016507727261000694,
0.0016932774130705903,
0.0017369003685497799,
0.0017815897790600084,
0.0018265232463947564,
0.0018724860746202232,
0.0019196034420035756,
0.0019679137756530712,
0.0020174167607179814,
0.002068162969150747,
0.0021201719414260705,
0.002173485298377665,
0.0022281221016909945,
0.00228413257260051,
0.002341322285566601,
0.0023998443829768303,
0.0024597276563088815,
0.002520695450322239,
0.0025841158826641285,
0.002649203640133065,
0.0027157959485480513,
0.00278400601793977,
0.0028540850074840413,
0.0029248330188675706,
0.0029979932550170786,
0.0030737604676239786,
0.0031517133039172494,
0.0032315578290539244,
0.003313674856009322,
0.003397451867986989,
0.0034831410934341397,
0.003571055767330266,
0.0036612565617695253,
0.003753801762978516,
0.0038487840531397396,
0.0039461816112974155,
0.004046034693886055
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.9981097719586134,
0.9980739111074609,
0.9980188237836366,
0.9979567496458464,
0.9978898704372868,
0.9978188158038094,
0.9977437630371354,
0.9976648792094265,
0.9975822798475885,
0.9974963794008983,
0.9974081300252982,
0.9973198761652248,
0.9972381073565505,
0.9971860301827148,
0.9973525529461955,
0.9982372717441738,
0.9982596099533616,
0.9981200666369766,
0.9979605511520927,
0.9977863994489127,
0.9975954447547629,
0.9973844072413199,
0.9971492420376059,
0.9968844904082887,
0.9965832540481113,
0.9962480534640342,
0.9960949547123762,
0.9959501201720539,
0.9957963843042376,
0.9956318332861174,
0.9954548510700252,
0.9952632364815469,
0.9950542185596032,
0.9948240059391069,
0.9945674776585729,
0.9942796220352932,
0.9940650774326371,
0.9938911333282684,
0.9938125611354193,
0.994106002538534,
0.9938228969868469,
0.9934168696770931,
0.9931177126222747,
0.9928036960545505,
0.9921408361241063,
0.9939487967072123,
0.9955067181854226,
0.9956499585826799,
0.9949596005197037,
0.9944328365352142,
0.9926106136472616,
0.9915016516636892,
0.9917084065967621,
0.9922538743420388,
0.9930979929790188,
0.9940853551976876,
0.9949253025195239,
0.995476187403462,
0.9957248217679132
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
1.0467966998131662e-05,
1.0361731425627885e-05,
1.0452304268518295e-05,
1.0599635432819899e-05,
1.0778136590626026e-05,
1.0979169700242902e-05,
1.1198711549407255e-05,
1.1434048509091373e-05,
1.1682209004011278e-05,
1.1938423708529839e-05,
1.2193345476639858e-05,
1.2426263418281087e-05,
1.2583403863047483e-05,
1.2476300237335113e-05,
1.0589729815753297e-05,
3.0490592846363897e-06,
2.532778762372545e-06,
3.2647603707624915e-06,
4.1041098414061885e-06,
5.003627270853161e-06,
5.974083656056475e-06,
7.032039600376643e-06,
8.199047891203257e-06,
9.5032543078837e-06,
1.0980214777727822e-05,
1.2603351535025325e-05,
1.3018998733963113e-05,
1.335761562344152e-05,
1.3725460700463269e-05,
1.4131627830019829e-05,
1.4583276521347957e-05,
1.5089697408486554e-05,
1.5663039082856552e-05,
1.6319854872780344e-05,
1.7082924876645057e-05,
1.797251219538624e-05,
1.8445892632841192e-05,
1.8688250753522714e-05,
1.8439241152606067e-05,
1.6379097210256246e-05,
1.7123391672742364e-05,
1.8408800966688398e-05,
1.915081286899889e-05,
1.9927147256228686e-05,
2.2223945653130543e-05,
1.362863839804904e-05,
6.387976309708834e-06,
5.341196107356333e-06,
7.74764847001316e-06,
9.396560986097835e-06,
1.611001637159457e-05,
1.9833629390570702e-05,
1.83890481112014e-05,
1.5688797200408757e-05,
1.1924063210905185e-05,
7.815347879850412e-06,
4.348434008238236e-06,
2.009733543139853e-06,
7.808475002730034e-07
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-13
}
},
{
"variable": "dthdt",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
1.0564334375000654e-05,
1.0475879388865596e-05,
1.0587010042090319e-05,
1.0756749141094022e-05,
1.0959465494586024e-05,
1.1186613124845427e-05,
1.1434296461404837e-05,
1.1699944223454921e-05,
1.1980706641372995e-05,
1.2271869449642204e-05,
1.2563970727005826e-05,
1.283572125036134e-05,
1.3031382652461935e-05,
1.295475598660731e-05,
1.1026029516442539e-05,
3.1836936143962967e-06,
2.652382322060605e-06,
3.4293333428826464e-06,
4.324594019978669e-06,
5.289688304471962e-06,
6.33706911168351e-06,
7.485597998719256e-06,
8.759826745046182e-06,
1.019185769704782e-05,
1.1822409499410165e-05,
1.362586724060623e-05,
1.4135491905317107e-05,
1.4567788437213649e-05,
1.503845795074985e-05,
1.5558421606835956e-05,
1.613673649823285e-05,
1.6785110842747215e-05,
1.7518820836084806e-05,
1.8358576011721007e-05,
1.9332798275481827e-05,
2.0467983124627022e-05,
2.114621156356796e-05,
2.1573001037172303e-05,
2.1441107012768496e-05,
1.919205155602065e-05,
2.0226803019247163e-05,
2.1931243842596428e-05,
2.3021671008823618e-05,
2.418451573912105e-05,
2.7246399078294404e-05,
1.688939908394646e-05,
8.00766560053671e-06,
6.7780395821427555e-06,
9.961873651272291e-06,
1.2253948132106695e-05,
2.133174793654697e-05,
2.6700047850981256e-05,
2.5205096245964784e-05,
2.1932210780681926e-05,
1.703559623706038e-05,
1.143850020486678e-05,
6.539044599642967e-06,
3.1164506745741564e-06,
1.254411564622994e-06
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-13
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 1
},
"expected": 687.1676510710421,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 30
},
"expected": 740.8308256440407,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 60
},
"expected": 885.5330167190696,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 1.0467966998131662e-05,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 10
},
"expected": 1.1938423708529839e-05,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 30
},
"expected": 1.4131627830019829e-05,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 7.808475002730034e-07,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 1.0564334375000654e-05,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 30
},
"expected": 1.5558421606835956e-05,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 1.254411564622994e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 0.9981097719586134,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 20
},
"expected": 0.9977863994489127,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 0.9957248217679132,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "n_renorm",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0
}
},
{
"variable": "n_floor",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0
}
}
]
},
{
"id": "scm_call600_night_zero",
"description": "Reference: WRF 4.8 em_scm_xy single-column run (GNU real32 build, dt = 60 s, 59 layers, mp=6 ra_lw=1 ra_sw=1 sf_sfclay=1 sf_surface=1 bl_pbl=1, swrad_scat = 1, icloud = 1) dumped by the instrumented fork ctessum-claude/WRF, commit e42a269 (v4.8.0-2-ge42a269e; module_esm_dump, SWRAD/SWPARA hooks) and replayed through the real64 (-fdefault-real-8) standalone kernels/sw_driver of that commit; inputs are the dumped SWRAD arguments (single-precision values widened) of tile column 1, and every expected value is the real64 replay (the same inputs through the same Fortran in binary64, so the scheme's constants and literals are exact and the only residual is evaluation-order roundoff). The scheme is diagnostic (no time step), so no small-dt replay is involved. Column assertions are Linf_error of the whole field against the inline reference (WRF's top-down arrays reversed onto lev/lev_nodes, the top-of-atmosphere interface appended as 0 for the cumulative fields, per-cent quantities divided by 100, g/m^2 paths converted to kg/m^2); spot checks use a relative tolerance. Tolerances: measured Linf mismatch between this component and the real64 replay over all six regimes is at binary64 roundoff -- S and the cumulative depletions <= 1.2e-12 W/m^2 (1e-15 relative), U <= 4e-15 kg/m^2, W <= 1e-16 kg/m^2, the dimensionless absorptances/reflectances and layer fractions <= 4e-15, heating rates <= 1.3e-18 K/s -- so the column tolerances are set at about 1e-9 of each field's column maximum (S, D_*: abs 1e-6 W/m^2; U: 1e-8 kg/m^2; W: 1e-12 kg/m^2; rho: 1e-9 kg/m^3; m_air: 1e-7 kg/m^2; fractions: abs 1e-9; dT/dt, dtheta/dt: 1e-13 K/s), i.e. the 1e-9 relative contract for double-precision references, roughly a million times the measured error; scalar spot checks use rel 1e-9. Regime: night (call 600, 00:00 UTC = 17:34 LST, sunset, cos zenith -0.088): SWPARA returns before computing and WRF's heating and surface flux are exactly zero; this component evaluates the sweep for the formal mu = 1 (WRF's 1e-9 threshold would overflow the 1/mu slant paths) and masks the outputs with daylight = 0, so gsw, dT/dt and dtheta/dt must be exactly 0 (absolute tolerance 0). Internals are not compared at night (WRF leaves them at their zero initialisation).",
"parameter_overrides": {
"csza": -0.08831901103258133,
"albedo": 0.20000000298023224,
"solcon": 1384.47900390625,
"obscur": 0.0,
"cssca": 9.999999747378752e-06,
"icloud": 1.0
},
"expression_template_imports": [
{
"ref": "./tests/scm_call600_night_zero_inputs.esm"
}
],
"time_span": {
"start": 0,
"end": 1
},
"assertions": [
{
"variable": "daylight",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0
}
},
{
"variable": "gsw",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0
}
},
{
"variable": "dTdt",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"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,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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
}
},
{
"variable": "dthdt",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"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,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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
}
},
{
"variable": "n_renorm",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0
}
},
{
"variable": "n_floor",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0
}
}
]
},
{
"id": "synthetic_stratus_call120",
"description": "Reference: WRF 4.8 em_scm_xy single-column run (GNU real32 build, dt = 60 s, 59 layers, mp=6 ra_lw=1 ra_sw=1 sf_sfclay=1 sf_surface=1 bl_pbl=1, swrad_scat = 1, icloud = 1) dumped by the instrumented fork ctessum-claude/WRF, commit e42a269 (v4.8.0-2-ge42a269e; module_esm_dump, SWRAD/SWPARA hooks) and replayed through the real64 (-fdefault-real-8) standalone kernels/sw_driver of that commit; inputs are the dumped SWRAD arguments (single-precision values widened) of tile column 1, and every expected value is the real64 replay (the same inputs through the same Fortran in binary64, so the scheme's constants and literals are exact and the only residual is evaluation-order roundoff). The scheme is diagnostic (no time step), so no small-dt replay is involved. Column assertions are Linf_error of the whole field against the inline reference (WRF's top-down arrays reversed onto lev/lev_nodes, the top-of-atmosphere interface appended as 0 for the cumulative fields, per-cent quantities divided by 100, g/m^2 paths converted to kg/m^2); spot checks use a relative tolerance. Tolerances: measured Linf mismatch between this component and the real64 replay over all six regimes is at binary64 roundoff -- S and the cumulative depletions <= 1.2e-12 W/m^2 (1e-15 relative), U <= 4e-15 kg/m^2, W <= 1e-16 kg/m^2, the dimensionless absorptances/reflectances and layer fractions <= 4e-15, heating rates <= 1.3e-18 K/s -- so the column tolerances are set at about 1e-9 of each field's column maximum (S, D_*: abs 1e-6 W/m^2; U: 1e-8 kg/m^2; W: 1e-12 kg/m^2; rho: 1e-9 kg/m^3; m_air: 1e-7 kg/m^2; fractions: abs 1e-9; dT/dt, dtheta/dt: 1e-13 K/s), i.e. the 1e-9 relative contract for double-precision references, roughly a million times the measured error; scalar spot checks use rel 1e-9. Regime: SYNTHETIC, Fortran-generated -- the call-120 column with a liquid stratus deck inserted (qc = 3e-4 kg/kg in the layers whose tops lie between 600 and 1500 m, about 250 g/m^2 of liquid water path on top of the cirrus), replayed through the real64 sw_driver; the SCM run itself has no liquid cloud (qc = qr = 0 throughout), so this is the only regime that drives the Stephens tables beyond their first alw interval (alw > 2, cumulative cloud albedo above 80 %) and exercises the partial-beam bookkeeping with large cloud depletion (minimum layer transmissivity well below the clear-sky values but above the 1 % renormalisation threshold tau_min, so the renormalisation factor ff is 1 everywhere and n_renorm = 0). Inputs are the modified dump synthetic_stratus_120.json; expected values are the driver output.",
"parameter_overrides": {
"csza": 0.5617246031761169,
"albedo": 0.20000000298023224,
"solcon": 1384.34814453125,
"obscur": 0.0,
"cssca": 9.999999747378752e-06,
"icloud": 1.0
},
"expression_template_imports": [
{
"ref": "./tests/synthetic_stratus_call120_inputs.esm"
}
],
"time_span": {
"start": 0,
"end": 1
},
"assertions": [
{
"variable": "daylight",
"time": 0.0,
"expected": 1.0,
"tolerance": {
"abs": 0.0
}
},
{
"variable": "S_toa",
"time": 0.0,
"expected": 777.6224121444102,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "gsw",
"time": 0.0,
"expected": 41.70741612221927,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "rho",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
1.1882461455048003,
1.1833917601194026,
1.1780775474208702,
1.1725343400583939,
1.1668039528757117,
1.1608981426718805,
1.1548200123941375,
1.1485687612602415,
1.1421425608669449,
1.1355383023014927,
1.1287535535137803,
1.1217869701359786,
1.114645810179855,
1.1074133193610034,
1.0927540538207259,
1.071260767973995,
1.0606674681425088,
1.0499866438555263,
1.039091855556952,
1.0279625942791653,
1.01658613071161,
1.0049549719278756,
0.9930611172322815,
0.9808991863203149,
0.9684662522976394,
0.9557531867235668,
0.9428617409676621,
0.9296782046639335,
0.9161953299864448,
0.9024068961156496,
0.888300422877125,
0.873872634171112,
0.859114617397605,
0.8440173364448315,
0.8285745486494659,
0.8127820667284728,
0.7973383101753023,
0.7817139048046132,
0.766031659652959,
0.7514621566591547,
0.7364247639976375,
0.720890028503199,
0.704828672635759,
0.6882205064401412,
0.671035525000523,
0.6532358272278359,
0.6347615718009271,
0.6155804737790096,
0.5956690380589317,
0.5749817307816427,
0.5535838798090931,
0.5306443061147867,
0.5070629550241419,
0.48325956629626343,
0.45789663016355947,
0.4310167572831105,
0.4027497395886416,
0.3729621923440745,
0.34141283116931365
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "m_air",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
60.99308477644407,
62.518327025647004,
64.09230087128896,
65.710068946424,
67.3695218549805,
69.07110125419246,
70.81691963760801,
72.60627931536509,
74.44153248664655,
76.32281171308841,
78.25099166337174,
80.22728187097789,
82.25111852564723,
84.3219135064156,
86.4039376463457,
88.36044414044098,
90.6277685139275,
92.95586103064815,
95.3444151256693,
97.79585886402121,
100.31007285113621,
102.89195658934653,
105.53989772085423,
108.25716859648836,
111.04614690499214,
113.90694946629472,
116.77605079458885,
119.71490754457008,
122.72700388159001,
125.81548178355771,
128.9807442872736,
132.22465274085025,
135.5500807784695,
138.9587175474322,
142.4519105794684,
146.03288729674927,
149.68878263768343,
153.43024778191307,
157.26259674167898,
161.20661192256657,
165.2442959820773,
169.3824049198503,
173.6249760052356,
177.9691855420861,
182.42009004001034,
186.98333317626154,
191.66638058215943,
196.5162512674653,
201.48970578779347,
206.59110432152318,
211.83016907116777,
217.20867527855208,
222.6919977196627,
228.30994135209096,
234.07684677254719,
239.99383450549382,
246.0659317181276,
252.29362584334604,
258.6778997082085
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-07
}
},
{
"variable": "W",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.26603359321116576,
0.26603359321116576,
0.26603359321116576,
0.26603359321116576,
0.26603359321116576,
0.26603359321116576,
0.26603359321116576,
0.26603359321116576,
0.26603359321116576,
0.26603359321116576,
0.26603359321116576,
0.24255829571215423,
0.21849011115086087,
0.1938147755931667,
0.168518201541242,
0.14259702024733828,
0.116088887005206,
0.08890055645102775,
0.0610137981418333,
0.03241047360413252,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.002997985434091424,
0.0021324950417247693,
0.001098682913044643,
0.0004636966184857311,
0.00014627035408090532,
3.242280484117975e-05,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-12
}
},
{
"variable": "U",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
10.135266425135013,
9.938266250464014,
9.748262015406992,
9.558539152799575,
9.367298554268983,
9.173749243995234,
8.977465852017167,
8.77819955433473,
8.575819023231645,
8.370279533970228,
8.161633519637014,
7.950063691332471,
7.735983563609426,
7.520375523274632,
7.306877507317923,
7.121521081385254,
7.075256393779865,
7.008624900329904,
6.919209603419082,
6.8053336623854275,
6.665221527307166,
6.496994228569019,
6.298656529838755,
6.0681014793614745,
5.803094154920062,
5.501269567017426,
5.160227203116742,
4.819887975843153,
4.481673589023628,
4.146185668211795,
3.8140657710912826,
3.4860052996131565,
3.1627425623435754,
2.8450656368601477,
2.533816478225719,
2.2298960807620603,
1.934271176826828,
1.6568175946278345,
1.4019052646143306,
1.173452398159749,
0.9617905398768669,
0.7714924322705835,
0.6046561579327767,
0.4633167513622003,
0.34962982259888287,
0.26587006607515923,
0.21423100381747587,
0.19291516786620616,
0.17326308997538048,
0.15311410817736246,
0.1322170664545722,
0.1053088045083876,
0.0669868653030319,
0.038632287091019304,
0.02104175258308007,
0.010605521084507423,
0.004780489879454269,
0.0018244372202235472,
0.0005088791576718286,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-08
}
},
{
"variable": "A_vap",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.11747577353357176,
0.11683296162447797,
0.11620306543613844,
0.11556405103334862,
0.11490940121570245,
0.11423570064404995,
0.11354060111350947,
0.11282222353913346,
0.1120789782297004,
0.1113094726745832,
0.11051256963493652,
0.10968754303373614,
0.1088345280181847,
0.10795601482192256,
0.10706593459294275,
0.10627609848980782,
0.10607639097654553,
0.1057869220233543,
0.10539499162992837,
0.10488993555074291,
0.1042591655737956,
0.10348768189635223,
0.10255737654821023,
0.10144616632623575,
0.10012665309574566,
0.09856426585231785,
0.09671500652668472,
0.09477074570783037,
0.09272845344816322,
0.09057941107119259,
0.08831346616614245,
0.08591871171656723,
0.0833809434459319,
0.08068294125183507,
0.0778034366482043,
0.07471557322809728,
0.07138452070704292,
0.06788226525617123,
0.06424424620741492,
0.06052618779607888,
0.05655100860201262,
0.052359288095987326,
0.04797389823542091,
0.043459372691290396,
0.038977165849098695,
0.03488251242865872,
0.031826017884192606,
0.030394980442163454,
0.02896254585096872,
0.027356964513718527,
0.025509894366202653,
0.022771141423362323,
0.01778925662756073,
0.012619804370765186,
0.008154037867564032,
0.004666049730382505,
0.0022853728898061423,
0.0009136932605246258,
0.00026046260337021175,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "R_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.7738241051796044,
0.7738241051796044,
0.7738241051796044,
0.7738241051796044,
0.7738241051796044,
0.7738241051796044,
0.7738241051796044,
0.7738241051796044,
0.7738241051796044,
0.7738241051796044,
0.7738241051796044,
0.7687237762676624,
0.7629555760428797,
0.7563427553030578,
0.7486280466218609,
0.739419815216094,
0.7280894051331209,
0.7134061293618146,
0.6927366625148342,
0.6139579469977401,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.2960082634715171,
0.25134938498407466,
0.17374988267006658,
0.09648478896722949,
0.03710081866701993,
0.008996166525229282,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "A_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.09482827120868588,
0.09482827120868588,
0.09482827120868588,
0.09482827120868588,
0.09482827120868588,
0.09482827120868588,
0.09482827120868588,
0.09482827120868588,
0.09482827120868588,
0.09482827120868588,
0.09482827120868588,
0.09357789844688522,
0.09216379348028322,
0.09054262530181856,
0.08865132343349984,
0.0863938765250916,
0.08361616622593622,
0.0800164830691379,
0.0749492533291316,
0.06619094731733624,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03306557537570226,
0.02807695953267548,
0.019408714387121585,
0.010777824324190315,
0.004144343477940278,
0.001004915939993551,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
52.13427034698938,
52.2607574037043,
52.38743992833878,
52.516766024677075,
52.649498393912495,
52.7860628995831,
52.92677152555977,
53.071888817900664,
53.2216487386199,
53.376267583468724,
53.53593553984054,
57.89595947703327,
62.821836554210286,
68.46121002044386,
75.02720156136355,
82.83062333723409,
92.31882237750948,
104.60731511718656,
121.88102519641161,
180.17328306429314,
411.2022656204223,
412.29834750118346,
413.49034236994044,
414.78964707282506,
416.21028547584154,
417.7698064594325,
419.490370832286,
421.282479824281,
423.14864990134254,
425.0941632972141,
427.1250749140547,
429.24835603628344,
431.47217861060193,
433.80628523913805,
436.26249918257105,
438.8554934999388,
441.6039991649984,
444.4753027834594,
447.45418492793266,
450.51550340839214,
453.7473860785774,
457.1325963662525,
460.6624928956342,
464.3079691909315,
467.99184763708195,
471.54027913953234,
474.6307162633209,
476.9677267857017,
479.35737318464936,
481.88745315469083,
484.5951056287182,
490.52855126168333,
532.2109397453206,
602.3769069306296,
672.9784816935509,
728.7682711821238,
757.7288379337921,
769.8576118063417,
773.8388679720447,
777.6224121444102
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "D_vap",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
56.30319658655554,
56.23345521461673,
56.16507839708889,
56.095673483920756,
56.024530051016406,
55.951273645226195,
55.87564513648274,
55.7974358551002,
55.716468110733445,
55.632585192965024,
55.54565773971105,
55.45214254035113,
55.351339047127794,
55.24266356175709,
55.1268160439643,
55.017938273239125,
54.98851989022956,
54.94233521996444,
54.8730599218444,
54.75440826317046,
54.46068205639913,
54.100862678572966,
53.66626438888537,
53.146289193277276,
52.527783110143695,
51.794142386493235,
50.924223810436246,
50.007912366597026,
49.043557875579076,
48.026800874141635,
46.95256705671978,
45.814907193271075,
44.606729246592366,
43.31944298498364,
41.94244963338906,
40.46238150057156,
38.86192427501599,
37.175061660727,
35.41836213638554,
33.61832428611367,
31.68862913837282,
29.648180175404242,
27.507365030222047,
25.297030751448155,
23.09587400538595,
21.078769731950448,
19.568253277667644,
18.858707086049378,
18.146065950593712,
17.344508430114345,
16.41910004732874,
15.034487786344652,
12.321688962566952,
9.160376174305531,
6.127646773677961,
3.573248241562648,
1.7651385212588595,
0.7081691365181356,
0.20254155790615683,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "D_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
605.4071168986293,
605.4071168986293,
605.4071168986293,
605.4071168986293,
605.4071168986293,
605.4071168986293,
605.4071168986293,
605.4071168986293,
605.4071168986293,
605.4071168986293,
605.4071168986293,
601.221260069264,
596.4859106140572,
591.05545768078,
584.7179389015021,
577.1508041604832,
567.8372429202699,
555.7637066519542,
538.7609642177779,
480.8931754102639,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
248.17480241604426,
211.26317549480927,
146.64660437980623,
81.81304376267846,
31.614510612915417,
7.69940946215473,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "D_sca",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
63.77782831223666,
63.72108262746056,
63.66277692035391,
63.60285573718375,
63.54126680085267,
63.477958700972266,
63.41287858373905,
63.34597057278069,
63.27717839642821,
63.2064424693478,
63.13370196622996,
63.05305005776242,
62.96332592901556,
62.86308088142978,
62.75045563758083,
62.623046373454365,
62.47782695640188,
62.309055155305636,
62.10736280837687,
61.80154540668323,
61.08564516856095,
60.34938266562591,
59.59198608655654,
58.81265657927994,
58.01052425939703,
57.184643999456455,
56.33399820265997,
55.45820065450418,
54.556385068460536,
53.6276286740264,
52.67095087460764,
51.68532961582759,
50.669684988187846,
49.62286462126044,
48.54364402942198,
47.43071784487174,
46.28266940536774,
45.09822840119567,
43.87604578106391,
42.614765150876295,
41.31257762843189,
39.967816303725364,
38.57873491952586,
37.143592903002464,
35.66087120291415,
34.12954397389927,
32.54962330439348,
30.922158973630964,
29.245153710138858,
27.516631260576677,
25.734387169334948,
23.884570680338058,
21.826607941713494,
19.438524659668975,
16.70323991450295,
13.66638210780834,
10.429026227204627,
7.056631201550438,
3.5810026144592544,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "xabs",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.001334488350409309,
0.0013052139524545692,
0.0013215762969014373,
0.001351265160630142,
0.0013877982513976561,
0.001428927300183644,
0.0014736479730520738,
0.001521331005065219,
0.0015715395917716242,
0.0016237215690251027,
0.001615228423617601,
0.0016045932235099773,
0.0015874023456239567,
0.0015440735544166861,
0.001314462771599458,
0.00031866072651218626,
0.00044150516828946496,
0.0005683846030044523,
0.00065854191396179,
0.0007143107694899349,
0.0008727160319873169,
0.0010510482232708985,
0.0012535876902366359,
0.0014860422837135302,
0.0017560884302961226,
0.0020737510001267293,
0.002175052340703608,
0.002278996970078456,
0.0023918394775196083,
0.002515033371988321,
0.002650353454941448,
0.0028001294326072236,
0.002967421877945135,
0.003156341317841117,
0.003372563759003527,
0.003624190968790543,
0.003795177378192357,
0.003925987472045663,
0.003995507006204264,
0.004252796174580447,
0.0044635822936017,
0.004647252984990054,
0.004760491797341872,
0.004703408311866906,
0.004277692410744467,
0.0031825088485103094,
0.0014876188718258106,
0.0014866593804976397,
0.0016633708041824849,
0.0019096527637953976,
0.0028226945351554782,
0.005097224842983981,
0.005248064379442557,
0.004506428486384444,
0.0035050902092264016,
0.002386222656160508,
0.0013729413966054357,
0.0006534016311910619,
0.00026046260337021175
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "xabsc",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"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.014234883152448747,
0.014840864433902567,
0.015617419477759766,
0.01663099770222766,
0.017986983232587173,
0.019862929946496584,
0.022724285023825487,
0.027466332276593466,
0.03213474405851803,
0.05274399314383058,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0005528712890199714,
0.0069688660513856715,
0.010778499874614423,
0.009680135180921541,
0.006921246188001494,
0.0031713277862695016,
0.001004915939993551,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "xalb",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"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.05806475342280763,
0.06053657938088594,
0.06370418368489897,
0.06783861661618196,
0.07336974494523052,
0.08102181923421106,
0.09269342027518078,
0.1120364525644126,
0.2890437782136459,
0.5066385184388382,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.004949391272541362,
0.06238639173211334,
0.09649083660153362,
0.08665810204469387,
0.061960091179138234,
0.028390228213068504,
0.008996166525229282,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "xsca",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.0010858182620230726,
0.0011129711088460178,
0.0011409914910222735,
0.0011697915119777303,
0.001199333619573735,
0.0012296256763326048,
0.0012607052895352527,
0.0012925600386852207,
0.0013252317983792439,
0.0013587229285216586,
0.001393049000242054,
0.0014282315460395225,
0.0014642605287847983,
0.0015011254785617344,
0.0015381903333956072,
0.0015730206832433305,
0.0016133843116724418,
0.0016548297538828156,
0.001697351552308161,
0.0017409929321331183,
0.001785751767857683,
0.0018317152819780885,
0.001878854770788851,
0.0019272284897184837,
0.001976878767136969,
0.002027807682709778,
0.0020788843355676375,
0.002131202796591465,
0.0021848250919991596,
0.0022398071562791154,
0.002296156164420428,
0.0023539052527332205,
0.002413105578565651,
0.0024737872126543146,
0.0025359741441869452,
0.002599723828757821,
0.0026648072384555135,
0.0027314139889620284,
0.0027996386820106087,
0.0028698512925844208,
0.0029417314262776984,
0.003015399355541216,
0.0030909269531258776,
0.003168263950696278,
0.0032475003658420367,
0.003328736669097624,
0.0034121057660023205,
0.003498444703897609,
0.0035869837204649292,
0.003677800436984253,
0.0037710679311917677,
0.0038668178065061217,
0.003964433653695053,
0.004064446070077421,
0.004167110351509364,
0.004272446445923156,
0.004380543848545485,
0.004491411236811567,
0.00460506610732078
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.9975796933875675,
0.9975818149386995,
0.9975374322120762,
0.9974789433273922,
0.9974128681290285,
0.9973414470234837,
0.9972656467374128,
0.9971861089562496,
0.9971032286098491,
0.9970175555024532,
0.9246920860008839,
0.921589731415662,
0.9176267339629325,
0.9124851866486121,
0.9057906187171872,
0.8972235694095368,
0.8825274052210318,
0.8582740008021067,
0.6764655842615661,
0.43816218471570806,
0.997341532200155,
0.997117236494751,
0.9968675575389746,
0.9965867292265679,
0.9962670328025669,
0.9958984413171634,
0.9957460633237288,
0.9955898002333301,
0.9954233354304813,
0.9952451594717325,
0.9950534903806382,
0.9948459653146595,
0.9946194725434893,
0.9943698714695046,
0.9940914620968095,
0.9937760852024516,
0.9935400153833521,
0.9933425985389923,
0.9932048543117851,
0.9928773525328352,
0.9925946862801206,
0.9923373476594688,
0.9921485812495322,
0.9921283277374369,
0.9924748072234135,
0.9934887544823922,
0.9951002753621718,
0.9950148959156049,
0.9947496454753526,
0.9944125467992202,
0.9879039749720913,
0.9216806995670107,
0.8835181654907143,
0.8950908882179229,
0.9234464620721244,
0.9617797748985782,
0.9842454322896264,
0.9948551871319974,
0.9951344712893089
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
1.1383084157102531e-06,
1.0888087304171463e-06,
1.078038848237523e-06,
1.0778366663202976e-06,
1.0825107074051935e-06,
1.0900319193342369e-06,
1.0994394652832289e-06,
1.1101659874166734e-06,
1.1217815226054927e-06,
1.1338422965180642e-06,
1.167456717202194e-05,
1.2819898093601136e-05,
1.4256174298475948e-05,
1.609920667719207e-05,
1.84203254879907e-05,
2.0991226664602932e-05,
2.6619380641530587e-05,
3.659363518085067e-05,
6.169218161329374e-05,
0.00022376917891923912,
3.571001736368824e-06,
4.20490943039191e-06,
4.904740299485903e-06,
5.687709020857938e-06,
6.577032615909098e-06,
7.602885367902371e-06,
7.811589005766712e-06,
8.019338244455979e-06,
8.247590668798008e-06,
8.499919134490767e-06,
8.780871398509457e-06,
9.096378602539358e-06,
9.45421365181053e-06,
9.864977634407547e-06,
1.0343404011492928e-05,
1.0910469974296953e-05,
1.1218647843042382e-05,
1.1398207430199707e-05,
1.1394788109482905e-05,
1.1916697447681552e-05,
1.229275760806951e-05,
1.2582325982065201e-05,
1.267347811300953e-05,
1.231278273130599e-05,
1.1007932115048061e-05,
8.042158387186452e-06,
3.6854013497470556e-06,
3.6101269595002623e-06,
3.96033468480368e-06,
4.459353192666861e-06,
7.781675524595763e-06,
2.9432237674877496e-05,
4.315729247547336e-05,
4.162973303920195e-05,
3.231564210235598e-05,
1.7468161701531752e-05,
7.406188696647129e-06,
1.995145322895855e-06,
7.794798249701869e-07
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-13
}
},
{
"variable": "dthdt",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
1.148842267313846e-06,
1.1008531967213394e-06,
1.0919787271742363e-06,
1.093856499341685e-06,
1.1007631822328457e-06,
1.1106647825847896e-06,
1.1226026409509483e-06,
1.1360137768885988e-06,
1.1504724001829738e-06,
1.165535106308309e-06,
1.2029628445618058e-05,
1.3242502692547022e-05,
1.4763845336764756e-05,
1.6716690992954208e-05,
1.9179293055125465e-05,
2.1918121193697485e-05,
2.787640297108234e-05,
3.843826796664699e-05,
6.500643244339465e-05,
0.00023656212232788461,
3.787974683686243e-06,
4.476119507691328e-06,
5.2402009851359334e-06,
6.0998366298018745e-06,
7.081495627321185e-06,
8.219707775835243e-06,
8.481499535950388e-06,
8.745871708588325e-06,
9.036564657053636e-06,
9.35810738833429e-06,
9.716236978290691e-06,
1.0118406526551217e-05,
1.0574361789601415e-05,
1.1097332553733299e-05,
1.170565797346569e-05,
1.2425377835481264e-05,
1.2860957212953153e-05,
1.315765056246031e-05,
1.3249828697153345e-05,
1.3963283853145312e-05,
1.452070049077663e-05,
1.4989937950364068e-05,
1.52351453256777e-05,
1.4943402246317868e-05,
1.349566411935847e-05,
9.966310543747809e-06,
4.619844497174959e-06,
4.581291096966731e-06,
5.0921686411411565e-06,
5.815384915167537e-06,
1.0303927423746582e-05,
3.9621593956060915e-05,
5.915378750055176e-05,
5.819637765480245e-05,
4.6168482429467186e-05,
2.5566296542424814e-05,
1.1137201366417275e-05,
3.093828748563421e-06,
1.2522144291824598e-06
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-13
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 1
},
"expected": 52.13427034698938,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 30
},
"expected": 425.0941632972141,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 60
},
"expected": 777.6224121444102,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 1.1383084157102531e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 10
},
"expected": 1.1338422965180642e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 30
},
"expected": 8.499919134490767e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 7.794798249701869e-07,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 1.148842267313846e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 30
},
"expected": 9.35810738833429e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 1.2522144291824598e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 0.9975796933875675,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 20
},
"expected": 0.43816218471570806,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 0.9951344712893089,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "n_renorm",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0
}
},
{
"variable": "n_floor",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0
}
}
]
},
{
"id": "synthetic_fog_2400_renormalised",
"description": "Reference: WRF 4.8 em_scm_xy single-column run (GNU real32 build, dt = 60 s, 59 layers, mp=6 ra_lw=1 ra_sw=1 sf_sfclay=1 sf_surface=1 bl_pbl=1, swrad_scat = 1, icloud = 1) dumped by the instrumented fork ctessum-claude/WRF, commit e42a269 (v4.8.0-2-ge42a269e; module_esm_dump, SWRAD/SWPARA hooks) and replayed through the real64 (-fdefault-real-8) standalone kernels/sw_driver of that commit; inputs are the dumped SWRAD arguments (single-precision values widened) of tile column 1, and every expected value is the real64 replay (the same inputs through the same Fortran in binary64, so the scheme's constants and literals are exact and the only residual is evaluation-order roundoff). The scheme is diagnostic (no time step), so no small-dt replay is involved. Column assertions are Linf_error of the whole field against the inline reference (WRF's top-down arrays reversed onto lev/lev_nodes, the top-of-atmosphere interface appended as 0 for the cumulative fields, per-cent quantities divided by 100, g/m^2 paths converted to kg/m^2); spot checks use a relative tolerance. Tolerances: measured Linf mismatch between this component and the real64 replay over all six regimes is at binary64 roundoff -- S and the cumulative depletions <= 1.2e-12 W/m^2 (1e-15 relative), U <= 4e-15 kg/m^2, W <= 1e-16 kg/m^2, the dimensionless absorptances/reflectances and layer fractions <= 4e-15, heating rates <= 1.3e-18 K/s -- so the column tolerances are set at about 1e-9 of each field's column maximum (S, D_*: abs 1e-6 W/m^2; U: 1e-8 kg/m^2; W: 1e-12 kg/m^2; rho: 1e-9 kg/m^3; m_air: 1e-7 kg/m^2; fractions: abs 1e-9; dT/dt, dtheta/dt: 1e-13 K/s), i.e. the 1e-9 relative contract for double-precision references, roughly a million times the measured error; scalar spot checks use rel 1e-9. Regime: SYNTHETIC, Fortran-generated -- the call-2400 column with the sun 2.9 degrees above the horizon (coszen = 0.05), swrad_scat = 3 (cssca = 3e-5 m^2/kg) and a surface fog of qc = 8.2e-3 kg/kg in the lowest layer (about 500 g/m^2 of liquid water, slant path 1e4 g/m^2, so the Stephens table argument sits at its clamp alw_max), replayed through the real64 sw_driver. The lowest layer's raw depletion is 95.9 % cloud + 2.3 % scattering + 1.3 % vapour = 99.5 % of the entering beam (tau_raw = 0.005 < tau_min), so SWPARA renormalises it: ff = 0.99/0.995, the applied fractions sum to 0.99, tau = 0.01 (TRANS0 = 1.), the beam reaching the surface is 1 % of the beam entering the layer and gsw = 1.9 mW/m^2. This is the only regime with n_renorm = 1; the renormalised layer is the LOWEST layer, so this regime checks the rescaling itself; synthetic_elevated_fog_2400 checks the bookkeeping below a renormalised layer. The beam floor S_min is not reached (n_floor = 0; the bottom beam is 2.3 mW/m^2). Inputs are the modified dump synthetic_fog_2400.json; expected values are the driver output.",
"parameter_overrides": {
"csza": 0.05,
"albedo": 0.20000000298023224,
"solcon": 1384.9686279296875,
"obscur": 0.0,
"cssca": 3e-05,
"icloud": 1.0
},
"expression_template_imports": [
{
"ref": "./tests/synthetic_fog_2400_renormalised_inputs.esm"
}
],
"time_span": {
"start": 0,
"end": 1
},
"assertions": [
{
"variable": "daylight",
"time": 0.0,
"expected": 1.0,
"tolerance": {
"abs": 0.0
}
},
{
"variable": "S_toa",
"time": 0.0,
"expected": 69.24843139648438,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "gsw",
"time": 0.0,
"expected": 0.0018664418384736646,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "rho",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
1.2062918376615348,
1.2011383728086538,
1.195425533346902,
1.1894288346478339,
1.1791871515726131,
1.1672895278781696,
1.1584851934370717,
1.150896234448783,
1.1437007781008806,
1.1365275204261491,
1.1291595458060688,
1.1214426231156818,
1.1131779561799748,
1.1037272479540579,
1.0917728785169984,
1.07678398621358,
1.064257615851101,
1.0528270231211154,
1.0416341023388809,
1.0304217673389482,
1.0191110207508651,
1.0076381047275602,
0.9959576778467848,
0.9840744481280359,
0.9720181366074299,
0.959741718911561,
0.9470063495647675,
0.9339110458968173,
0.9205418779451703,
0.906898608228577,
0.8929018813396441,
0.8786391788780796,
0.864078479818929,
0.8492044684806399,
0.8340664543394866,
0.8187168495088628,
0.803357473231926,
0.7878340993213567,
0.7722288934381548,
0.7568275514034879,
0.7416767062148807,
0.7260523468604505,
0.7099095482422286,
0.6932645686648368,
0.6761203956125887,
0.6574803721635206,
0.6371081007064419,
0.6171554891265252,
0.5971142202301917,
0.576434155615519,
0.554399234110138,
0.5314600443311969,
0.5079012003431846,
0.4834019606429198,
0.4577982526952479,
0.43095800803242545,
0.40273634474194464,
0.3729601558276223,
0.3414110876322399
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "m_air",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
61.17798805051432,
62.71770149230121,
64.2978910875508,
65.91482252667794,
67.52165327308421,
69.16842350821472,
70.89124723098715,
72.67371642836797,
74.50801506426866,
76.39006297218792,
78.3184895566859,
80.29382704017225,
82.31449566681101,
84.37726693271928,
86.44570224972556,
88.39973279201723,
90.62987648519703,
92.95580974342724,
95.34448732911297,
97.79598153465497,
100.31003288110902,
102.89224916467566,
105.53978229000163,
108.25731889101482,
111.04630879761045,
113.90407324459629,
116.77621766301199,
119.71481017339251,
122.72715557865638,
125.81579749303124,
128.98072312890378,
132.2248998682735,
135.55020195499338,
138.95895951691284,
142.45207498291086,
146.03282145188663,
149.68907235302052,
153.4304985005248,
157.25943689214049,
161.15733627168305,
165.2207993015577,
169.37617162977693,
173.62973277076773,
177.98721530244262,
182.4646903968282,
186.99505848434896,
191.672478875422,
196.5164107051176,
201.50010051636133,
206.60576648378597,
211.8552213893571,
217.21171644857162,
222.68962848855548,
228.31065159720558,
234.07707494402663,
239.99437015478384,
246.06640047636492,
252.29370509910385,
258.6772455028432
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-07
}
},
{
"variable": "W",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.5016603846381634,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.631460252290011e-07,
3.056449170843556e-07,
1.7746698947371257e-07,
6.196472527779594e-08,
1.5127738580836344e-08,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-12
}
},
{
"variable": "U",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
11.204529265486517,
10.891013690626702,
10.575425801798117,
10.25624202311608,
9.9360946226339,
9.646837077786534,
9.38939647762924,
9.143426768121875,
8.898703516594297,
8.651383006883538,
8.400579447846454,
8.146651794001198,
7.8908285720535165,
7.6354172045602455,
7.387340689376523,
7.175812906091537,
7.105186358859538,
7.037286154662941,
6.947870809692554,
6.834037571222329,
6.693970663577088,
6.525787433161684,
6.327492268141233,
6.096975484095336,
5.832002575498873,
5.530265170109668,
5.191139398427396,
4.850872279671052,
4.512658167941186,
4.177169946747115,
3.8450492162363363,
3.5169887985741872,
3.193725457127657,
2.8760486894967285,
2.5647989565287443,
2.2608782083112104,
1.965412697960151,
1.6879956092290385,
1.4331361797238842,
1.2067927977620925,
1.0259807317983203,
0.8504425092156616,
0.6876414285080289,
0.5435603881778535,
0.4190194957310855,
0.3074671054227933,
0.24855286227809015,
0.2236733201042535,
0.20396181048705775,
0.17752049737302153,
0.14791023516913424,
0.10554553656824502,
0.06568626989457256,
0.038538317954657474,
0.021120029493881233,
0.010634184019109684,
0.004789873238157499,
0.001826280404736324,
0.0005089617428796051,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-08
}
},
{
"variable": "A_vap",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.21661210319419671,
0.21536136687113833,
0.2140670794797185,
0.21271997746295268,
0.2113280694032613,
0.2100332917764834,
0.2088495654247653,
0.20768950937002545,
0.20650567509552434,
0.20527764415085611,
0.20399807897965472,
0.20266545926653728,
0.20128289708129682,
0.19986006039656268,
0.19843487869640777,
0.1971839915760292,
0.19675868805654517,
0.1963460818839298,
0.195797059472368,
0.19508854396013725,
0.19420158299672002,
0.1931135997307658,
0.1917970406530919,
0.1902178719744317,
0.18833336459483438,
0.1860893307112751,
0.18342966494520957,
0.18059719958568962,
0.17759759989441176,
0.1744149401359212,
0.1710299729651136,
0.16742010688812559,
0.1635583769017461,
0.15941221080530796,
0.15494151617801,
0.1500960463587705,
0.14481427468881536,
0.1391973710034218,
0.1333009743183821,
0.12727515687293056,
0.12174536864293671,
0.11554962028924017,
0.10879147218373435,
0.10163414910732409,
0.09410478472285032,
0.08567761680615468,
0.0802130801794331,
0.07759991052772344,
0.07536555982503428,
0.07209163414532563,
0.0679475911665014,
0.060739787174259104,
0.05154043074409059,
0.04235396368417871,
0.03325353391268484,
0.024270778275570448,
0.015609852852913497,
0.007997320030190753,
0.0026952913829865286,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "R_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.9499800000000002,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.004924504699359389,
0.0017534498004378811,
0.0010194083338090714,
0.00035634916675332805,
8.703792120327847e-05,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "A_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.009249,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.6457591503390463e-05,
1.6541979249413975e-05,
9.617059752915768e-06,
3.361784592012529e-06,
8.211124641818723e-07,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.0023330523067833777,
0.23330523067833775,
0.24759438769954994,
0.2629263317751091,
0.2793508845162539,
0.2963748090668652,
0.314008521924515,
0.3326856416546651,
0.3527023629813359,
0.37426488701814253,
0.39754302374811823,
0.4226994202620551,
0.44989534213150356,
0.47928264539385496,
0.5109106328789914,
0.5442315456046254,
0.576556660963445,
0.611515904439399,
0.6500624675913097,
0.6926716552065021,
0.7398584839667476,
0.792219921659349,
0.8504565631278623,
0.9153912492331278,
0.988003313304677,
1.0694658610371042,
1.1611280451442607,
1.262977648040666,
1.3762769923277187,
1.502599308582684,
1.6437804258036832,
1.8019636255373472,
1.9796658154064022,
2.1798549139152663,
2.406050917217545,
2.6624525479960655,
2.954091458833545,
3.285735938567119,
3.6633232257562685,
4.093090260755099,
4.578199465464232,
5.138255378745714,
5.785470288421704,
6.533779986866041,
7.401281593961401,
8.416803708144165,
9.555786080791691,
10.837344054062397,
12.323808244504049,
14.080619288479605,
16.161266093172166,
18.688256685858143,
21.743922050610124,
25.48149395760618,
29.883538842010907,
35.174313313648625,
41.53360109000683,
49.17646690942663,
58.31399060263499,
69.24843139648438
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "D_vap",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
3.6036872963619104,
3.5988942253051075,
3.593922198823241,
3.588733619934397,
3.583357085578588,
3.5783401912859905,
3.5737381630861385,
3.5692117433996327,
3.5645743369795144,
3.5597432532466926,
3.5546861184876803,
3.54939283005259,
3.543871199455513,
3.538155041735632,
3.5323925999600125,
3.5272995741221256,
3.5255549316244816,
3.5238486546813736,
3.5215583413647193,
3.5185746080613702,
3.5148008912828868,
3.510120017424717,
3.504386609114455,
3.4974180389017318,
3.4889811286824646,
3.4787747227019747,
3.4664668669350984,
3.4531087156773626,
3.438665814719822,
3.422989341934942,
3.405896351819498,
3.3871642949701064,
3.366518773629905,
3.343617539409321,
3.3180269353078002,
3.2891884385326264,
3.256386114031377,
3.2198448930824584,
3.1794969111111104,
3.135936117845311,
3.0935131716009727,
3.042825254734628,
2.983562830177052,
2.91592821559424,
2.8388267088459282,
2.744766284305603,
2.6779147778830197,
2.6426891641730887,
2.6093233111882776,
2.5548599883894747,
2.4776196448138665,
2.32615190666606,
2.1067411547441006,
1.8556097520023862,
1.569374721013218,
1.2422535992916504,
0.8749562469141066,
0.49681674468476633,
0.18664470042827813,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "D_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.5070008656268666,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.1430994552590884,
0.061337604656363544,
0.039165886270754006,
0.015612760528770928,
0.004320596861842064,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "D_sca",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
65.27926253774275,
65.27069865097401,
65.26138152043467,
65.25123815524795,
65.24019013686261,
65.22818310660459,
65.21515142194679,
65.20100072190314,
65.18562140699659,
65.1688899666926,
65.15066896472165,
65.1308058566428,
65.10913156537042,
65.08546041982795,
65.05959487411843,
65.03136698723068,
65.00078651436951,
64.96753354783667,
64.9312772980014,
64.89165184368956,
64.8482387317078,
64.80055816787336,
64.74805493471511,
64.69008881882257,
64.6259136649703,
64.55465752321837,
64.47530319487808,
64.3868117432394,
64.2879552999099,
64.17730945643981,
64.05322132933426,
63.91377018644999,
63.756713517921135,
63.57942565363285,
63.37882025443209,
63.151257120428745,
62.892420534092516,
62.59731727530786,
62.26007797009006,
61.87387172835703,
61.431185469892235,
60.9218174734771,
60.333864988358684,
59.65318990449716,
58.86278980415011,
57.94132811450767,
56.86919724828273,
55.622864888721956,
54.16976655126511,
52.467418830088356,
50.4640123689714,
48.088489514433235,
45.25466873587105,
41.849990082219435,
37.756351947189486,
32.81625172301533,
26.835553462701583,
19.575147742372977,
10.747796093421114,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06
}
},
{
"variable": "xabs",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.012659631152048552,
0.02008133757821676,
0.01973396446759101,
0.019246527051881755,
0.016927532769715814,
0.01465574300865021,
0.01360569594766083,
0.013148214774970694,
0.012908193903286843,
0.01272097472955856,
0.01252258267070415,
0.012273144618294063,
0.011926485915600032,
0.01127876658809754,
0.009358196670184876,
0.0030259688522694824,
0.0027902413178808707,
0.0035232203531773833,
0.004307572398728464,
0.005100592694768886,
0.0059085535849257975,
0.0067415651296466525,
0.0076126685923218656,
0.008539354175895866,
0.009543461228946965,
0.010599912574971308,
0.010576712326191265,
0.010494181794838338,
0.010432902967103716,
0.010398584778795426,
0.010395357921725726,
0.010428791152290095,
0.010505852510822042,
0.010635936221630088,
0.010831553334867655,
0.011104031462249355,
0.011121167869884756,
0.01101403820652991,
0.010642519585620751,
0.009266294875170238,
0.009864810744131971,
0.010243320180241223,
0.010351529240159437,
0.010417318375133539,
0.011175314026785722,
0.006995919106745502,
0.0032503917504332325,
0.0027074303918750817,
0.0038679635947094495,
0.0047793497817748805,
0.008104968841873098,
0.010090670460060928,
0.009855442665941178,
0.009578351228830134,
0.009300000224727501,
0.008843378439099927,
0.007689440213868938,
0.005318998769438919,
0.0026952913829865286
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "xabsc",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.00920704139937802,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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.0460907006462071e-06,
2.9987623416294546e-05,
6.933995416551314e-06,
6.258051678876965e-06,
2.5409364251642473e-06,
8.211124641818724e-07,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "xalb",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.9455140826188436,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0001108856142684974,
0.003178688082127222,
0.0007350035141544392,
0.0006633534779609583,
0.0002693392610674102,
8.703792120327848e-05,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "xsca",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.02261924482972978,
0.037630620895380724,
0.03857873465253048,
0.03954889351600677,
0.04051299196385053,
0.04150105410492884,
0.04253474833859229,
0.04360422985702079,
0.044704809038561194,
0.045834037783312756,
0.046991093734011544,
0.048176296224103354,
0.04938869740008661,
0.050626360159631574,
0.05186742134983534,
0.053039839675210344,
0.05437792589111822,
0.05577348584605635,
0.05720669239746779,
0.058677588920792986,
0.06018601972866541,
0.0617353494988054,
0.06332386937400097,
0.0649543913346089,
0.06662778527856628,
0.06834244394675779,
0.0700657305978072,
0.07182888610403551,
0.07363629334719383,
0.07548947849581875,
0.07738843387734227,
0.07933493992096409,
0.08133012117299604,
0.0833753757101477,
0.08547124498974652,
0.08761969287113199,
0.08981344341181233,
0.09205829910031489,
0.0943556621352843,
0.09669440176300984,
0.09913247958093462,
0.10162570297786618,
0.10417783966246065,
0.10679232918146558,
0.10947881423809692,
0.11219703509060938,
0.11500348732525321,
0.11790984642307056,
0.1209000603098168,
0.12396345989027159,
0.12711313283361428,
0.130327029869143,
0.1336137770931333,
0.13698639095832335,
0.140446244966416,
0.1439966220928703,
0.14763984028581895,
0.15137622305946233,
0.15520634730170596
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.01,
0.9422880415264026,
0.9416873008798785,
0.9412045794321116,
0.9425594752664336,
0.943843202886421,
0.9438595557137469,
0.9432475553680086,
0.9423869970581521,
0.9414449874871288,
0.9404863235952843,
0.9395505591576025,
0.9386848166843135,
0.9380948732522708,
0.9387743819799798,
0.9439341914725202,
0.9428318327910009,
0.9407032938007663,
0.9384857352038037,
0.9362218183844382,
0.9339054266864087,
0.9315230853715479,
0.9290634620336772,
0.9265062544894953,
0.9238287534924868,
0.9210576434782709,
0.9193575570760015,
0.9176769321011261,
0.9159308036857026,
0.9141119367253857,
0.9122162082009321,
0.9102362689267457,
0.9081640263161819,
0.9059886880682222,
0.9036972016753857,
0.9012762756666186,
0.8990653887183029,
0.8969276626931552,
0.8950018182790949,
0.89403930336182,
0.8910027096749334,
0.8881309768418926,
0.8854706310973799,
0.882790352443401,
0.8793458717351175,
0.8808070458026451,
0.8817461209243135,
0.8793827231850544,
0.8752319760954737,
0.8712571903279536,
0.8647818983245125,
0.859470367965827,
0.8533221045353819,
0.8526933203032755,
0.8495841432792166,
0.8468881192705373,
0.8445828604666445,
0.8433047781710986,
0.8420983613153075
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
8.301604628596444e-08,
7.892114151848809e-08,
8.033443701663969e-08,
8.12024994244742e-08,
7.396767056450014e-08,
6.623559731700766e-08,
6.35641524631454e-08,
6.352546429310049e-08,
6.454931382967302e-08,
6.590490182789121e-08,
6.72839245989174e-08,
6.845974060689465e-08,
6.91318120543223e-08,
6.798782613922711e-08,
5.865196026425616e-08,
1.9647421120978337e-08,
1.8742529065034273e-08,
2.452835475370075e-08,
3.1154047146486276e-08,
3.8414780131579196e-08,
4.64550170608871e-08,
5.5472823274887354e-08,
6.573210572942279e-08,
7.758472398340833e-08,
9.14995105863915e-08,
1.0757050370941973e-07,
1.1387857163010914e-07,
1.201037619400422e-07,
1.271621151017474e-07,
1.3524864588881193e-07,
1.445808316625068e-07,
1.5543995657064694e-07,
1.6819333361545651e-07,
1.8333443456878234e-07,
2.015365862979094e-07,
2.236166841650949e-07,
2.4302055940115266e-07,
2.6179429664523707e-07,
2.757586362223576e-07,
2.620600413203042e-07,
3.0541459238687104e-07,
3.4831899769244986e-07,
3.8778854985300584e-07,
4.3124504278933255e-07,
5.131899690673547e-07,
3.559025723008822e-07,
1.829569314129461e-07,
1.6902598189574346e-07,
2.6907845529017684e-07,
3.7217895922336245e-07,
7.117558199334979e-07,
1.0057029818150016e-06,
1.1260833386231272e-06,
1.248995724426519e-06,
1.3921688308650936e-06,
1.5240231675876317e-06,
1.5300166754924086e-06,
1.2239010195760909e-06,
7.183026923707021e-07
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-13
}
},
{
"variable": "dthdt",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "aggregate",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
8.378191408378896e-08,
7.979218588413985e-08,
8.137148940148263e-08,
8.240794757790345e-08,
7.521375414548557e-08,
6.748851346370323e-08,
6.490262567376283e-08,
6.500389743550918e-08,
6.61996959446314e-08,
6.774658209482589e-08,
6.932984994114713e-08,
7.071618897971434e-08,
7.159340813041983e-08,
7.059536930985775e-08,
6.106851630255754e-08,
2.05149756396543e-08,
1.9627596262003972e-08,
2.57648036966672e-08,
3.2827729079898624e-08,
4.0610978671477565e-08,
4.9277628044915914e-08,
5.905075978448965e-08,
7.022790191654519e-08,
8.320650398049141e-08,
9.851763143691948e-08,
1.162977556350222e-07,
1.2364467258288686e-07,
1.3098492706443528e-07,
1.393266344574203e-07,
1.4890397750982745e-07,
1.599820712319308e-07,
1.729045437938718e-07,
1.8812117206114157e-07,
2.0623709000542896e-07,
2.2807958584277416e-07,
2.5466572390141525e-07,
2.785967026901943e-07,
3.0220535269578715e-07,
3.2065152734836573e-07,
3.0706638531377327e-07,
3.6076741029857906e-07,
4.149684784965567e-07,
4.6617044589632473e-07,
5.233792957382614e-07,
6.291673847547905e-07,
4.4105510785678996e-07,
2.2934619110814395e-07,
2.144959242597347e-07,
3.4597929876685437e-07,
4.853543784189851e-07,
9.424570273296948e-07,
1.3538783809458603e-06,
1.543475283666809e-06,
1.7460383805991955e-06,
1.9889552492756573e-06,
2.2305521268452614e-06,
2.300793379188728e-06,
1.8978772204055026e-06,
1.1539348177670324e-06
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-13
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 1
},
"expected": 0.0023330523067833777,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 30
},
"expected": 1.502599308582684,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 60
},
"expected": 69.24843139648438,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 8.301604628596444e-08,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 10
},
"expected": 6.590490182789121e-08,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 30
},
"expected": 1.3524864588881193e-07,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 7.183026923707021e-07,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 8.378191408378896e-08,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 30
},
"expected": 1.4890397750982745e-07,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 1.1539348177670324e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 0.01,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 20
},
"expected": 0.9362218183844382,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 0.8420983613153075,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "n_renorm",
"time": 0.0,
"expected": 1.0,
"tolerance": {
"abs": 0.0
}
},
{
"variable": "n_floor",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0
}
}
]
},
{
"id": "synthetic_elevated_fog_2400",
"description": "Reference: WRF 4.8 em_scm_xy single-column run (GNU real32 build, dt = 60 s, 59 layers, mp=6 ra_lw=1 ra_sw=1 sf_sfclay=1 sf_surface=1 bl_pbl=1, swrad_scat = 1, icloud = 1) dumped by the instrumented fork ctessum-claude/WRF, commit e42a269 (v4.8.0-2-ge42a269e; module_esm_dump, SWRAD/SWPARA hooks) and replayed through the real64 (-fdefault-real-8) standalone kernels/sw_driver of that commit; inputs are the dumped SWRAD arguments (single-precision values widened) of tile column 1, and every expected value is the real64 replay (the same inputs through the same Fortran in binary64, so the scheme's constants and literals are exact and the only residual is evaluation-order roundoff). The scheme is diagnostic (no time step), so no small-dt replay is involved. Column assertions are Linf_error of the whole field against the inline reference (WRF's top-down arrays reversed onto lev/lev_nodes, the top-of-atmosphere interface appended as 0 for the cumulative fields, per-cent quantities divided by 100, g/m^2 paths converted to kg/m^2); spot checks use a relative tolerance. Tolerances: measured Linf mismatch between this component and the real64 replay over all six regimes is at binary64 roundoff -- S and the cumulative depletions <= 1.2e-12 W/m^2 (1e-15 relative), U <= 4e-15 kg/m^2, W <= 1e-16 kg/m^2, the dimensionless absorptances/reflectances and layer fractions <= 4e-15, heating rates <= 1.3e-18 K/s -- so the column tolerances are set at about 1e-9 of each field's column maximum (S, D_*: abs 1e-6 W/m^2; U: 1e-8 kg/m^2; W: 1e-12 kg/m^2; rho: 1e-9 kg/m^3; m_air: 1e-7 kg/m^2; fractions: abs 1e-9; dT/dt, dtheta/dt: 1e-13 K/s), i.e. the 1e-9 relative contract for double-precision references, roughly a million times the measured error; scalar spot checks use rel 1e-9. Regime: SYNTHETIC, Fortran-generated -- the synthetic_fog_2400 column (coszen = 0.05, swrad_scat = 3) with its liquid water moved from the lowest layer up to layer 6 (about 500 g/m^2, so the Stephens argument sits at its clamp alw_max) and a thin cloud, qc = 2e-4 kg/kg, left in layer 1 below it, replayed through the real64 sw_driver. Layer 6 is renormalised (tau = 0.01), and so is every layer below it: SWPARA keeps accumulating the raw fractions in DABS, DSCLD and DSCA, so the partial beams the vapour and cloud fractions act on stay near their values above the deck while the beam itself drops to 1 % per layer, and each raw depletion F/S then exceeds 99 %. The beam reaches its floor S_min at the two lowest interfaces (gsw = 8e-10 W/m^2). This is the regime in which the beam is no longer SDOWN(1) - DSCLD - DSCA - DABS, so it checks that the sweep carries the partial beams separately: n_renorm = 6, n_floor = 2. Inputs are the modified dump; expected values are the driver output.",
"parameter_overrides": {
"csza": 0.05,
"albedo": 0.20000000298023224,
"solcon": 1384.9686279296875,
"obscur": 0.0,
"cssca": 3e-05,
"icloud": 1.0
},
"expression_template_imports": [
{
"ref": "./tests/synthetic_elevated_fog_2400_inputs.esm"
}
],
"time_span": {
"start": 0,
"end": 1
},
"assertions": [
{
"variable": "daylight",
"time": 0.0,
"expected": 1.0,
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "S_toa",
"time": 0.0,
"expected": 69.24843139648438,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "gsw",
"time": 0.0,
"expected": 7.999999970197679e-10,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "rho",
"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.2062918376615348,
1.2011383728086538,
1.195425533346902,
1.1894288346478339,
1.1791871515726131,
1.1672895278781696,
1.1584851934370717,
1.150896234448783,
1.1437007781008806,
1.1365275204261491,
1.1291595458060688,
1.1214426231156818,
1.1131779561799748,
1.1037272479540579,
1.0917728785169984,
1.07678398621358,
1.064257615851101,
1.0528270231211154,
1.0416341023388809,
1.0304217673389482,
1.0191110207508651,
1.0076381047275602,
0.9959576778467848,
0.9840744481280359,
0.9720181366074299,
0.959741718911561,
0.9470063495647675,
0.9339110458968173,
0.9205418779451703,
0.906898608228577,
0.8929018813396441,
0.8786391788780796,
0.864078479818929,
0.8492044684806399,
0.8340664543394866,
0.8187168495088628,
0.803357473231926,
0.7878340993213567,
0.7722288934381548,
0.7568275514034879,
0.7416767062148807,
0.7260523468604505,
0.7099095482422286,
0.6932645686648368,
0.6761203956125887,
0.6574803721635206,
0.6371081007064419,
0.6171554891265252,
0.5971142202301917,
0.576434155615519,
0.554399234110138,
0.5314600443311969,
0.5079012003431846,
0.4834019606429198,
0.4577982526952479,
0.43095800803242545,
0.40273634474194464,
0.3729601558276223,
0.3414110876322399
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09,
"rel": 0.0
}
},
{
"variable": "m_air",
"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": [
61.17798805051432,
62.71770149230121,
64.2978910875508,
65.91482252667794,
67.52165327308421,
69.16842350821472,
70.89124723098715,
72.67371642836797,
74.50801506426866,
76.39006297218792,
78.3184895566859,
80.29382704017225,
82.31449566681101,
84.37726693271928,
86.44570224972556,
88.39973279201723,
90.62987648519703,
92.95580974342724,
95.34448732911297,
97.79598153465497,
100.31003288110902,
102.89224916467566,
105.53978229000163,
108.25731889101482,
111.04630879761045,
113.90407324459629,
116.77621766301199,
119.71481017339251,
122.72715557865638,
125.81579749303124,
128.98072312890378,
132.2248998682735,
135.55020195499338,
138.95895951691284,
142.45207498291086,
146.03282145188663,
149.68907235302052,
153.4304985005248,
157.25943689214049,
161.15733627168305,
165.2207993015577,
169.37617162977693,
173.62973277076773,
177.98721530244262,
182.4646903968282,
186.99505848434896,
191.672478875422,
196.5164107051176,
201.50010051636133,
206.60576648378597,
211.8552213893571,
217.21171644857162,
222.68962848855548,
228.31065159720558,
234.07707494402663,
239.99437015478384,
246.06640047636492,
252.29370509910385,
258.6772455028432
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-07,
"rel": 0.0
}
},
{
"variable": "W",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "faq",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.49767612674360096,
0.4854405291334981,
0.4854405291334981,
0.4854405291334981,
0.4854405291334981,
0.4854405291334981,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.826239458825359e-07,
8.631460252290011e-07,
3.056449170843556e-07,
1.7746698947371257e-07,
6.196472527779594e-08,
1.5127738580836344e-08,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-12,
"rel": 0.0
}
},
{
"variable": "U",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "faq",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
11.204529265486517,
10.891013690626702,
10.575425801798117,
10.25624202311608,
9.9360946226339,
9.646837077786534,
9.38939647762924,
9.143426768121875,
8.898703516594297,
8.651383006883538,
8.400579447846454,
8.146651794001198,
7.8908285720535165,
7.6354172045602455,
7.387340689376523,
7.175812906091537,
7.105186358859538,
7.037286154662941,
6.947870809692554,
6.834037571222329,
6.693970663577088,
6.525787433161684,
6.327492268141233,
6.096975484095336,
5.832002575498873,
5.530265170109668,
5.191139398427396,
4.850872279671052,
4.512658167941186,
4.177169946747115,
3.8450492162363363,
3.5169887985741872,
3.193725457127657,
2.8760486894967285,
2.5647989565287443,
2.2608782083112104,
1.965412697960151,
1.6879956092290385,
1.4331361797238842,
1.2067927977620925,
1.0259807317983203,
0.8504425092156616,
0.6876414285080289,
0.5435603881778535,
0.4190194957310855,
0.3074671054227933,
0.24855286227809015,
0.2236733201042535,
0.20396181048705775,
0.17752049737302153,
0.14791023516913424,
0.10554553656824502,
0.06568626989457256,
0.038538317954657474,
0.021120029493881233,
0.010634184019109684,
0.004789873238157499,
0.001826280404736324,
0.0005089617428796051,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-08,
"rel": 0.0
}
},
{
"variable": "A_vap",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "faq",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.21661210319419671,
0.21536136687113833,
0.2140670794797185,
0.21271997746295268,
0.2113280694032613,
0.2100332917764834,
0.2088495654247653,
0.20768950937002545,
0.20650567509552434,
0.20527764415085611,
0.20399807897965472,
0.20266545926653728,
0.20128289708129682,
0.19986006039656268,
0.19843487869640777,
0.1971839915760292,
0.19675868805654517,
0.1963460818839298,
0.195797059472368,
0.19508854396013725,
0.19420158299672002,
0.1931135997307658,
0.1917970406530919,
0.1902178719744317,
0.18833336459483438,
0.1860893307112751,
0.18342966494520957,
0.18059719958568962,
0.17759759989441176,
0.1744149401359212,
0.1710299729651136,
0.16742010688812559,
0.1635583769017461,
0.15941221080530796,
0.15494151617801,
0.1500960463587705,
0.14481427468881536,
0.1391973710034218,
0.1333009743183821,
0.12727515687293056,
0.12174536864293671,
0.11554962028924017,
0.10879147218373435,
0.10163414910732409,
0.09410478472285032,
0.08567761680615468,
0.0802130801794331,
0.07759991052772344,
0.07536555982503428,
0.07209163414532563,
0.0679475911665014,
0.060739787174259104,
0.05154043074409059,
0.04235396368417871,
0.03325353391268484,
0.024270778275570448,
0.015609852852913497,
0.007997320030190753,
0.0026952913829865286,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09,
"rel": 0.0
}
},
{
"variable": "R_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "faq",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.9499604086816567,
0.949744215156958,
0.949744215156958,
0.949744215156958,
0.949744215156958,
0.949744215156958,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.005034665332798785,
0.004924504699359389,
0.0017534498004378811,
0.0010194083338090714,
0.00035634916675332805,
8.703792120327847e-05,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09,
"rel": 0.0
}
},
{
"variable": "A_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "faq",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.009248020434082838,
0.009237210757847902,
0.009237210757847902,
0.009237210757847902,
0.009237210757847902,
0.009237210757847902,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.749684276225269e-05,
4.6457591503390463e-05,
1.6541979249413975e-05,
9.617059752915768e-06,
3.361784592012529e-06,
8.211124641818723e-07,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09,
"rel": 0.0
}
},
{
"variable": "S",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "faq",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
1e-09,
1e-09,
3.1400852192451504e-09,
3.1400852192451505e-07,
3.1400852192451505e-05,
0.00314008521924515,
0.314008521924515,
0.3326856416546651,
0.3527023629813359,
0.37426488701814253,
0.39754302374811823,
0.4226994202620551,
0.44989534213150356,
0.47928264539385496,
0.5109106328789914,
0.5442315456046254,
0.576556660963445,
0.611515904439399,
0.6500624675913097,
0.6926716552065021,
0.7398584839667476,
0.792219921659349,
0.8504565631278623,
0.9153912492331278,
0.988003313304677,
1.0694658610371042,
1.1611280451442607,
1.262977648040666,
1.3762769923277187,
1.502599308582684,
1.6437804258036832,
1.8019636255373472,
1.9796658154064022,
2.1798549139152663,
2.406050917217545,
2.6624525479960655,
2.954091458833545,
3.285735938567119,
3.6633232257562685,
4.093090260755099,
4.578199465464232,
5.138255378745714,
5.785470288421704,
6.533779986866041,
7.401281593961401,
8.416803708144165,
9.555786080791691,
10.837344054062397,
12.323808244504049,
14.080619288479605,
16.161266093172166,
18.688256685858143,
21.743922050610124,
25.48149395760618,
29.883538842010907,
35.174313313648625,
41.53360109000683,
49.17646690942663,
58.31399060263499,
69.24843139648438
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06,
"rel": 0.0
}
},
{
"variable": "D_vap",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "faq",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
3.600946668125658,
3.5966488505298173,
3.592201381448958,
3.5875724291550797,
3.5827895112660535,
3.5783401912859905,
3.5737381630861385,
3.5692117433996327,
3.5645743369795144,
3.5597432532466926,
3.5546861184876803,
3.54939283005259,
3.543871199455513,
3.538155041735632,
3.5323925999600125,
3.5272995741221256,
3.5255549316244816,
3.5238486546813736,
3.5215583413647193,
3.5185746080613702,
3.5148008912828868,
3.510120017424717,
3.504386609114455,
3.4974180389017318,
3.4889811286824646,
3.4787747227019747,
3.4664668669350984,
3.4531087156773626,
3.438665814719822,
3.422989341934942,
3.405896351819498,
3.3871642949701064,
3.366518773629905,
3.343617539409321,
3.3180269353078002,
3.2891884385326264,
3.256386114031377,
3.2198448930824584,
3.1794969111111104,
3.135936117845311,
3.0935131716009727,
3.042825254734628,
2.983562830177052,
2.91592821559424,
2.8388267088459282,
2.744766284305603,
2.6779147778830197,
2.6426891641730887,
2.6093233111882776,
2.5548599883894747,
2.4776196448138665,
2.32615190666606,
2.1067411547441006,
1.8556097520023862,
1.569374721013218,
1.2422535992916504,
0.8749562469141066,
0.49681674468476633,
0.18664470042827813,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06,
"rel": 0.0
}
},
{
"variable": "D_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "faq",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.5839860143937897,
0.5838898851278699,
0.5838898851278699,
0.5838898851278699,
0.5838898851278699,
0.5838898851278699,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.14553328952692934,
0.1430994552590884,
0.061337604656363544,
0.039165886270754006,
0.015612760528770928,
0.004320596861842064,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06,
"rel": 0.0
}
},
{
"variable": "D_sca",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "faq",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
65.22831157498973,
65.22831157495303,
65.22831157483486,
65.2283115627208,
65.22831032085185,
65.22818310660459,
65.21515142194679,
65.20100072190314,
65.18562140699659,
65.1688899666926,
65.15066896472165,
65.1308058566428,
65.10913156537042,
65.08546041982795,
65.05959487411843,
65.03136698723068,
65.00078651436951,
64.96753354783667,
64.9312772980014,
64.89165184368956,
64.8482387317078,
64.80055816787336,
64.74805493471511,
64.69008881882257,
64.6259136649703,
64.55465752321837,
64.47530319487808,
64.3868117432394,
64.2879552999099,
64.17730945643981,
64.05322132933426,
63.91377018644999,
63.756713517921135,
63.57942565363285,
63.37882025443209,
63.151257120428745,
62.892420534092516,
62.59731727530786,
62.26007797009006,
61.87387172835703,
61.431185469892235,
60.9218174734771,
60.333864988358684,
59.65318990449716,
58.86278980415011,
57.94132811450767,
56.86919724828273,
55.622864888721956,
54.16976655126511,
52.467418830088356,
50.4640123689714,
48.088489514433235,
45.25466873587105,
41.849990082219435,
37.756351947189486,
32.81625172301533,
26.835553462701583,
19.575147742372977,
10.747796093421114,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06,
"rel": 0.0
}
},
{
"variable": "xabs",
"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.9683411106689638,
0.9899999736970134,
0.9899974091589665,
0.9897430164684567,
0.9624808996229417,
0.009991457786140693,
0.01360569594766083,
0.013148214774970694,
0.012908193903286843,
0.01272097472955856,
0.01252258267070415,
0.012273144618294063,
0.011926485915600032,
0.01127876658809754,
0.009358196670184876,
0.0030259688522694824,
0.0027902413178808707,
0.0035232203531773833,
0.004307572398728464,
0.005100592694768886,
0.0059085535849257975,
0.0067415651296466525,
0.0076126685923218656,
0.008539354175895866,
0.009543461228946965,
0.010599912574971308,
0.010576712326191265,
0.010494181794838338,
0.010432902967103716,
0.010398584778795426,
0.010395357921725726,
0.010428791152290095,
0.010505852510822042,
0.010635936221630088,
0.010831553334867655,
0.011104031462249355,
0.011121167869884756,
0.01101403820652991,
0.010642519585620751,
0.009266294875170238,
0.009864810744131971,
0.010243320180241223,
0.010351529240159437,
0.010417318375133539,
0.011175314026785722,
0.006995919106745502,
0.0032503917504332325,
0.0027074303918750817,
0.0038679635947094495,
0.0047793497817748805,
0.008104968841873098,
0.010090670460060928,
0.009855442665941178,
0.009578351228830134,
0.009300000224727501,
0.008843378439099927,
0.007689440213868938,
0.005318998769438919,
0.0026952913829865286
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09,
"rel": 0.0
}
},
{
"variable": "xabsc",
"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.0010313752886014797,
0.0,
0.0,
0.0,
0.0,
0.009168675570318996,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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.0460907006462071e-06,
2.9987623416294546e-05,
6.933995416551314e-06,
6.258051678876965e-06,
2.5409364251642473e-06,
8.211124641818724e-07,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09,
"rel": 0.0
}
},
{
"variable": "xalb",
"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.020627505772028744,
0.0,
0.0,
0.0,
0.0,
0.9425467920498473,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0001108856142684974,
0.003178688082127222,
0.0007350035141544392,
0.0006633534779609583,
0.0002693392610674102,
8.703792120327848e-05,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09,
"rel": 0.0
}
},
{
"variable": "xsca",
"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": [
8.270406024861968e-09,
2.6302986634660492e-08,
2.5908410336780515e-06,
0.00025698353154326444,
0.027519100377058254,
0.028293074593693162,
0.04253474833859229,
0.04360422985702079,
0.044704809038561194,
0.045834037783312756,
0.046991093734011544,
0.048176296224103354,
0.04938869740008661,
0.050626360159631574,
0.05186742134983534,
0.053039839675210344,
0.05437792589111822,
0.05577348584605635,
0.05720669239746779,
0.058677588920792986,
0.06018601972866541,
0.0617353494988054,
0.06332386937400097,
0.0649543913346089,
0.06662778527856628,
0.06834244394675779,
0.0700657305978072,
0.07182888610403551,
0.07363629334719383,
0.07548947849581875,
0.07738843387734227,
0.07933493992096409,
0.08133012117299604,
0.0833753757101477,
0.08547124498974652,
0.08761969287113199,
0.08981344341181233,
0.09205829910031489,
0.0943556621352843,
0.09669440176300984,
0.09913247958093462,
0.10162570297786618,
0.10417783966246065,
0.10679232918146558,
0.10947881423809692,
0.11219703509060938,
0.11500348732525321,
0.11790984642307056,
0.1209000603098168,
0.12396345989027159,
0.12711313283361428,
0.130327029869143,
0.1336137770931333,
0.13698639095832335,
0.140446244966416,
0.1439966220928703,
0.14763984028581895,
0.15137622305946233,
0.15520634730170596
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09,
"rel": 0.0
}
},
{
"variable": "tau",
"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.01,
0.01,
0.01,
0.01,
0.01,
0.01,
0.9438595557137469,
0.9432475553680086,
0.9423869970581521,
0.9414449874871288,
0.9404863235952843,
0.9395505591576025,
0.9386848166843135,
0.9380948732522708,
0.9387743819799798,
0.9439341914725202,
0.9428318327910009,
0.9407032938007663,
0.9384857352038037,
0.9362218183844382,
0.9339054266864087,
0.9315230853715479,
0.9290634620336772,
0.9265062544894953,
0.9238287534924868,
0.9210576434782709,
0.9193575570760015,
0.9176769321011261,
0.9159308036857026,
0.9141119367253857,
0.9122162082009321,
0.9102362689267457,
0.9081640263161819,
0.9059886880682222,
0.9036972016753857,
0.9012762756666186,
0.8990653887183029,
0.8969276626931552,
0.8950018182790949,
0.89403930336182,
0.8910027096749334,
0.8881309768418926,
0.8854706310973799,
0.882790352443401,
0.8793458717351175,
0.8808070458026451,
0.8817461209243135,
0.8793827231850544,
0.8752319760954737,
0.8712571903279536,
0.8647818983245125,
0.859470367965827,
0.8533221045353819,
0.8526933203032755,
0.8495841432792166,
0.8468881192705373,
0.8445828604666445,
0.8433047781710986,
0.8420983613153075
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09,
"rel": 0.0
}
},
{
"variable": "dTdt",
"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.577413514855101e-14,
4.934424891839913e-14,
4.8131436426422885e-12,
4.693867786440103e-10,
4.4559524293210696e-08,
8.659287194034338e-08,
6.35641524631454e-08,
6.352546429310049e-08,
6.454931382967302e-08,
6.590490182789121e-08,
6.72839245989174e-08,
6.845974060689465e-08,
6.91318120543223e-08,
6.798782613922711e-08,
5.865196026425616e-08,
1.9647421120978337e-08,
1.8742529065034273e-08,
2.452835475370075e-08,
3.1154047146486276e-08,
3.8414780131579196e-08,
4.64550170608871e-08,
5.5472823274887354e-08,
6.573210572942279e-08,
7.758472398340833e-08,
9.14995105863915e-08,
1.0757050370941973e-07,
1.1387857163010914e-07,
1.201037619400422e-07,
1.271621151017474e-07,
1.3524864588881193e-07,
1.445808316625068e-07,
1.5543995657064694e-07,
1.6819333361545651e-07,
1.8333443456878234e-07,
2.015365862979094e-07,
2.236166841650949e-07,
2.4302055940115266e-07,
2.6179429664523707e-07,
2.757586362223576e-07,
2.620600413203042e-07,
3.0541459238687104e-07,
3.4831899769244986e-07,
3.8778854985300584e-07,
4.3124504278933255e-07,
5.131899690673547e-07,
3.559025723008822e-07,
1.829569314129461e-07,
1.6902598189574346e-07,
2.6907845529017684e-07,
3.7217895922336245e-07,
7.117558199334979e-07,
1.0057029818150016e-06,
1.1260833386231272e-06,
1.248995724426519e-06,
1.3921688308650936e-06,
1.5240231675876317e-06,
1.5300166754924086e-06,
1.2239010195760909e-06,
7.183026923707021e-07
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-13,
"rel": 0.0
}
},
{
"variable": "dthdt",
"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.5919660052341203e-14,
4.988885622096356e-14,
4.875277420864446e-12,
4.763548083176139e-10,
4.531018861959195e-08,
8.823086739652597e-08,
6.490262567376283e-08,
6.500389743550918e-08,
6.61996959446314e-08,
6.774658209482589e-08,
6.932984994114713e-08,
7.071618897971434e-08,
7.159340813041983e-08,
7.059536930985775e-08,
6.106851630255754e-08,
2.05149756396543e-08,
1.9627596262003972e-08,
2.57648036966672e-08,
3.2827729079898624e-08,
4.0610978671477565e-08,
4.9277628044915914e-08,
5.905075978448965e-08,
7.022790191654519e-08,
8.320650398049141e-08,
9.851763143691948e-08,
1.162977556350222e-07,
1.2364467258288686e-07,
1.3098492706443528e-07,
1.393266344574203e-07,
1.4890397750982745e-07,
1.599820712319308e-07,
1.729045437938718e-07,
1.8812117206114157e-07,
2.0623709000542896e-07,
2.2807958584277416e-07,
2.5466572390141525e-07,
2.785967026901943e-07,
3.0220535269578715e-07,
3.2065152734836573e-07,
3.0706638531377327e-07,
3.6076741029857906e-07,
4.149684784965567e-07,
4.6617044589632473e-07,
5.233792957382614e-07,
6.291673847547905e-07,
4.4105510785678996e-07,
2.2934619110814395e-07,
2.144959242597347e-07,
3.4597929876685437e-07,
4.853543784189851e-07,
9.424570273296948e-07,
1.3538783809458603e-06,
1.543475283666809e-06,
1.7460383805991955e-06,
1.9889552492756573e-06,
2.2305521268452614e-06,
2.300793379188728e-06,
1.8978772204055026e-06,
1.1539348177670324e-06
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-13,
"rel": 0.0
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 1
},
"expected": 1e-09,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 2
},
"expected": 1e-09,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 3
},
"expected": 3.1400852192451504e-09,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 6
},
"expected": 0.00314008521924515,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 7
},
"expected": 0.314008521924515,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 8
},
"expected": 0.3326856416546651,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 1.577413514855101e-14,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 10
},
"expected": 6.590490182789121e-08,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 30
},
"expected": 1.3524864588881193e-07,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 7.183026923707021e-07,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 1.5919660052341203e-14,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 30
},
"expected": 1.4890397750982745e-07,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 1.1539348177670324e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 0.01,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 20
},
"expected": 0.9362218183844382,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 0.8420983613153075,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "n_renorm",
"time": 0.0,
"expected": 6.0,
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "n_floor",
"time": 0.0,
"expected": 2.0,
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
}
]
},
{
"id": "synthetic_stratus_call120_icloud3",
"description": "Reference: WRF 4.8 em_scm_xy single-column run (GNU real32 build, dt = 60 s, 59 layers, mp=6 ra_lw=1 ra_sw=1 sf_sfclay=1 sf_surface=1 bl_pbl=1, swrad_scat = 1, icloud = 1) dumped by the instrumented fork ctessum-claude/WRF, commit e42a269 (v4.8.0-2-ge42a269e; module_esm_dump, SWRAD/SWPARA hooks) and replayed through the real64 (-fdefault-real-8) standalone kernels/sw_driver of that commit; inputs are the dumped SWRAD arguments (single-precision values widened) of tile column 1, and every expected value is the real64 replay (the same inputs through the same Fortran in binary64, so the scheme's constants and literals are exact and the only residual is evaluation-order roundoff). The scheme is diagnostic (no time step), so no small-dt replay is involved. Column assertions are Linf_error of the whole field against the inline reference (WRF's top-down arrays reversed onto lev/lev_nodes, the top-of-atmosphere interface appended as 0 for the cumulative fields, per-cent quantities divided by 100, g/m^2 paths converted to kg/m^2); spot checks use a relative tolerance. Tolerances: measured Linf mismatch between this component and the real64 replay over all six regimes is at binary64 roundoff -- S and the cumulative depletions <= 1.2e-12 W/m^2 (1e-15 relative), U <= 4e-15 kg/m^2, W <= 1e-16 kg/m^2, the dimensionless absorptances/reflectances and layer fractions <= 4e-15, heating rates <= 1.3e-18 K/s -- so the column tolerances are set at about 1e-9 of each field's column maximum (S, D_*: abs 1e-6 W/m^2; U: 1e-8 kg/m^2; W: 1e-12 kg/m^2; rho: 1e-9 kg/m^3; m_air: 1e-7 kg/m^2; fractions: abs 1e-9; dT/dt, dtheta/dt: 1e-13 K/s), i.e. the 1e-9 relative contract for double-precision references, roughly a million times the measured error; scalar spot checks use rel 1e-9. Regime: SYNTHETIC -- the synthetic_stratus_call120 column with namelist icloud = 3, replayed through the real64 sw_driver. SWPARA tests only ICLOUD.EQ.0, so any non-zero icloud gives the full liquid water path and the driver output is identical, bit for bit, to the icloud = 1 regime (gsw = 41.71 W/m^2): this pins icloud as a switch, not a weight on the path.",
"parameter_overrides": {
"csza": 0.5617246031761169,
"albedo": 0.20000000298023224,
"solcon": 1384.34814453125,
"obscur": 0.0,
"cssca": 9.999999747378752e-06,
"icloud": 3.0
},
"expression_template_imports": [
{
"ref": "./tests/synthetic_stratus_call120_icloud3_inputs.esm"
}
],
"time_span": {
"start": 0,
"end": 1
},
"assertions": [
{
"variable": "daylight",
"time": 0.0,
"expected": 1.0,
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "S_toa",
"time": 0.0,
"expected": 777.6224121444102,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "gsw",
"time": 0.0,
"expected": 41.70741612221927,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "rho",
"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.1882461455048003,
1.1833917601194026,
1.1780775474208702,
1.1725343400583939,
1.1668039528757117,
1.1608981426718805,
1.1548200123941375,
1.1485687612602415,
1.1421425608669449,
1.1355383023014927,
1.1287535535137803,
1.1217869701359786,
1.114645810179855,
1.1074133193610034,
1.0927540538207259,
1.071260767973995,
1.0606674681425088,
1.0499866438555263,
1.039091855556952,
1.0279625942791653,
1.01658613071161,
1.0049549719278756,
0.9930611172322815,
0.9808991863203149,
0.9684662522976394,
0.9557531867235668,
0.9428617409676621,
0.9296782046639335,
0.9161953299864448,
0.9024068961156496,
0.888300422877125,
0.873872634171112,
0.859114617397605,
0.8440173364448315,
0.8285745486494659,
0.8127820667284728,
0.7973383101753023,
0.7817139048046132,
0.766031659652959,
0.7514621566591547,
0.7364247639976375,
0.720890028503199,
0.704828672635759,
0.6882205064401412,
0.671035525000523,
0.6532358272278359,
0.6347615718009271,
0.6155804737790096,
0.5956690380589317,
0.5749817307816427,
0.5535838798090931,
0.5306443061147867,
0.5070629550241419,
0.48325956629626343,
0.45789663016355947,
0.4310167572831105,
0.4027497395886416,
0.3729621923440745,
0.34141283116931365
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09,
"rel": 0.0
}
},
{
"variable": "m_air",
"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": [
60.99308477644407,
62.518327025647004,
64.09230087128896,
65.710068946424,
67.3695218549805,
69.07110125419246,
70.81691963760801,
72.60627931536509,
74.44153248664655,
76.32281171308841,
78.25099166337174,
80.22728187097789,
82.25111852564723,
84.3219135064156,
86.4039376463457,
88.36044414044098,
90.6277685139275,
92.95586103064815,
95.3444151256693,
97.79585886402121,
100.31007285113621,
102.89195658934653,
105.53989772085423,
108.25716859648836,
111.04614690499214,
113.90694946629472,
116.77605079458885,
119.71490754457008,
122.72700388159001,
125.81548178355771,
128.9807442872736,
132.22465274085025,
135.5500807784695,
138.9587175474322,
142.4519105794684,
146.03288729674927,
149.68878263768343,
153.43024778191307,
157.26259674167898,
161.20661192256657,
165.2442959820773,
169.3824049198503,
173.6249760052356,
177.9691855420861,
182.42009004001034,
186.98333317626154,
191.66638058215943,
196.5162512674653,
201.48970578779347,
206.59110432152318,
211.83016907116777,
217.20867527855208,
222.6919977196627,
228.30994135209096,
234.07684677254719,
239.99383450549382,
246.0659317181276,
252.29362584334604,
258.6778997082085
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-07,
"rel": 0.0
}
},
{
"variable": "W",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "faq",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.26603359321116576,
0.26603359321116576,
0.26603359321116576,
0.26603359321116576,
0.26603359321116576,
0.26603359321116576,
0.26603359321116576,
0.26603359321116576,
0.26603359321116576,
0.26603359321116576,
0.26603359321116576,
0.24255829571215423,
0.21849011115086087,
0.1938147755931667,
0.168518201541242,
0.14259702024733828,
0.116088887005206,
0.08890055645102775,
0.0610137981418333,
0.03241047360413252,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.0030717159449261578,
0.002997985434091424,
0.0021324950417247693,
0.001098682913044643,
0.0004636966184857311,
0.00014627035408090532,
3.242280484117975e-05,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-12,
"rel": 0.0
}
},
{
"variable": "U",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "faq",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
10.135266425135013,
9.938266250464014,
9.748262015406992,
9.558539152799575,
9.367298554268983,
9.173749243995234,
8.977465852017167,
8.77819955433473,
8.575819023231645,
8.370279533970228,
8.161633519637014,
7.950063691332471,
7.735983563609426,
7.520375523274632,
7.306877507317923,
7.121521081385254,
7.075256393779865,
7.008624900329904,
6.919209603419082,
6.8053336623854275,
6.665221527307166,
6.496994228569019,
6.298656529838755,
6.0681014793614745,
5.803094154920062,
5.501269567017426,
5.160227203116742,
4.819887975843153,
4.481673589023628,
4.146185668211795,
3.8140657710912826,
3.4860052996131565,
3.1627425623435754,
2.8450656368601477,
2.533816478225719,
2.2298960807620603,
1.934271176826828,
1.6568175946278345,
1.4019052646143306,
1.173452398159749,
0.9617905398768669,
0.7714924322705835,
0.6046561579327767,
0.4633167513622003,
0.34962982259888287,
0.26587006607515923,
0.21423100381747587,
0.19291516786620616,
0.17326308997538048,
0.15311410817736246,
0.1322170664545722,
0.1053088045083876,
0.0669868653030319,
0.038632287091019304,
0.02104175258308007,
0.010605521084507423,
0.004780489879454269,
0.0018244372202235472,
0.0005088791576718286,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-08,
"rel": 0.0
}
},
{
"variable": "A_vap",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "faq",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.11747577353357176,
0.11683296162447797,
0.11620306543613844,
0.11556405103334862,
0.11490940121570245,
0.11423570064404995,
0.11354060111350947,
0.11282222353913346,
0.1120789782297004,
0.1113094726745832,
0.11051256963493652,
0.10968754303373614,
0.1088345280181847,
0.10795601482192256,
0.10706593459294275,
0.10627609848980782,
0.10607639097654553,
0.1057869220233543,
0.10539499162992837,
0.10488993555074291,
0.1042591655737956,
0.10348768189635223,
0.10255737654821023,
0.10144616632623575,
0.10012665309574566,
0.09856426585231785,
0.09671500652668472,
0.09477074570783037,
0.09272845344816322,
0.09057941107119259,
0.08831346616614245,
0.08591871171656723,
0.0833809434459319,
0.08068294125183507,
0.0778034366482043,
0.07471557322809728,
0.07138452070704292,
0.06788226525617123,
0.06424424620741492,
0.06052618779607888,
0.05655100860201262,
0.052359288095987326,
0.04797389823542091,
0.043459372691290396,
0.038977165849098695,
0.03488251242865872,
0.031826017884192606,
0.030394980442163454,
0.02896254585096872,
0.027356964513718527,
0.025509894366202653,
0.022771141423362323,
0.01778925662756073,
0.012619804370765186,
0.008154037867564032,
0.004666049730382505,
0.0022853728898061423,
0.0009136932605246258,
0.00026046260337021175,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09,
"rel": 0.0
}
},
{
"variable": "R_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "faq",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.7738241051796044,
0.7738241051796044,
0.7738241051796044,
0.7738241051796044,
0.7738241051796044,
0.7738241051796044,
0.7738241051796044,
0.7738241051796044,
0.7738241051796044,
0.7738241051796044,
0.7738241051796044,
0.7687237762676624,
0.7629555760428797,
0.7563427553030578,
0.7486280466218609,
0.739419815216094,
0.7280894051331209,
0.7134061293618146,
0.6927366625148342,
0.6139579469977401,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.29929485709324594,
0.2960082634715171,
0.25134938498407466,
0.17374988267006658,
0.09648478896722949,
0.03710081866701993,
0.008996166525229282,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09,
"rel": 0.0
}
},
{
"variable": "A_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "faq",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
0.09482827120868588,
0.09482827120868588,
0.09482827120868588,
0.09482827120868588,
0.09482827120868588,
0.09482827120868588,
0.09482827120868588,
0.09482827120868588,
0.09482827120868588,
0.09482827120868588,
0.09482827120868588,
0.09357789844688522,
0.09216379348028322,
0.09054262530181856,
0.08865132343349984,
0.0863938765250916,
0.08361616622593622,
0.0800164830691379,
0.0749492533291316,
0.06619094731733624,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03343270400871434,
0.03306557537570226,
0.02807695953267548,
0.019408714387121585,
0.010777824324190315,
0.004144343477940278,
0.001004915939993551,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09,
"rel": 0.0
}
},
{
"variable": "S",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "faq",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
52.13427034698938,
52.2607574037043,
52.38743992833878,
52.516766024677075,
52.649498393912495,
52.7860628995831,
52.92677152555977,
53.071888817900664,
53.2216487386199,
53.376267583468724,
53.53593553984054,
57.89595947703327,
62.821836554210286,
68.46121002044386,
75.02720156136355,
82.83062333723409,
92.31882237750948,
104.60731511718656,
121.88102519641161,
180.17328306429314,
411.2022656204223,
412.29834750118346,
413.49034236994044,
414.78964707282506,
416.21028547584154,
417.7698064594325,
419.490370832286,
421.282479824281,
423.14864990134254,
425.0941632972141,
427.1250749140547,
429.24835603628344,
431.47217861060193,
433.80628523913805,
436.26249918257105,
438.8554934999388,
441.6039991649984,
444.4753027834594,
447.45418492793266,
450.51550340839214,
453.7473860785774,
457.1325963662525,
460.6624928956342,
464.3079691909315,
467.99184763708195,
471.54027913953234,
474.6307162633209,
476.9677267857017,
479.35737318464936,
481.88745315469083,
484.5951056287182,
490.52855126168333,
532.2109397453206,
602.3769069306296,
672.9784816935509,
728.7682711821238,
757.7288379337921,
769.8576118063417,
773.8388679720447,
777.6224121444102
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06,
"rel": 0.0
}
},
{
"variable": "D_vap",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "faq",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
56.30319658655554,
56.23345521461673,
56.16507839708889,
56.095673483920756,
56.024530051016406,
55.951273645226195,
55.87564513648274,
55.7974358551002,
55.716468110733445,
55.632585192965024,
55.54565773971105,
55.45214254035113,
55.351339047127794,
55.24266356175709,
55.1268160439643,
55.017938273239125,
54.98851989022956,
54.94233521996444,
54.8730599218444,
54.75440826317046,
54.46068205639913,
54.100862678572966,
53.66626438888537,
53.146289193277276,
52.527783110143695,
51.794142386493235,
50.924223810436246,
50.007912366597026,
49.043557875579076,
48.026800874141635,
46.95256705671978,
45.814907193271075,
44.606729246592366,
43.31944298498364,
41.94244963338906,
40.46238150057156,
38.86192427501599,
37.175061660727,
35.41836213638554,
33.61832428611367,
31.68862913837282,
29.648180175404242,
27.507365030222047,
25.297030751448155,
23.09587400538595,
21.078769731950448,
19.568253277667644,
18.858707086049378,
18.146065950593712,
17.344508430114345,
16.41910004732874,
15.034487786344652,
12.321688962566952,
9.160376174305531,
6.127646773677961,
3.573248241562648,
1.7651385212588595,
0.7081691365181356,
0.20254155790615683,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06,
"rel": 0.0
}
},
{
"variable": "D_cld",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "faq",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
605.4071168986293,
605.4071168986293,
605.4071168986293,
605.4071168986293,
605.4071168986293,
605.4071168986293,
605.4071168986293,
605.4071168986293,
605.4071168986293,
605.4071168986293,
605.4071168986293,
601.221260069264,
596.4859106140572,
591.05545768078,
584.7179389015021,
577.1508041604832,
567.8372429202699,
555.7637066519542,
538.7609642177779,
480.8931754102639,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
250.87381929902833,
248.17480241604426,
211.26317549480927,
146.64660437980623,
81.81304376267846,
31.614510612915417,
7.69940946215473,
0.0,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06,
"rel": 0.0
}
},
{
"variable": "D_sca",
"time": 0.0,
"reduce": "Linf_error",
"expected": 0.0,
"reference": {
"op": "faq",
"output_idx": [
"k"
],
"args": [],
"ranges": {
"k": {
"from": "lev_nodes"
}
},
"expr": {
"op": "index",
"args": [
{
"op": "const",
"args": [],
"value": [
63.77782831223666,
63.72108262746056,
63.66277692035391,
63.60285573718375,
63.54126680085267,
63.477958700972266,
63.41287858373905,
63.34597057278069,
63.27717839642821,
63.2064424693478,
63.13370196622996,
63.05305005776242,
62.96332592901556,
62.86308088142978,
62.75045563758083,
62.623046373454365,
62.47782695640188,
62.309055155305636,
62.10736280837687,
61.80154540668323,
61.08564516856095,
60.34938266562591,
59.59198608655654,
58.81265657927994,
58.01052425939703,
57.184643999456455,
56.33399820265997,
55.45820065450418,
54.556385068460536,
53.6276286740264,
52.67095087460764,
51.68532961582759,
50.669684988187846,
49.62286462126044,
48.54364402942198,
47.43071784487174,
46.28266940536774,
45.09822840119567,
43.87604578106391,
42.614765150876295,
41.31257762843189,
39.967816303725364,
38.57873491952586,
37.143592903002464,
35.66087120291415,
34.12954397389927,
32.54962330439348,
30.922158973630964,
29.245153710138858,
27.516631260576677,
25.734387169334948,
23.884570680338058,
21.826607941713494,
19.438524659668975,
16.70323991450295,
13.66638210780834,
10.429026227204627,
7.056631201550438,
3.5810026144592544,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-06,
"rel": 0.0
}
},
{
"variable": "xabs",
"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.001334488350409309,
0.0013052139524545692,
0.0013215762969014373,
0.001351265160630142,
0.0013877982513976561,
0.001428927300183644,
0.0014736479730520738,
0.001521331005065219,
0.0015715395917716242,
0.0016237215690251027,
0.001615228423617601,
0.0016045932235099773,
0.0015874023456239567,
0.0015440735544166861,
0.001314462771599458,
0.00031866072651218626,
0.00044150516828946496,
0.0005683846030044523,
0.00065854191396179,
0.0007143107694899349,
0.0008727160319873169,
0.0010510482232708985,
0.0012535876902366359,
0.0014860422837135302,
0.0017560884302961226,
0.0020737510001267293,
0.002175052340703608,
0.002278996970078456,
0.0023918394775196083,
0.002515033371988321,
0.002650353454941448,
0.0028001294326072236,
0.002967421877945135,
0.003156341317841117,
0.003372563759003527,
0.003624190968790543,
0.003795177378192357,
0.003925987472045663,
0.003995507006204264,
0.004252796174580447,
0.0044635822936017,
0.004647252984990054,
0.004760491797341872,
0.004703408311866906,
0.004277692410744467,
0.0031825088485103094,
0.0014876188718258106,
0.0014866593804976397,
0.0016633708041824849,
0.0019096527637953976,
0.0028226945351554782,
0.005097224842983981,
0.005248064379442557,
0.004506428486384444,
0.0035050902092264016,
0.002386222656160508,
0.0013729413966054357,
0.0006534016311910619,
0.00026046260337021175
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09,
"rel": 0.0
}
},
{
"variable": "xabsc",
"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.014234883152448747,
0.014840864433902567,
0.015617419477759766,
0.01663099770222766,
0.017986983232587173,
0.019862929946496584,
0.022724285023825487,
0.027466332276593466,
0.03213474405851803,
0.05274399314383058,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0005528712890199714,
0.0069688660513856715,
0.010778499874614423,
0.009680135180921541,
0.006921246188001494,
0.0031713277862695016,
0.001004915939993551,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09,
"rel": 0.0
}
},
{
"variable": "xalb",
"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.05806475342280763,
0.06053657938088594,
0.06370418368489897,
0.06783861661618196,
0.07336974494523052,
0.08102181923421106,
0.09269342027518078,
0.1120364525644126,
0.2890437782136459,
0.5066385184388382,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.004949391272541362,
0.06238639173211334,
0.09649083660153362,
0.08665810204469387,
0.061960091179138234,
0.028390228213068504,
0.008996166525229282,
0.0,
0.0
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09,
"rel": 0.0
}
},
{
"variable": "xsca",
"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.0010858182620230726,
0.0011129711088460178,
0.0011409914910222735,
0.0011697915119777303,
0.001199333619573735,
0.0012296256763326048,
0.0012607052895352527,
0.0012925600386852207,
0.0013252317983792439,
0.0013587229285216586,
0.001393049000242054,
0.0014282315460395225,
0.0014642605287847983,
0.0015011254785617344,
0.0015381903333956072,
0.0015730206832433305,
0.0016133843116724418,
0.0016548297538828156,
0.001697351552308161,
0.0017409929321331183,
0.001785751767857683,
0.0018317152819780885,
0.001878854770788851,
0.0019272284897184837,
0.001976878767136969,
0.002027807682709778,
0.0020788843355676375,
0.002131202796591465,
0.0021848250919991596,
0.0022398071562791154,
0.002296156164420428,
0.0023539052527332205,
0.002413105578565651,
0.0024737872126543146,
0.0025359741441869452,
0.002599723828757821,
0.0026648072384555135,
0.0027314139889620284,
0.0027996386820106087,
0.0028698512925844208,
0.0029417314262776984,
0.003015399355541216,
0.0030909269531258776,
0.003168263950696278,
0.0032475003658420367,
0.003328736669097624,
0.0034121057660023205,
0.003498444703897609,
0.0035869837204649292,
0.003677800436984253,
0.0037710679311917677,
0.0038668178065061217,
0.003964433653695053,
0.004064446070077421,
0.004167110351509364,
0.004272446445923156,
0.004380543848545485,
0.004491411236811567,
0.00460506610732078
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09,
"rel": 0.0
}
},
{
"variable": "tau",
"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.9975796933875675,
0.9975818149386995,
0.9975374322120762,
0.9974789433273922,
0.9974128681290285,
0.9973414470234837,
0.9972656467374128,
0.9971861089562496,
0.9971032286098491,
0.9970175555024532,
0.9246920860008839,
0.921589731415662,
0.9176267339629325,
0.9124851866486121,
0.9057906187171872,
0.8972235694095368,
0.8825274052210318,
0.8582740008021067,
0.6764655842615661,
0.43816218471570806,
0.997341532200155,
0.997117236494751,
0.9968675575389746,
0.9965867292265679,
0.9962670328025669,
0.9958984413171634,
0.9957460633237288,
0.9955898002333301,
0.9954233354304813,
0.9952451594717325,
0.9950534903806382,
0.9948459653146595,
0.9946194725434893,
0.9943698714695046,
0.9940914620968095,
0.9937760852024516,
0.9935400153833521,
0.9933425985389923,
0.9932048543117851,
0.9928773525328352,
0.9925946862801206,
0.9923373476594688,
0.9921485812495322,
0.9921283277374369,
0.9924748072234135,
0.9934887544823922,
0.9951002753621718,
0.9950148959156049,
0.9947496454753526,
0.9944125467992202,
0.9879039749720913,
0.9216806995670107,
0.8835181654907143,
0.8950908882179229,
0.9234464620721244,
0.9617797748985782,
0.9842454322896264,
0.9948551871319974,
0.9951344712893089
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-09,
"rel": 0.0
}
},
{
"variable": "dTdt",
"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.1383084157102531e-06,
1.0888087304171463e-06,
1.078038848237523e-06,
1.0778366663202976e-06,
1.0825107074051935e-06,
1.0900319193342369e-06,
1.0994394652832289e-06,
1.1101659874166734e-06,
1.1217815226054927e-06,
1.1338422965180642e-06,
1.167456717202194e-05,
1.2819898093601136e-05,
1.4256174298475948e-05,
1.609920667719207e-05,
1.84203254879907e-05,
2.0991226664602932e-05,
2.6619380641530587e-05,
3.659363518085067e-05,
6.169218161329374e-05,
0.00022376917891923912,
3.571001736368824e-06,
4.20490943039191e-06,
4.904740299485903e-06,
5.687709020857938e-06,
6.577032615909098e-06,
7.602885367902371e-06,
7.811589005766712e-06,
8.019338244455979e-06,
8.247590668798008e-06,
8.499919134490767e-06,
8.780871398509457e-06,
9.096378602539358e-06,
9.45421365181053e-06,
9.864977634407547e-06,
1.0343404011492928e-05,
1.0910469974296953e-05,
1.1218647843042382e-05,
1.1398207430199707e-05,
1.1394788109482905e-05,
1.1916697447681552e-05,
1.229275760806951e-05,
1.2582325982065201e-05,
1.267347811300953e-05,
1.231278273130599e-05,
1.1007932115048061e-05,
8.042158387186452e-06,
3.6854013497470556e-06,
3.6101269595002623e-06,
3.96033468480368e-06,
4.459353192666861e-06,
7.781675524595763e-06,
2.9432237674877496e-05,
4.315729247547336e-05,
4.162973303920195e-05,
3.231564210235598e-05,
1.7468161701531752e-05,
7.406188696647129e-06,
1.995145322895855e-06,
7.794798249701869e-07
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-13,
"rel": 0.0
}
},
{
"variable": "dthdt",
"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.148842267313846e-06,
1.1008531967213394e-06,
1.0919787271742363e-06,
1.093856499341685e-06,
1.1007631822328457e-06,
1.1106647825847896e-06,
1.1226026409509483e-06,
1.1360137768885988e-06,
1.1504724001829738e-06,
1.165535106308309e-06,
1.2029628445618058e-05,
1.3242502692547022e-05,
1.4763845336764756e-05,
1.6716690992954208e-05,
1.9179293055125465e-05,
2.1918121193697485e-05,
2.787640297108234e-05,
3.843826796664699e-05,
6.500643244339465e-05,
0.00023656212232788461,
3.787974683686243e-06,
4.476119507691328e-06,
5.2402009851359334e-06,
6.0998366298018745e-06,
7.081495627321185e-06,
8.219707775835243e-06,
8.481499535950388e-06,
8.745871708588325e-06,
9.036564657053636e-06,
9.35810738833429e-06,
9.716236978290691e-06,
1.0118406526551217e-05,
1.0574361789601415e-05,
1.1097332553733299e-05,
1.170565797346569e-05,
1.2425377835481264e-05,
1.2860957212953153e-05,
1.315765056246031e-05,
1.3249828697153345e-05,
1.3963283853145312e-05,
1.452070049077663e-05,
1.4989937950364068e-05,
1.52351453256777e-05,
1.4943402246317868e-05,
1.349566411935847e-05,
9.966310543747809e-06,
4.619844497174959e-06,
4.581291096966731e-06,
5.0921686411411565e-06,
5.815384915167537e-06,
1.0303927423746582e-05,
3.9621593956060915e-05,
5.915378750055176e-05,
5.819637765480245e-05,
4.6168482429467186e-05,
2.5566296542424814e-05,
1.1137201366417275e-05,
3.093828748563421e-06,
1.2522144291824598e-06
]
},
"k"
]
}
},
"tolerance": {
"abs": 1e-13,
"rel": 0.0
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 1
},
"expected": 52.13427034698938,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 30
},
"expected": 425.0941632972141,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "S",
"time": 0.0,
"coords": {
"lev_nodes": 60
},
"expected": 777.6224121444102,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 1.1383084157102531e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 10
},
"expected": 1.1338422965180642e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 30
},
"expected": 8.499919134490767e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dTdt",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 7.794798249701869e-07,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 1.148842267313846e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 30
},
"expected": 9.35810738833429e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "dthdt",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 1.2522144291824598e-06,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 1
},
"expected": 0.9975796933875675,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 20
},
"expected": 0.43816218471570806,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "tau",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 0.9951344712893089,
"tolerance": {
"rel": 1e-09
}
},
{
"variable": "n_renorm",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "n_floor",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
}
]
},
{
"id": "synthetic_eclipse_call120",
"description": "Reference: WRF 4.8 em_scm_xy single-column run (GNU real32 build, dt = 60 s, 59 layers, mp=6 ra_lw=1 ra_sw=1 sf_sfclay=1 sf_surface=1 bl_pbl=1, swrad_scat = 1, icloud = 1) dumped by the instrumented fork ctessum-claude/WRF, commit e42a269 (v4.8.0-2-ge42a269e; module_esm_dump, SWRAD/SWPARA hooks) and replayed through the real64 (-fdefault-real-8) standalone kernels/sw_driver of that commit; inputs are the dumped SWRAD arguments (single-precision values widened) of tile column 1, and every expected value is the real64 replay (the same inputs through the same Fortran in binary64, so the scheme's constants and literals are exact and the only residual is evaluation-order roundoff). The scheme is diagnostic (no time step), so no small-dt replay is involved. Regime: SYNTHETIC -- the scm_call120_noon_ice_cloud column (cos zenith 0.562) with obscur = 1, a total eclipse: soltop = 0, so SWPARA returns before computing (SOLTOP .LE. 1.E-9) and WRF's heating and surface flux are exactly zero. Here daylight = 0 masks gsw, dT/dt and dtheta/dt, which must be exactly 0 (absolute tolerance 0). The beam at the top of the atmosphere is 0, so the top layer's fractions divide 0 by the floored S_top and must be 0, not 0/0 = NaN.",
"parameter_overrides": {
"csza": 0.5617246031761169,
"albedo": 0.20000000298023224,
"solcon": 1384.34814453125,
"obscur": 1.0,
"cssca": 9.999999747378752e-06,
"icloud": 1.0
},
"expression_template_imports": [
{
"ref": "./tests/synthetic_eclipse_call120_inputs.esm"
}
],
"time_span": {
"start": 0,
"end": 1
},
"assertions": [
{
"variable": "daylight",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "gsw",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "dTdt",
"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,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": "dthdt",
"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,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
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": "n_renorm",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "n_floor",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "xabs",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 0.0,
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "xabsc",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 0.0,
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "xalb",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 0.0,
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
},
{
"variable": "xsca",
"time": 0.0,
"coords": {
"lev": 59
},
"expected": 0.0,
"tolerance": {
"abs": 0.0,
"rel": 0.0
}
}
]
}
]
}