Surface-Energy-Balance
- SlabLandSurface
model
land_surface
slab
WRF's 5-layer slab (thermal diffusion) land-surface scheme, SUBROUTINE SLAB1D of phys/module_sf_slab.F (sf_surface_physics = 1), written as instantaneous tendencies. Surface energy balance: net radiation gsw + emiss (glw - sigma tsk^4), sensible and latent heat fluxes from consumer-supplied bulk exchange coefficients (the surface-layer scheme's FLHC, FLQC), the latent flux driven by the saturation deficit at the skin temperature, and the residual G = rnet - (hfx + lh) conducted into the soil. Soil: the heat equation capg dT/dt = d/dz( capg difsl dT/dz ) on a column of NLEV prognostic layers, written as the flux-form operator D(K_soil D(T_s) - F_soil) and lowered by the EarthSciDiscretizations column_nonuniform_1d rule varcoeff_face_flux_laplacian_lev, with the surface heat flux G entering through the prescribed interface flux F_soil[1] and the deepest WRF soil layer -- which SLAB1D never updates -- acting as a fixed reservoir at temperature T_deep and depth z_deep that closes the bottom boundary through F_soil[NLEV+1]. Orientation: `lev` is the soil layer index with layer 1 at the surface and `ze` the interface DEPTH below ground (positive downward, ze[1] = 0, increasing with the index, the grid's required orientation); the grid-derived zc reproduce WRF's ZS and dz its DZS, and the lowered stencil is exactly SLAB1D's FLUX(L+1) = -DIFSL CAPG (T(L+1)-T(L))/(ZS(L+1)-ZS(L)), DTSDT = -(FLUX(L+1)-FLUX(L))/(DZS(L) CAPG). NLEV = num_soil_layers - 1 (4 for WRF's default 5 layers). The skin temperature follows layer 1: SLAB1D advances TSK by the layer-1 tendency (DTHGDT), so dTsk_dt = dTs_dt[1]; the surface fluxes themselves are evaluated at the consumer-supplied tsk. Water points (xland >= 1.5) are frozen (tendencies multiplied by the land indicator). Not expressible as a rate and therefore reported as the indicator snow_cap_active only: with IFSNOW = 1 SLAB1D caps the layer-1 and skin temperatures at 273.16 K wherever snow covers a land point, a projection of the state applied after each step. The one-layer force-restore form (num_soil_layers = 1: dTg/dt = (rnet - qs)/capg - hm) is not transcribed; hm is computed as WRF does but does not enter the multi-layer tendency. Consumer-supplied column fields (ze, T_s) are rewrite-target ops `input_<name>` lowered by the consumer, in the inline tests through per-test expression_template_imports libraries under tests/ (esm-spec 6.6 parameter_overrides admit scalars only). Test provenance: every inline-test input and expected value comes from a WRF v4.8.0 em_scm_xy single-column run of the instrumented fork ctessum-claude/WRF, commit e42a269 (v4.8.0-2-ge42a269e, branch earthsciml-instrumented), whose module_esm_dump hooks in phys/module_sf_slab.F dump SLAB1D's arguments; the dumps and the standalone replay driver are not part of this repository, so the values are recorded data rather than regenerable output.