Skip to content

Commit

Permalink
Merge pull request #562 from ESMValGroup/fix_hybrid_height
Browse files Browse the repository at this point in the history
Added various fixes for hybrid height coordinates
  • Loading branch information
mattiarighi authored Apr 1, 2020
2 parents 8e694c0 + 995d674 commit 6624825
Show file tree
Hide file tree
Showing 79 changed files with 2,096 additions and 449 deletions.
38 changes: 32 additions & 6 deletions esmvalcore/cmor/_fixes/cmip5/access1_0.py
Original file line number Diff line number Diff line change
@@ -1,27 +1,28 @@
"""Fixes for the ACCESS1-0 model."""

from cf_units import Unit
import iris
from cf_units import Unit

from ..common import ClFixHybridHeightCoord
from ..fix import Fix


# noinspection PyPep8
class AllVars(Fix):
"""Common fixes to all vars."""

def fix_metadata(self, cubes):
"""
Fix metadata.
Fixes wrong calendar 'gregorian' instead of 'proleptic_gregorian'
Fixes wrong calendar 'gregorian' instead of 'proleptic_gregorian'.
Parameters
----------
cube: iris.cube.Cube
cubes : iris.cube.CubeList
Input cubes which need to be fixed.
Returns
-------
iris.cube.Cube
iris.cube.CubeList
"""
for cube in cubes:
Expand All @@ -32,3 +33,28 @@ def fix_metadata(self, cubes):
else:
time.units = Unit(time.units.name, 'gregorian')
return cubes


class Cl(ClFixHybridHeightCoord):
"""Fixes for ``cl``."""

def fix_metadata(self, cubes):
"""Remove attributes from ``vertical coordinate formula term: b(k)``.
Additionally add pressure level coordiante.
Parameters
----------
cubes : iris.cube.CubeList
Input cubes which need to be fixed.
Returns
-------
iris.cube.CubeList
"""
cubes = super().fix_metadata(cubes)
cube = self.get_cube_from_list(cubes)
coord = cube.coord(long_name='vertical coordinate formula term: b(k)')
coord.attributes = {}
return cubes
16 changes: 10 additions & 6 deletions esmvalcore/cmor/_fixes/cmip5/access1_3.py
Original file line number Diff line number Diff line change
@@ -1,26 +1,30 @@
"""Fixes for ACCESS1-3 model."""

from cf_units import Unit
import iris
from cf_units import Unit

from ..fix import Fix
from .access1_0 import Cl as BaseCl


Cl = BaseCl


class AllVars(Fix):
"""Common fixes to all vars."""

def fix_metadata(self, cubes):
"""
Fix metadata.
"""Fix metadata.
Fixes wrong calendar 'gregorian' instead of 'proleptic_gregorian'
Parameters
----------
cube: iris.cube.Cube
cubes : iris.cube.CubeList
Input cubes which need to be fixed.
Returns
-------
iris.cube.Cube
iris.cube.CubeList
"""
for cube in cubes:
Expand Down
5 changes: 2 additions & 3 deletions esmvalcore/cmor/_fixes/cmip5/bcc_csm1_1_m.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
"""Fixes for bcc-csm1-1-m."""
from .bcc_csm1_1 import Tos as BaseTos
from ..common import ClFixHybridPressureCoord
from .bcc_csm1_1 import Tos as BaseTos


Cl = ClFixHybridPressureCoord


class Tos(BaseTos):
"""Fixes for tos."""
Tos = BaseTos
42 changes: 27 additions & 15 deletions esmvalcore/cmor/_fixes/cmip5/bnu_esm.py
Original file line number Diff line number Diff line change
@@ -1,27 +1,31 @@

"""Fixes for BNU ESM model."""
"""Fixes for BNU-ESM model."""
from cf_units import Unit
from dask import array as da

from ..common import ClFixHybridPressureCoord
from ..fix import Fix


Cl = ClFixHybridPressureCoord


class FgCo2(Fix):
"""Fixes for fgco2."""

def fix_metadata(self, cubes):
"""
Fix metadata.
Fixes cube units
Fixes cube units.
Parameters
----------
cube: iris.cube.CubeList
cubes : iris.cube.CubeList
Input cubes to fix.
Returns
-------
iris.cube.Cube
iris.cube.CubeList
"""
self.get_cube_from_list(cubes).units = Unit('kg m-2 s-1')
Expand All @@ -31,11 +35,12 @@ def fix_data(self, cube):
"""
Fix data.
Fixes cube units
Fixes cube units.
Parameters
----------
cube: iris.cube.Cube
Input cube to fix.
Returns
-------
Expand All @@ -55,11 +60,12 @@ def fix_metadata(self, cubes):
"""
Fix metadata.
Fixes cube units
Fixes cube units.
Parameters
----------
cubes: iris.cube.CubeList
cubes : iris.cube.CubeList
Input cubes to fix.
Returns
-------
Expand All @@ -73,11 +79,13 @@ def fix_data(self, cube):
"""
Fix metadata.
Fixes cube units
Fixes cube units.
Parameters
----------
cube: iris.cube.Cube
Input cube to fix.
Returns
-------
Expand All @@ -97,11 +105,12 @@ def fix_metadata(self, cubes):
"""
Fix metadata.
Fixes cube units
Fixes cube units.
Parameters
----------
cubes: iris.cube.CubeList
cubes : iris.cube.CubeList
Input cubes to fix.
Returns
-------
Expand All @@ -115,11 +124,12 @@ def fix_data(self, cube):
"""
Fix data.
Fixes cube units
Fixes cube units.
Parameters
----------
cube: iris.cube.Cube
Input cube to fix.
Returns
-------
Expand All @@ -139,11 +149,12 @@ def fix_data(self, cube):
"""
Fix data.
Fixes cube units
Fixes cube units.
Parameters
----------
cube: iris.cube.Cube
cube : iris.cube.Cube
Input cube to fix.
Returns
-------
Expand All @@ -167,7 +178,8 @@ def fix_data(self, cube):
Parameters
----------
cube: iris.cube.Cube
cube : iris.cube.Cube
Input cube to fix.
Returns
-------
Expand Down
4 changes: 2 additions & 2 deletions esmvalcore/cmor/_fixes/cmip5/ccsm4.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,12 @@ def fix_data(self, cube):
Parameters
----------
cubes : iris.cube.Cube
cube : iris.cube.Cube
Input cube.
Returns
-------
iris.cube.CubeList
iris.cube.Cube
"""
cube.data = da.ma.masked_equal(cube.core_data(), 1.e33)
return cube
Expand Down
17 changes: 10 additions & 7 deletions esmvalcore/cmor/_fixes/cmip5/hadgem2_es.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@

