diff --git a/earthdiagnostics/ocean/sivolume.py b/earthdiagnostics/ocean/sivolume.py index 40b6227d841658292f03f996756e7c65e2fcef64..39c4a38caa13fb12aaddf02c86dc35085b92b48e 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,19 +175,19 @@ 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 - ) + new_mask = condition * mask + if new_mask.max() == 0: + return None + data = data * new_mask return data.collapsed( - ("latitude", "longitude"), iris.analysis.SUM, weights=weights + ("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(