From 3144fdd645f463bbe041406b73f3f405e6e794f0 Mon Sep 17 00:00:00 2001 From: Javier Vegas-Regidor Date: Fri, 4 Jun 2021 14:52:06 +0200 Subject: [PATCH 1/2] Fix sivolume computating for HR --- earthdiagnostics/ocean/sivolume.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/earthdiagnostics/ocean/sivolume.py b/earthdiagnostics/ocean/sivolume.py index 40b6227d..81362bef 100644 --- a/earthdiagnostics/ocean/sivolume.py +++ b/earthdiagnostics/ocean/sivolume.py @@ -98,7 +98,7 @@ class Sivolume(Diagnostic): area = e1t * e2t for basin in basins: - masks[basin] = Utils.get_mask(basin) * area.data + masks[basin] = Utils.get_mask(basin) * area.core_data() job_list = list() for ( @@ -175,14 +175,9 @@ class Sivolume(Diagnostic): condition = data.coord("latitude").points > 0 else: condition = data.coord("latitude").points < 0 - weights = ( - iris.util.broadcast_to_shape( - condition, data.shape, data.coord_dims("latitude") - ) - * mask - ) - return data.collapsed( - ("latitude", "longitude"), iris.analysis.SUM, weights=weights + new_data = data * condition * mask + return new_data.collapsed( + ("latitude", "longitude"), iris.analysis.SUM ) def save(self, var, results): -- GitLab From f602ddf547814be2b1d86a9bbef6d577e04aca66 Mon Sep 17 00:00:00 2001 From: Javier Vegas-Regidor Date: Fri, 4 Jun 2021 15:15:01 +0200 Subject: [PATCH 2/2] Assign basins to their variable --- earthdiagnostics/ocean/sivolume.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/earthdiagnostics/ocean/sivolume.py b/earthdiagnostics/ocean/sivolume.py index 81362bef..39c4a38c 100644 --- a/earthdiagnostics/ocean/sivolume.py +++ b/earthdiagnostics/ocean/sivolume.py @@ -175,14 +175,19 @@ class Sivolume(Diagnostic): condition = data.coord("latitude").points > 0 else: condition = data.coord("latitude").points < 0 - new_data = data * condition * mask - return new_data.collapsed( + new_mask = condition * mask + if new_mask.max() == 0: + return None + data = data * new_mask + return data.collapsed( ("latitude", "longitude"), iris.analysis.SUM ) def save(self, var, results): cubes = iris.cube.CubeList() for basin, result in six.iteritems(results): + if result is None: + continue result.var_name = var result.units = "m^3" result.add_aux_coord( -- GitLab