"""Fix HadGEM2_ES."""
import numpy as np

from ..common import ClFixHybridHeightCoord
from ..fix import Fix


class AllVars(Fix):
"""Fix errors common to all vars."""

def fix_metadata(self, cubes):
"""
Fix latitude.
"""Fix latitude.
Parameters
----------
cube: iris.cube.CubeList
cubes : iris.cube.CubeList
Input cubes which need to be fixed.
Returns
-------
Expand All @@ -33,16 +33,19 @@ def fix_metadata(self, cubes):
return cubes


Cl = ClFixHybridHeightCoord


class O2(Fix):
"""Fix o2."""

def fix_metadata(self, cubes):
"""
Fix standard and long name.
"""Fix standard and long name.
Parameters
----------
cube: iris.cube.CubeList
cubes : iris.cube.CubeList
Input cubes which need to be fixed.
Returns
-------
Expand Down
11 changes: 11 additions & 0 deletions esmvalcore/cmor/_fixes/cmip6/access_cm2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
"""Fixes for ACCESS-CM2."""
from ..common import ClFixHybridHeightCoord


Cl = ClFixHybridHeightCoord


Cli = ClFixHybridHeightCoord


Clw = ClFixHybridHeightCoord
11 changes: 11 additions & 0 deletions esmvalcore/cmor/_fixes/cmip6/access_esm1_5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
"""Fixes for ACCESS-ESM1-5."""
from ..common import ClFixHybridHeightCoord


Cl = ClFixHybridHeightCoord


Cli = ClFixHybridHeightCoord


Clw = ClFixHybridHeightCoord
5 changes: 2 additions & 3 deletions esmvalcore/cmor/_fixes/cmip6/bcc_esm1.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Fixes for BCC-ESM1 model."""
from .bcc_csm2_mr import Tos as BaseTos
from ..common import ClFixHybridPressureCoord
from .bcc_csm2_mr import Tos as BaseTos


Cl = ClFixHybridPressureCoord
Expand All @@ -12,5 +12,4 @@
Clw = ClFixHybridPressureCoord


class Tos(BaseTos):
"""Fixes for tos."""
Tos = BaseTos
6 changes: 2 additions & 4 deletions esmvalcore/cmor/_fixes/cmip6/cesm2.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,10 @@ def fix_file(self, filepath, output_dir):
return new_path


class Cli(Cl):
"""Fixes for ``cli``."""
Cli = Cl


class Clw(Cl):
"""Fixes for ``clw``."""
Clw = Cl


class Fgco2(Fix):
Expand Down
12 changes: 4 additions & 8 deletions esmvalcore/cmor/_fixes/cmip6/cesm2_fv2.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,13 @@
from .cesm2 import Tas as BaseTas


class Cl(BaseCl):
"""Fixes for ``cl``."""
Cl = BaseCl


class Clw(Cl):
"""Fixes for ``clw``."""
Cli = Cl


class Cli(Cl):
"""Fixes for ``cli``."""
Clw = Cl


class Tas(BaseTas):
"""Fixes for ``tas``."""
Tas = BaseTas
Loading

0 comments on commit 6624825

Please sign in to comment.