@@ -349,6 +349,7 @@ def run_task(self):
349349 dsMesh = xr .open_dataset (meshFilename )
350350 dsMesh = dsMesh .isel (Time = 0 )
351351 areaCell = dsMesh .areaCell
352+ openOceanMask = xr .where (dsMesh .landIceMask > 0 , 0 , 1 )
352353
353354 nVertLevels = dsMesh .sizes ['nVertLevels' ]
354355
@@ -382,7 +383,9 @@ def run_task(self):
382383 cellMasks = dsRegionMask .regionCellMasks
383384 regionNamesVar = dsRegionMask .regionNames
384385
385- totalArea = self ._masked_area_sum (cellMasks , areaCell , vertDepthMask )
386+ totalArea = self ._masked_area_sum (
387+ cellMasks , openOceanMask , areaCell , vertDepthMask
388+ )
386389
387390 datasets = []
388391 for timeIndex , fileName in enumerate (inputFiles ):
@@ -410,13 +413,18 @@ def run_task(self):
410413 var = dsLocal [variableName ].where (vertDepthMask )
411414
412415 meanName = '{}_mean' .format (prefix )
413- dsLocal [meanName ] = \
414- self ._masked_area_sum (cellMasks , areaCell , var ) / totalArea
416+ dsLocal [meanName ] = (
417+ self ._masked_area_sum (
418+ cellMasks , openOceanMask , areaCell , var
419+ ) / totalArea
420+ )
415421
416422 meanSquaredName = '{}_meanSquared' .format (prefix )
417- dsLocal [meanSquaredName ] = \
418- self ._masked_area_sum (cellMasks , areaCell , var ** 2 ) / \
419- totalArea
423+ dsLocal [meanSquaredName ] = (
424+ self ._masked_area_sum (
425+ cellMasks , openOceanMask , areaCell , var ** 2
426+ ) / totalArea
427+ )
420428
421429 # drop the original variables
422430 dsLocal = dsLocal .drop_vars (variableList )
@@ -449,12 +457,15 @@ def run_task(self):
449457 write_netcdf_with_fill (dsOut , outputFileName )
450458
451459 @staticmethod
452- def _masked_area_sum (cellMasks , areaCell , var ):
460+ def _masked_area_sum (cellMasks , openOceanMask , areaCell , var ):
453461 """sum a variable over the masked areas"""
454462 nRegions = cellMasks .sizes ['nRegions' ]
455463 totals = []
456464 for index in range (nRegions ):
457- mask = cellMasks .isel (nRegions = slice (index , index + 1 ))
465+ mask = (
466+ cellMasks .isel (nRegions = slice (index , index + 1 )) *
467+ openOceanMask
468+ )
458469 totals .append ((mask * areaCell * var ).sum ('nCells' ))
459470
460471 total = xr .concat (totals , 'nRegions' )
0 commit comments