Longwave
- RRTMColumn
model
atmospheric_radiation
rrtm_lw
The RRTM radiation column that WRF builds from a model column (SUBROUTINE MM5ATM and the column-amount part of SETCOEF in phys/module_ra_rrtm.F, WRF 4.8): the NLEV model layers plus NBUF buffer layers above the model top, on the index sets `rlay` (RRTM layers, 1 = lowest, NLEV + NBUF members) and `rlev` (RRTM levels, 1 = surface, NLEV + NBUF + 1 members). MM5ATM: (1) the model part is a plain copy in the bottom-up order shared by this grid (PZ(L) = Pw(kte+1-L) undoes the top-down order of the wrapper's 1-D arrays): pz = p_e/100 hPa, tz = T_e, pavel = p/100, tavel = T for the model layers; (2) the buffer part continues the column to p = 0 in steps of deltap = 4 hPa (pz[j] = p_top - deltap (j - NLEV - 1) for the NBUF - 1 full buffer levels, then pz[NLEV+NBUF+1] = 0, so the top buffer layer is thinner) with layer pressures the level means; (3) buffer temperatures follow the MM5 standard atmosphere T_std(p) (the 60-point PPROF/TPROF table, linear in pressure, clamped to its 0.10 hPa end; template standard_atmosphere_temperature) shifted so that it is continuous at the model top, tz = T_std(pz) + (T_e[top] - T_std(p_top)), and tavel the level means; (4) the dry-air column of every layer coldry = (dp/g)(N_A/amm)/(1 + w) in molecules/cm^2 with w the water-vapour volume mixing ratio (qv amdw, floored at 1e-12 kg/kg, in the model layers; the constant 5e-6 above the model top) and amm = (1 - w) amd + w amw the moist molecular weight; (5) the scaled molecular column amounts of SETCOEF, col_x = 1e-20 coldry vmr_x for H2O, CO2 (co2vmr), N2O (n2ovmr) and CH4 (ch4vmr), all uniform above the model top except H2O (the O2 column COLO2 is identically 0, because MM5ATM never fills WKL(7), and RRTM's longwave bands do not read it); (6) the longwave cloud optical depth of the model layers, taucloud = abcw CLWP + abice CIWP + abrn PLWP + absn PIWP with the paths in g/m^2 (CLWP = rho qc dz, the ice path likewise, and the (rho q)^0.75 rain and snow paths), 0 above the model top, and the layer cloud fraction cldfrac = cldfra forced to 1 where taucloud > 0.01 and 0 above the model top; (7) the surface boundary temperature tbound = tsk capped at 339.99 K (the Planck table limit) and the 16-band surface emissivity semiss = emiss. NOT in this component: the ozone column colo3, which MM5ATM takes from the O3DATA annual-mean climatology (31-bin layer-mean average of the summer/winter tables, INIRAD) evaluated on the EXTENDED column PZR -- a pressure-weighted mean of a piecewise-constant profile that will be written as an `integral` over pressure in the next pass (the dumped o3prof is the same climatology on the model column only and is not what colo3 uses; they differ by 33 %); the 1e-32 floors of SETCOEF on zero CO2/N2O/CH4 columns (never active with the WRF trace-gas inputs); and the cross-section species WX (all zero in WRF). NBUF is a metaparameter because RRTMINIT fixes it once from the model top, NLAYERS = kme + nint(p_top/(100 deltap)) - 1, i.e. NBUF = nint(p_top/(100 deltap)); 44 for the reference column with p_top = 177.6 hPa. Inputs are REWRITE-TARGET ops `input_<name>` that the consumer lowers (in the inline tests through a per-test expression_template_imports library extracted from the WRF dumps). Ozone (added 2026-09-06): the annual-mean O3DATA climatology of MM5ATM/O3PROF2 as the layer integral of a piecewise-constant profile, including WRF's one-layer shift (EqWeFiC FORTRAN_BUGS.md B5), and colo3. EqWeFiC, cited here for FORTRAN_BUGS.md, couplings/ and components/atmospheric_dynamics/wrf_arw/, is https://github.com/EarthSciML/EqWeFiC, where these components were developed and are coupled into a WRF column.
- RRTMLWHeating
model
atmospheric_radiation
rrtm_lw
Longwave heating of a model column from the RRTM up- and downwelling fluxes (WRF ra_lw_physics = 1, SUBROUTINE RTRN heating-rate loop 7000 and the TTEN/GLW/OLR mapping of SUBROUTINE RRTM in phys/module_ra_rrtm.F, WRF 4.8), written as the pressure-coordinate flux-divergence PDE dT/dt = -(g/cp) dF_net/ds, s = p_sfc - p on the EarthSciDiscretizations grids/column_nonuniform_1d grid. The grid's interface coordinate `ze` is here the PRESSURE DISTANCE ABOVE THE SURFACE s = p_e[1] - p_e (Pa, monotone increasing with lev), so the grid's layer measure dz is the layer pressure thickness p_e[k] - p_e[k+1] and the imported face_flux_D_lev_supplied_faces rule lowers D(F_net, lev) to (F_net[k+1] - F_net[k]) / (p_e[k] - p_e[k+1]); with the RRTM value of g/cp (HEATFAC) this is exactly RTRN's HTR(L-1) = HEATFAC (FNET(L-1) - FNET(L)) / (PZ(L-1) - PZ(L)), L = 1..NLAYERS, PZ in hPa, HTR in K/day, verified against the instrumented WRF dumps to real32 roundoff (this is the convention the instrumentation pass could not reproduce: HTR(L-1), not HTR(L), is the heating of layer L, and HTR(NLAYERS) is simply set to 0). Column mapping: RRTM indexes its column BOTTOM-UP like this grid -- RRTM layer L is model layer L for L <= NLEV (MM5ATM: PAVEL(L) = p(kte+1-L) undoes the top-down ordering of the RRTMLWRAD 1-D arrays), RRTM level L is the model interface L+1 (PZ(0) the surface p8w(1), PZ(NLEV) the model top p_top) -- and MM5ATM extends the column above p_top with NLAYERS - NLEV buffer layers of thickness deltap = 4 hPa down to PZ(NLAYERS) = 0 (temperatures from a standard profile offset to match the model top, constant water vapour 5e-6, model-top CH4/N2O, climatological ozone) so that the fluxes at the model interfaces include the emission of the atmosphere above the model top. Only the fluxes at the NLEV+1 MODEL interfaces enter this component (inputs F_up, F_dn of shape [lev_nodes], the first NLEV+1 entries of TOTUFLUX/TOTDFLUX); the buffer layers are heated by RTRN but their heating is discarded (RRTM: TTEN(K) = HTR(kte-K)/86400 for K = 1..kte, in the wrapper's top-down order). Outputs: dTdt (K/s, WRF TTEN reversed to bottom-up), dthdt = dTdt/exner (the increment RRTMLWRAD adds to RTHRATEN), glw = F_dn at the surface (GLW = TOTDFLUX(0)) and olr = F_up at the MODEL TOP (WRF sets OLR = TOTUFLUX(kte), the upward flux at p_top, not TOTUFLUX(NLAYERS) at the top of the RRTM column; the two differ by 3-7 W/m^2 in the reference run). The fluxes themselves (the RTRN two-stream sweep over 140 g-points and the gas optics) are the later stages of the RRTM transcription; this component is the flux-to-tendency stage that every longwave scheme shares. Inputs are REWRITE-TARGET ops `input_<name>` that the consumer lowers (in the inline tests through a per-test expression_template_imports library extracted from the WRF dumps, because esm-spec 6.6 parameter_overrides admit scalars only). EqWeFiC, cited here for FORTRAN_BUGS.md, couplings/ and components/atmospheric_dynamics/wrf_arw/, is https://github.com/EarthSciML/EqWeFiC, where these components were developed and are coupled into a WRF column.
- RRTMParameters
model
atmospheric_radiation
rrtm_lw
Scheme constants of WRF's RRTM longwave radiation (ra_lw_physics = 1, phys/module_ra_rrtm.F, WRF 4.8; Mlawer et al. 1997), collected as named parameters so that no literal appears inline in the RRTM components. Physical constants shared with the rest of WRF live in lib/wrf_constants.esm; the values here are the ones RRTM hard-wires for itself, several of which deliberately differ from WRF's (HEATFAC uses g = 9.8066 m/s^2 and cp = 1.004 kJ/(kg K), not WRF's 9.81 and 1004.5). Mounted as subsystem `par` by the RRTM components.
- RTRNSweep
model
atmospheric_radiation
rrtm_lw
RRTM longwave radiative transfer (SUBROUTINE RTRN of phys/module_ra_rrtm.F, WRF 4.8; Mlawer et al. 1997, Iacono's CCM revision): from the quantised gas optical depths ITR and Planck fractions PFRAC of GASABS, the cloud optical depths and fractions, and the layer/level temperatures of the extended RRTM column, compute the Planck sources, the one-angle (diffusivity-angle, secant 1.66) downward and upward radiance sweeps for all 140 g-points with the RRTM cloud-fraction overlap, the clear-sky sweeps, the band-summed and total up/down fluxes, and RRTM's heating rates HTR/HTRC. The two sweeps are esm-spec 4.3.1.1 recurrences over the level index (one per g-point): each level's radiance is the previous level's radiance transmitted through the intervening layer plus that layer's emission, a genuinely sequential integration of the Schwarzschild equation that has no closed form once the layer sources vary (EqWeFiC CLAUDE.md: recurrences are reserved for sequential sweeps such as two-stream up/down passes). Layer 1 of rlay is the lowest RRTM layer (surface), level 1 of rlev the surface; the downward sweep is written on a top-counted index and gathered back so that the recurrence reads strictly earlier cells. Gas optics (GASABS/TAUGB1-16) are not part of this component: ITR and PFRAC are inputs, computed by rrtm_gas_optics.esm. EqWeFiC, cited here for CLAUDE.md, FORTRAN_BUGS.md, couplings/ and components/atmospheric_dynamics/wrf_arw/, is https://github.com/EarthSciML/EqWeFiC, where these components were developed and are coupled into a WRF column.
- UrbanRadiation
model
urban_canopy
Urban albedos and radiative fluxes for the Community Land Model Urban (CLMU) parameterization, following Chapter 2 of Oleson et al. (2010). Computes view factors, incident direct beam and diffuse solar radiation, absorbed and reflected solar radiation (with closed-form multi-reflection solution for the urban canyon), incident longwave radiation, and absorbed/reflected/emitted longwave radiation for urban surfaces: roof, sunlit wall, shaded wall, and road. The urban canyon is represented as an infinitely long canyon of width W bordered by buildings of height H. The iterative multi-reflection scheme (Eqs. 2.63-2.85, 2.138-2.170) is solved in closed form using the matrix geometric series S_absorbed = (I - A) * (I - T*A)^{-1} * S_0, where A is the albedo matrix, T is the view-factor transport matrix, and S_0 is the initial incident radiation vector. Migrated from UrbanCanopy.jl@9200edd4 src/albedos_radiative_fluxes.jl:27 (`UrbanRadiation` @component). Parameterized as observed-only: H_W, W_roof, S_atm_*, L_atm_down, μ_zen, surface albedos α_*, emissivities ε_*, and surface temperatures T_* are inputs (parameters); 62 view factor, intermediate, absorbed-flux, and reflected-flux quantities are algebraic state outputs.