66import pytest
77import xarray as xr
88
9- from pydomcfg . domzgr . zco import Zco
9+ import pydomcfg # noqa: F401
1010
1111from .bathymetry import Bathymetry
1212from .data import ORCA2_VGRID
@@ -24,12 +24,12 @@ def test_zco_orca2():
2424 # Bathymetry dataset
2525 ds_bathy = Bathymetry (1.0e3 , 1.2e3 , 1 , 1 ).flat (5.0e3 )
2626
27- # zco grid generator
28- zco = Zco ( ds_bathy , jpk = 31 )
27+ # Set number of vertical levels
28+ ds_bathy . domcfg . jpk = 31
2929
3030 # zco mesh with analytical e3 using ORCA2 input parameters
3131 # See pag 62 of v3.6 manual for the input parameters
32- dsz_an = zco (
32+ dsz_an = ds_bathy . domcfg . zco (
3333 ppdzmin = 10.0 ,
3434 pphmax = 5000.0 ,
3535 ppkth = 21.43336197938 ,
@@ -68,12 +68,12 @@ def test_zco_uniform():
6868 # Bathymetry dataset
6969 ds_bathy = Bathymetry (10.0e3 , 1.2e3 , 1 , 1 ).flat (5.0e3 )
7070
71- # zco grid generator
72- zco = Zco ( ds_bathy , jpk = 51 )
71+ # Set number of vertical levels
72+ ds_bathy . domcfg . jpk = 31
7373
7474 # Compare zco mesh with analytical VS finite difference e3
75- expected = zco (** kwargs , ln_e3_dep = True )
76- actual = zco (** kwargs , ln_e3_dep = False )
75+ expected = ds_bathy . domcfg . zco (** kwargs , ln_e3_dep = True )
76+ actual = ds_bathy . domcfg . zco (** kwargs , ln_e3_dep = False )
7777 eps = 1.0e-14 # truncation errors
7878 xr .testing .assert_allclose (expected , actual , rtol = eps , atol = 0 )
7979
@@ -83,8 +83,8 @@ def test_zco_x_y_invariant():
8383
8484 # Generate 2x2 flat bathymetry dataset
8585 ds_bathy = Bathymetry (10.0e3 , 1.2e3 , 2 , 2 ).flat (5.0e3 )
86- zco = Zco ( ds_bathy , jpk = 10 )
87- ds = zco (ppdzmin = 10 , pphmax = 5.0e3 )
86+ ds_bathy . domcfg . jpk = 10
87+ ds = ds_bathy . domcfg . zco (ppdzmin = 10 , pphmax = 5.0e3 )
8888
8989 # Check z3 and e3
9090 for varname in ["z3T" , "z3W" , "e3T" , "e3W" ]:
@@ -101,50 +101,50 @@ def test_zco_errors():
101101
102102 # Generate test data
103103 ds_bathy = Bathymetry (1.0e3 , 1.2e3 , 1 , 1 ).flat (5.0e3 )
104- zco = Zco ( ds_bathy , jpk = 10 )
104+ ds_bathy . domcfg . jpk = 10
105105
106106 # Without ldbletanh flag, only allow all pps set or none of them
107107 with pytest .raises (
108108 ValueError , match = "ppa2, ppkth2 and ppacr2 MUST be all None or all float"
109109 ):
110- zco (** kwargs , ppa2 = 1 , ppkth2 = 1 , ppacr2 = None )
110+ ds_bathy . domcfg . zco (** kwargs , ppa2 = 1 , ppkth2 = 1 , ppacr2 = None )
111111
112112 # When ldbletanh flag is True, all coefficients must be specified
113113 with pytest .raises (ValueError , match = "ppa2, ppkth2 and ppacr2 MUST be all float" ):
114- zco (** kwargs , ldbletanh = True , ppa2 = 1 , ppkth2 = 1 , ppacr2 = None )
114+ ds_bathy . domcfg . zco (** kwargs , ldbletanh = True , ppa2 = 1 , ppkth2 = 1 , ppacr2 = None )
115115
116116
117117def test_zco_warnings ():
118118 """Make sure we warn when arguments are ignored"""
119119
120120 # Initialize test class
121121 ds_bathy = Bathymetry (1.0e3 , 1.2e3 , 1 , 1 ).flat (5.0e3 )
122- zco = Zco ( ds_bathy , jpk = 10 )
122+ ds_bathy . domcfg . jpk = 10
123123
124124 # Uniform: Ignore stretching
125125 kwargs = dict (ppdzmin = 10 , pphmax = 5.0e3 , ppkth = 0 , ppacr = 0 )
126- expected = zco (** kwargs , ppsur = None , ppa0 = 999_999 , ppa1 = None )
126+ expected = ds_bathy . domcfg . zco (** kwargs , ppsur = None , ppa0 = 999_999 , ppa1 = None )
127127 with pytest .warns (
128128 UserWarning , match = "ppsur, ppa0 and ppa1 are ignored when ppacr == ppkth == 0"
129129 ):
130- actual = zco (** kwargs , ppsur = 2 , ppa0 = 2 , ppa1 = 2 )
130+ actual = ds_bathy . domcfg . zco (** kwargs , ppsur = 2 , ppa0 = 2 , ppa1 = 2 )
131131 xr .testing .assert_identical (expected , actual )
132132
133133 # ldbletanh OFF: Ignore double tanh
134134 kwargs = dict (ppdzmin = 10 , pphmax = 5.0e3 , ldbletanh = False )
135- expected = zco (** kwargs , ppa2 = None , ppkth2 = None , ppacr2 = None )
135+ expected = ds_bathy . domcfg . zco (** kwargs , ppa2 = None , ppkth2 = None , ppacr2 = None )
136136 with pytest .warns (
137137 UserWarning , match = "ppa2, ppkth2 and ppacr2 are ignored when ldbletanh is False"
138138 ):
139- actual = zco (** kwargs , ppa2 = 2 , ppkth2 = 2 , ppacr2 = 2 )
139+ actual = ds_bathy . domcfg . zco (** kwargs , ppa2 = 2 , ppkth2 = 2 , ppacr2 = 2 )
140140 xr .testing .assert_identical (expected , actual )
141141
142142 # Uniform case: Ignore double tanh
143143 kwargs = dict (ppdzmin = 10 , pphmax = 5.0e3 , ppkth = 0 , ppacr = 0 )
144- expected = zco (** kwargs , ppa2 = None , ppkth2 = None , ppacr2 = None )
144+ expected = ds_bathy . domcfg . zco (** kwargs , ppa2 = None , ppkth2 = None , ppacr2 = None )
145145 with pytest .warns (
146146 UserWarning ,
147147 match = "ppa2, ppkth2 and ppacr2 are ignored when ppacr == ppkth == 0" ,
148148 ):
149- actual = zco (** kwargs , ppa2 = 2 , ppkth2 = 2 , ppacr2 = 2 )
149+ actual = ds_bathy . domcfg . zco (** kwargs , ppa2 = 2 , ppkth2 = 2 , ppacr2 = 2 )
150150 xr .testing .assert_identical (expected , actual )
0 commit comments