Repository navigation
update to fluxes.py to contain net radiation function - #2502
Open
Simon Osborne (mo-sro) wants to merge 11 commits into
Open
Simon Osborne (mo-sro) wants to merge 11 commits into
Simon Osborne (mo-sro) wants to merge 11 commits into
Conversation
Contributor
Total coverage: 93% (HTML report)Name Stmts Miss Branch BrPart Cover --------------------------------------------------------------------------------------------------- src/CSET/__init__.py 113 4 14 0 97% src/CSET/_common.py 156 0 54 0 100% src/CSET/cset_workflow/app/fetch_fcst/bin/fetch_data.py 117 28 26 0 78% src/CSET/cset_workflow/app/fetch_nimrod/bin/fetch_nimrod.py 81 8 28 11 83% src/CSET/cset_workflow/app/finish_website/bin/finish_website.py 79 2 8 2 95% src/CSET/cset_workflow/app/parbake_recipes/bin/parbake.py 29 0 8 0 100% src/CSET/cset_workflow/app/send_email/bin/send_email.py 25 0 4 0 100% src/CSET/cset_workflow/lib/python/jinja_utils.py 17 0 6 0 100% src/CSET/extract_workflow.py 105 1 26 1 98% src/CSET/graph.py 44 0 14 0 100% src/CSET/operators/__init__.py 89 0 26 0 100% src/CSET/operators/_atmospheric_constants.py 9 0 0 0 100% src/CSET/operators/_colormaps.py 249 3 72 4 98% src/CSET/operators/_stash_to_lfric.py 3 0 0 0 100% src/CSET/operators/_utils.py 200 8 74 6 95% src/CSET/operators/ageofair.py 142 7 64 5 94% src/CSET/operators/aggregate.py 184 8 60 7 94% src/CSET/operators/aviation.py 61 0 18 0 100% src/CSET/operators/collapse.py 162 8 80 3 94% src/CSET/operators/constraints.py 115 7 50 2 93% src/CSET/operators/convection.py 38 4 10 2 88% src/CSET/operators/ensembles.py 27 0 14 0 100% src/CSET/operators/feature.py 44 0 10 0 100% src/CSET/operators/filters.py 67 2 30 0 98% src/CSET/operators/fluxes.py 60 1 18 1 97% src/CSET/operators/humidity.py 135 0 52 0 100% src/CSET/operators/imageprocessing.py 57 0 16 0 100% src/CSET/operators/mesoscale.py 18 0 2 0 100% src/CSET/operators/misc.py 172 1 72 3 98% src/CSET/operators/plot.py 1172 155 438 70 84% src/CSET/operators/power_spectrum.py 156 10 60 8 91% src/CSET/operators/precipitation.py 204 2 92 2 99% src/CSET/operators/pressure.py 41 0 12 0 100% src/CSET/operators/read.py 453 25 200 15 94% src/CSET/operators/regrid.py 147 1 70 3 98% src/CSET/operators/scoreswrappers.py 226 22 74 6 89% src/CSET/operators/temperature.py 121 0 32 0 100% src/CSET/operators/transect.py 63 0 24 0 100% src/CSET/operators/wind.py 46 3 10 2 91% src/CSET/operators/write.py 15 0 6 0 100% src/CSET/recipes/__init__.py 104 0 28 0 100% src/CSET/sample_data/__init__.py 0 0 0 0 100% --------------------------------------------------------------------------------------------------- TOTAL 5346 310 1902 153 93% |
Simon Osborne (mo-sro)
requested review from
David Flack (daflack)
and
a balanced review from Copilot
October 6, 2026 11:10
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Band validation can reject valid inputs, and non-surface inputs receive incorrect surface metadata.
Review effort: Balanced
Findings: 2
Open (2)
What changed in this PR
Adds a radiative-flux operator that calculates net downward flux.
Changes:
- Computes downwelling minus upwelling radiation.
- Assigns shortwave or longwave output metadata.
- Adds scalar, validation, naming, and CubeList tests.
| File | Description |
|---|---|
src/CSET/operators/fluxes.py |
Implements the net radiative flux operator. |
tests/operators/test_fluxes.py |
Tests calculation, naming, errors, and CubeLists. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
…opposite bands are explicitly identified' Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
… into net-radiative-flux
Comment on lines
+197
to
+211
| down_name = down_cube.name().lower() | ||
| up_name = up_cube.name().lower() | ||
| if ("shortwave" in down_name and "longwave" in up_name) or ( | ||
| "longwave" in down_name and "shortwave" in up_name | ||
| ): | ||
| raise ValueError("Cannot combine shortwave and longwave fluxes") | ||
|
|
||
| net_flux = down_cube - up_cube | ||
| name = down_cube.name().lower() | ||
| if "shortwave" in name: | ||
| output_name = "net_downward_shortwave_flux" | ||
| elif "longwave" in name: | ||
| output_name = "net_downward_longwave_flux" | ||
| else: | ||
| output_name = "net_downward_radiative_flux" |
This branch has not been deployed
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.


Adds a new fluxes.net_radiative_flux operator which calculates:
and automatically identifies shortwave and longwave fluxes,
producing:
net_downward_shortwave_flux
net_downward_longwave_flux
Includes unit tests. Although intended for surface fluxes, the function will work for any level.
Contribution checklist
Aim to have all relevant checks ticked off before merging. See the developer's guide for more detail.