Skip to content

Commit 5d5dddd

Browse files
authored
Fixes of ocean variables in multiple CMIP6 datasets (#1566)
* fixes for ocean variables of gfdl_cm4 and gfdl_esm4 datasets * fixes for ocean variables of cesm2_waccm dataset * extend ocean fixes to cesm2 family * add missing import to tests of cesm2 models * update test for gfdl_cm4 fixes * add ocean fixes for cnrm models * import changes from PR #1395 * extend fixes from ipsl_cm6a_lr to the other ipsl models (in line with #1395) * fix codacy * fix more codacy * apply Omon fix for fgoals_f3_l * clean up wrong fixes taken from PR #1395
1 parent 4241457 commit 5d5dddd

File tree

16 files changed

+111
-33
lines changed

16 files changed

+111
-33
lines changed

esmvalcore/cmor/_fixes/cmip6/bcc_csm2_mr.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,6 @@
1717

1818

1919
Sos = OceanFixGrid
20+
21+
22+
Uo = OceanFixGrid

esmvalcore/cmor/_fixes/cmip6/cesm2_fv2.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""Fixes for CESM2-FV2 model."""
22
from .cesm2 import Cl as BaseCl
33
from .cesm2 import Fgco2 as BaseFgco2
4+
from .cesm2 import Omon as BaseOmon
45
from .cesm2 import Tas as BaseTas
56
from ..common import SiconcFixScalarCoord
67

@@ -17,6 +18,9 @@
1718
Fgco2 = BaseFgco2
1819

1920

21+
Omon = BaseOmon
22+
23+
2024
Siconc = SiconcFixScalarCoord
2125

2226

esmvalcore/cmor/_fixes/cmip6/cesm2_waccm.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
from .cesm2 import Cl as BaseCl
55
from .cesm2 import Fgco2 as BaseFgco2
6+
from .cesm2 import Omon as BaseOmon
67
from .cesm2 import Tas as BaseTas
78
from ..common import SiconcFixScalarCoord
89

@@ -52,6 +53,9 @@ def fix_file(self, filepath, output_dir):
5253
Fgco2 = BaseFgco2
5354

5455

56+
Omon = BaseOmon
57+
58+
5559
Siconc = SiconcFixScalarCoord
5660

5761

esmvalcore/cmor/_fixes/cmip6/cesm2_waccm_fv2.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""Fixes for CESM2-WACCM-FV2 model."""
22
from .cesm2 import Tas as BaseTas
33
from .cesm2 import Fgco2 as BaseFgco2
4+
from .cesm2 import Omon as BaseOmon
45
from .cesm2_waccm import Cl as BaseCl
56
from .cesm2_waccm import Cli as BaseCli
67
from .cesm2_waccm import Clw as BaseClw
@@ -19,6 +20,9 @@
1920
Fgco2 = BaseFgco2
2021

2122

23+
Omon = BaseOmon
24+
25+
2226
Siconc = SiconcFixScalarCoord
2327

2428

esmvalcore/cmor/_fixes/cmip6/cnrm_cm6_1.py

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@
33

44
from ..common import ClFixHybridPressureCoord
55
from ..fix import Fix
6-
from ..shared import add_aux_coords_from_cubes, get_bounds_cube
6+
from ..shared import (
7+
add_aux_coords_from_cubes,
8+
get_bounds_cube,
9+
fix_ocean_depth_coord
10+
)
711

812

913
class Cl(ClFixHybridPressureCoord):
@@ -73,7 +77,30 @@ def fix_metadata(self, cubes):
7377
return iris.cube.CubeList([cube])
7478

7579

76-
Cli = Cl
80+
class Omon(Fix):
81+
"""Fixes for ocean variables."""
82+
83+
def fix_metadata(self, cubes):
84+
"""Fix ocean depth coordinate.
85+
86+
Parameters
87+
----------
88+
cubes: iris CubeList
89+
List of cubes to fix
7790
91+
Returns
92+
-------
93+
iris.cube.CubeList
94+
95+
"""
96+
for cube in cubes:
97+
if cube.coords(axis='Z'):
98+
z_coord = cube.coord(axis='Z')
99+
if z_coord.standard_name is None:
100+
fix_ocean_depth_coord(cube)
101+
return cubes
102+
103+
104+
Cli = Cl
78105

79106
Clw = Cl
Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
"""Fixes for CNRM-ESM2-1 model."""
2-
from ..fix import Fix
3-
from ..shared import (fix_ocean_depth_coord)
4-
5-
62
from .cnrm_cm6_1 import Cl as BaseCl
73
from .cnrm_cm6_1 import Clcalipso as BaseClcalipso
84
from .cnrm_cm6_1 import Cli as BaseCli
95
from .cnrm_cm6_1 import Clw as BaseClw
6+
from .cnrm_cm6_1 import Omon as BaseOmon
107

118

129
Cl = BaseCl
@@ -21,25 +18,4 @@
2118
Clw = BaseClw
2219

2320

24-
class Omon(Fix):
25-
"""Fixes for ocean variables."""
26-
27-
def fix_metadata(self, cubes):
28-
"""Fix ocean depth coordinate.
29-
30-
Parameters
31-
----------
32-
cubes: iris CubeList
33-
List of cubes to fix
34-
35-
Returns
36-
-------
37-
iris.cube.CubeList
38-
39-
"""
40-
for cube in cubes:
41-
if cube.coords(axis='Z'):
42-
z_coord = cube.coord(axis='Z')
43-
if z_coord.standard_name is None:
44-
fix_ocean_depth_coord(cube)
45-
return cubes
21+
Omon = BaseOmon

esmvalcore/cmor/_fixes/cmip6/fgoals_f3_l.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
Tos = OceanFixGrid
1212

1313

14+
Omon = OceanFixGrid
15+
16+
1417
class AllVars(Fix):
1518
"""Fixes for all vars."""
1619
def fix_metadata(self, cubes):

esmvalcore/cmor/_fixes/cmip6/gfdl_cm4.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
from ..common import ClFixHybridPressureCoord, SiconcFixScalarCoord
55
from ..fix import Fix
66
from ..shared import add_aux_coords_from_cubes, add_scalar_height_coord
7+
from .gfdl_esm4 import Omon as BaseOmon
8+
from .gfdl_esm4 import Fgco2 as BaseFgco2
79

810

911
class Cl(ClFixHybridPressureCoord):
@@ -108,3 +110,12 @@ def fix_metadata(self, cubes):
108110
cube = self.get_cube_from_list(cubes)
109111
add_scalar_height_coord(cube, 10.0)
110112
return cubes
113+
114+
115+
Omon = BaseOmon
116+
117+
118+
Oyr = Omon
119+
120+
121+
Fgco2 = BaseFgco2

esmvalcore/cmor/_fixes/cmip6/gfdl_esm4.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,7 @@ def fix_metadata(self, cubes):
5252
return cubes
5353

5454

55+
Oyr = Omon
56+
57+
5558
Siconc = SiconcFixScalarCoord
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
"""Fixes for IPSL-CM5A2-INCA model."""
2+
from .ipsl_cm6a_lr import AllVars as BaseAllVars
3+
from .ipsl_cm6a_lr import Clcalipso as BaseClcalipso
4+
from .ipsl_cm6a_lr import Omon as BaseOmon
5+
6+
7+
AllVars = BaseAllVars
8+
9+
10+
Clcalipso = BaseClcalipso
11+
12+
13+
Omon = BaseOmon

0 commit comments

Comments
 (0)