feat(picket-fence): full picket-fence radiation scheme (LW + SW, correlated-k, multi-planet)#210
Merged
Merged
Conversation
Wheel: replace include_package_data=True with explicit package_data covering only the runtime _data/ assets (ozone, TOML configs, correlated-k .nc/.npz). Fortran sources, .pyx, PDFs, graphify-out/, etc. are no longer bundled. sdist: change MANIFEST.in to include only *.py from tests/, dropping ~59 MB of binary NetCDF caches. Delete 6 stale/defective Chaverot-sourced Earth LW tables and all code that referenced them (test_resolution_convergence.py, benchmark_hotmoist_window_closure.py, lw_convergence() in benchmark_picket_fence_vs_rrtmg.py). The 4-band/8-gpt options are superseded by the 14-band linepyline table; the hotmoist table has a molar-mass calibration defect at high H2O. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
chore: slim wheel/sdist, drop stale Chaverot Earth LW tables
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a complete picket-fence radiation scheme to climt, along with multi-planet atmospheric profiles, a correlated-k table pipeline, and general condensible species support in Emanuel convection.
Core radiation components
PicketFenceLongwave— Parmentier-mode grey LW and correlated-k mode; njit(parallel) transport kernel (~540× faster than pure Python, faster than RRTMG-LW for large column counts)PicketFenceShortwave— two-stream SW with ESFT overlap, Rayleigh scattering, cloud optical properties, correlated-k modediagnostics_levelcontrolCorrelated-k tables
earth_low_res_lw.nc): 14-band, 8 g-pts, HITRAN 2024 / MT_CKD 4.3, runtime CO₂ axis (10–10000 ppm, log-k interpolation), runtime H₂O axis — validated against RRTMG-LWearth_low_res_sw.nc): 3-band, 2 g-ptsscripts/pf_table_builder/— linepyline kappa sampler, k-distribution with Gauss-Legendre quadrature, netCDF writerCO₂ runtime axis
Multi-planet atmospheric profiles
climt/_data/atmospheric_properties/)get_active_condensible()/CondensibleParamsAPI for condensible species (H₂O, CH₄)Emanuel convection
EmanuelConvectionPython(old pure-Python component dropped)CondensibleParams) wired through vectorised kernel: saturation vapour pressure, latent heat, LCL pressure parameterised per-condensibleCanonical diagnostic names
air_temperature_tendency_from_longwave/_from_shortwave(replaces old*_heating_ratenames)CI / packaging
netcdf4,numba,importlib_resourcesto dev requirementsTest plan
tests/test_picket_fence_lw.py— 10 tests (Parmentier, correlated-k, CO₂ axis, per-band sums, isothermal equilibrium, surface emissivity)tests/test_picket_fence_sw.py— two-stream, correlated-k, per-band sums, cloud hooktests/test_rrtmg_vs_picket_fence.py— LW/SW broadband within 25% of RRTMG; H₂O response livetests/test_grey_limit.py— bit-exact grey limit vsGrayLongwaveRadiationtests/test_lw_kernel_consolidation.py— transport kernel regressiontests/test_condensibles.py— Titan CH₄ smoke test, saturation vapour pressure,CondensibleParamstests/test_components.py—GrayLongwaveRadiationcached-output tests pass with renamed diagnosticfeature/picket-fence-radiation🤖 Generated with Claude Code