Skip to content

Commit 45d447f

Browse files
committed
Use open ocean mask in _masked_area_sum() method
This ensures that both the area-weighted field (numerator) and the total area (denominator) include the same masking.
1 parent e21b5eb commit 45d447f

1 file changed

Lines changed: 19 additions & 11 deletions

File tree

mpas_analysis/ocean/ocean_regional_profiles.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,9 @@ def run_task(self):
383383
cellMasks = dsRegionMask.regionCellMasks
384384
regionNamesVar = dsRegionMask.regionNames
385385

386-
totalArea = self._masked_area_sum(cellMasks, areaCell, vertDepthMask)
386+
totalArea = self._masked_area_sum(
387+
cellMasks, openOceanMask, areaCell, vertDepthMask
388+
)
387389

388390
datasets = []
389391
for timeIndex, fileName in enumerate(inputFiles):
@@ -408,18 +410,21 @@ def run_task(self):
408410
prefix = field['prefix']
409411
self.logger.info(' {}'.format(field['titleName']))
410412

411-
var_mpas = dsLocal[variableName]
412-
var_mpas_masked = var_mpas * openOceanMask
413-
var = var_mpas_masked.where(vertDepthMask)
413+
var = dsLocal[variableName].where(vertDepthMask)
414414

415415
meanName = '{}_mean'.format(prefix)
416-
dsLocal[meanName] = \
417-
self._masked_area_sum(cellMasks, areaCell, var) / totalArea
416+
dsLocal[meanName] = (
417+
self._masked_area_sum(
418+
cellMasks, openOceanMask, areaCell, var
419+
) / totalArea
420+
)
418421

419422
meanSquaredName = '{}_meanSquared'.format(prefix)
420-
dsLocal[meanSquaredName] = \
421-
self._masked_area_sum(cellMasks, areaCell, var**2) / \
422-
totalArea
423+
dsLocal[meanSquaredName] = (
424+
self._masked_area_sum(
425+
cellMasks, openOceanMask, areaCell, var**2
426+
) / totalArea
427+
)
423428

424429
# drop the original variables
425430
dsLocal = dsLocal.drop_vars(variableList)
@@ -452,12 +457,15 @@ def run_task(self):
452457
write_netcdf_with_fill(dsOut, outputFileName)
453458

454459
@staticmethod
455-
def _masked_area_sum(cellMasks, areaCell, var):
460+
def _masked_area_sum(cellMasks, openOceanMask, areaCell, var):
456461
"""sum a variable over the masked areas"""
457462
nRegions = cellMasks.sizes['nRegions']
458463
totals = []
459464
for index in range(nRegions):
460-
mask = cellMasks.isel(nRegions=slice(index, index+1))
465+
mask = (
466+
cellMasks.isel(nRegions=slice(index, index+1)) *
467+
openOceanMask
468+
)
461469
totals.append((mask * areaCell * var).sum('nCells'))
462470

463471
total = xr.concat(totals, 'nRegions')

0 commit comments

Comments
 (0)