Skip to content
83 changes: 83 additions & 0 deletions esmvalcore/cmor/_fixes/cmip6/mpi_esm1_2_hr.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
"""Fixes for MPI-ESM1-2-HR model."""

from ..fix import Fix
from ..shared import add_scalar_height_coord
Comment thread
bouweandela marked this conversation as resolved.


class Tas(Fix):
"""Fixes for tas."""

def fix_metadata(self, cubes):
"""
Adds missing height2m coordinate.

Parameters
----------
cube: iris.cube.CubeList

Returns
-------
iris.cube.CubeList

"""
for cube in cubes:
add_scalar_height_coord(cube)

return cubes


class Ta(Fix):
"""Fixes for ta."""

def fix_metadata(self, cubes):
"""
Corrects plev coordinate var_name.

Parameters
----------
cube: iris.cube.CubeList

Returns
-------
iris.cube.CubeList

"""
for cube in cubes:
plev = cube.coord('air_pressure')
plev.var_name = 'plev'

return cubes


class Va(Ta):
"""Fixes for va."""


class Zg(Ta):
"""Fixes for zg."""


class Ua(Ta):
"""Fixes for ua."""


class SfcWind(Fix):
"""Fixes for sfcWind."""

def fix_metadata(self, cubes):
"""
Adds missing height10m coordinate.

Parameters
----------
cube: iris.cube.CubeList

Returns
-------
iris.cube.CubeList

"""
for cube in cubes:
add_scalar_height_coord(cube, height=10.0)

return cubes
29 changes: 29 additions & 0 deletions esmvalcore/cmor/_fixes/cmip6/mpi_esm1_2_xr.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
"""Fixes for MPI-ESM1-2-XR model."""

from .mpi_esm1_2_hr import Tas as BaseTas
from .mpi_esm1_2_hr import Ta as BaseFix
from .mpi_esm1_2_hr import SfcWind as BaseSfcWind


class Tas(BaseTas):
"""Fixes for tas."""


class Ta(BaseFix):
"""Fixes for ta."""


class Va(BaseFix):
"""Fixes for va."""


class Zg(BaseFix):
"""Fixes for zg."""


class Ua(BaseFix):
"""Fixes for ua."""


class SfcWind(BaseSfcWind):
"""Fixes for sfcWind."""
20 changes: 16 additions & 4 deletions esmvalcore/cmor/_fixes/shared.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ def add_scalar_depth_coord(cube, depth=0.0):
long_name='depth',
units=Unit('m'),
attributes={'positive': 'down'})
cube.add_aux_coord(depth_coord, ())
try:
cube.coord('depth')
except iris.exceptions.CoordinateNotFoundError:
cube.add_aux_coord(depth_coord, ())
return cube


Expand All @@ -30,7 +33,10 @@ def add_scalar_height_coord(cube, height=2.0):
long_name='height',
units=Unit('m'),
attributes={'positive': 'up'})
cube.add_aux_coord(height_coord, ())
try:
cube.coord('height')
except iris.exceptions.CoordinateNotFoundError:
cube.add_aux_coord(height_coord, ())
return cube


Expand All @@ -42,7 +48,10 @@ def add_scalar_typeland_coord(cube, value='default'):
standard_name='area_type',
long_name='Land area type',
units=Unit('no unit'))
cube.add_aux_coord(typeland_coord, ())
try:
cube.coord('area_type')
except iris.exceptions.CoordinateNotFoundError:
cube.add_aux_coord(typeland_coord, ())
return cube


Expand All @@ -54,7 +63,10 @@ def add_scalar_typesea_coord(cube, value='default'):
standard_name='area_type',
long_name='Ocean area type',
units=Unit('no unit'))
cube.add_aux_coord(typesea_coord, ())
try:
cube.coord('area_type')
except iris.exceptions.CoordinateNotFoundError:
cube.add_aux_coord(typesea_coord, ())
return cube


Expand Down