From 4f69745319357b4addfd04f335b76bb2fd5b151c Mon Sep 17 00:00:00 2001 From: Simon Osborne Date: Tue, 12 May 2026 15:41:27 +0100 Subject: [PATCH] add function to convert Cardington visible range into km --- src/CSET/operators/misc.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/CSET/operators/misc.py b/src/CSET/operators/misc.py index 34e59aefb..290dcd865 100644 --- a/src/CSET/operators/misc.py +++ b/src/CSET/operators/misc.py @@ -615,3 +615,22 @@ def differentiate( return new_cubelist[0] else: return new_cubelist + + +def convert_visibility_to_km(cubes, **kwargs): + """Ensure visibility is converted to km if required. UM data is always in metres.""" + if isinstance(cubes, iris.cube.Cube): + cubes = iris.cube.CubeList([cubes]) + else: + cubes = iris.cube.CubeList(cubes) + + for cube in cubes: + model = cube.attributes.get("model_name", "") or "" + if "Cardington" in model: + cube *= 1000 + cube.units = "km" + else: + # UM visibility is in metres – convert with scaling + cube.convert_units("km") + + return cubes if len(cubes) > 1 else cubes[0]