roms-tools 2.1.0__py3-none-any.whl → 2.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- roms_tools/setup/boundary_forcing.py +1 -2
- roms_tools/setup/datasets.py +6 -0
- roms_tools/setup/initial_conditions.py +8 -3
- roms_tools/setup/surface_forcing.py +12 -4
- roms_tools/setup/tides.py +10 -3
- roms_tools/setup/utils.py +10 -0
- roms_tools/tests/test_setup/test_boundary_forcing.py +7 -5
- roms_tools/tests/test_setup/test_initial_conditions.py +6 -6
- roms_tools/tests/test_setup/test_surface_forcing.py +8 -8
- roms_tools/tests/test_setup/test_tides.py +5 -5
- {roms_tools-2.1.0.dist-info → roms_tools-2.2.0.dist-info}/METADATA +2 -2
- {roms_tools-2.1.0.dist-info → roms_tools-2.2.0.dist-info}/RECORD +15 -15
- {roms_tools-2.1.0.dist-info → roms_tools-2.2.0.dist-info}/WHEEL +1 -1
- {roms_tools-2.1.0.dist-info → roms_tools-2.2.0.dist-info}/LICENSE +0 -0
- {roms_tools-2.1.0.dist-info → roms_tools-2.2.0.dist-info}/top_level.txt +0 -0
|
@@ -710,8 +710,7 @@ class BoundaryForcing:
|
|
|
710
710
|
variable in the dataset.
|
|
711
711
|
"""
|
|
712
712
|
for var_name in self.variable_info:
|
|
713
|
-
|
|
714
|
-
if not self.use_dask or self.variable_info[var_name]["validate"]:
|
|
713
|
+
if self.variable_info[var_name]["validate"]:
|
|
715
714
|
location = self.variable_info[var_name]["location"]
|
|
716
715
|
|
|
717
716
|
# Select the appropriate mask based on variable location
|
roms_tools/setup/datasets.py
CHANGED
|
@@ -2052,6 +2052,12 @@ def _load_data(filename, dim_names, use_dask, decode_times=True):
|
|
|
2052
2052
|
**combine_kwargs,
|
|
2053
2053
|
**kwargs,
|
|
2054
2054
|
)
|
|
2055
|
+
|
|
2056
|
+
# Rechunk the dataset along the tidal constituent dimension ("ntides") after loading
|
|
2057
|
+
# because the original dataset does not have a chunk size of 1 along this dimension.
|
|
2058
|
+
if "ntides" in dim_names:
|
|
2059
|
+
ds = ds.chunk({dim_names["ntides"]: 1})
|
|
2060
|
+
|
|
2055
2061
|
else:
|
|
2056
2062
|
ds_list = []
|
|
2057
2063
|
for file in matching_files:
|
|
@@ -533,10 +533,15 @@ class InitialConditions:
|
|
|
533
533
|
variable_info = self.variable_info_physics
|
|
534
534
|
|
|
535
535
|
for var_name in variable_info:
|
|
536
|
-
|
|
537
|
-
|
|
536
|
+
if variable_info[var_name]["validate"]:
|
|
537
|
+
if variable_info[var_name]["location"] == "rho":
|
|
538
|
+
mask = self.grid.ds.mask_rho
|
|
539
|
+
elif variable_info[var_name]["location"] == "u":
|
|
540
|
+
mask = self.grid.ds.mask_u
|
|
541
|
+
elif variable_info[var_name]["location"] == "v":
|
|
542
|
+
mask = self.grid.ds.mask_v
|
|
538
543
|
ds[var_name].load()
|
|
539
|
-
nan_check(ds[var_name].squeeze(),
|
|
544
|
+
nan_check(ds[var_name].squeeze(), mask)
|
|
540
545
|
|
|
541
546
|
def _add_global_metadata(self, ds):
|
|
542
547
|
|
|
@@ -291,6 +291,8 @@ class SurfaceForcing:
|
|
|
291
291
|
|
|
292
292
|
processed_fields["swrad"] = processed_fields["swrad"] * corr_factor
|
|
293
293
|
|
|
294
|
+
del corr_factor
|
|
295
|
+
|
|
294
296
|
return processed_fields
|
|
295
297
|
|
|
296
298
|
def _write_into_dataset(self, processed_fields, data, d_meta):
|
|
@@ -298,8 +300,9 @@ class SurfaceForcing:
|
|
|
298
300
|
# save in new dataset
|
|
299
301
|
ds = xr.Dataset()
|
|
300
302
|
|
|
301
|
-
for var_name in processed_fields.keys():
|
|
303
|
+
for var_name in list(processed_fields.keys()):
|
|
302
304
|
ds[var_name] = processed_fields[var_name].astype(np.float32)
|
|
305
|
+
del processed_fields[var_name]
|
|
303
306
|
ds[var_name].attrs["long_name"] = d_meta[var_name]["long_name"]
|
|
304
307
|
ds[var_name].attrs["units"] = d_meta[var_name]["units"]
|
|
305
308
|
|
|
@@ -353,9 +356,14 @@ class SurfaceForcing:
|
|
|
353
356
|
"""
|
|
354
357
|
|
|
355
358
|
for var_name in ds.data_vars:
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
+
if self.variable_info[var_name]["validate"]:
|
|
360
|
+
if self.variable_info[var_name]["location"] == "rho":
|
|
361
|
+
mask = self.target_coords["mask"]
|
|
362
|
+
elif self.variable_info[var_name]["location"] == "u":
|
|
363
|
+
mask = self.target_coords["mask_u"]
|
|
364
|
+
elif self.variable_info[var_name]["location"] == "v":
|
|
365
|
+
mask = self.target_coords["mask_v"]
|
|
366
|
+
nan_check(ds[var_name].isel(time=0), mask)
|
|
359
367
|
|
|
360
368
|
def _add_global_metadata(self, ds=None):
|
|
361
369
|
|
roms_tools/setup/tides.py
CHANGED
|
@@ -270,9 +270,16 @@ class TidalForcing:
|
|
|
270
270
|
The method utilizes `self.grid.ds.mask_rho` to determine the wet points in the domain.
|
|
271
271
|
"""
|
|
272
272
|
for var_name in ds.data_vars:
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
273
|
+
if self.variable_info[var_name]["validate"]:
|
|
274
|
+
if self.variable_info[var_name]["location"] == "rho":
|
|
275
|
+
mask = self.grid.ds.mask_rho
|
|
276
|
+
elif self.variable_info[var_name]["location"] == "u":
|
|
277
|
+
mask = self.grid.ds.mask_u
|
|
278
|
+
elif self.variable_info[var_name]["location"] == "v":
|
|
279
|
+
mask = self.grid.ds.mask_v
|
|
280
|
+
|
|
281
|
+
da = ds[var_name].isel(ntides=0)
|
|
282
|
+
nan_check(da, mask)
|
|
276
283
|
|
|
277
284
|
def plot(self, var_name, ntides=0) -> None:
|
|
278
285
|
"""Plot the specified tidal forcing variable for a given tidal constituent.
|
roms_tools/setup/utils.py
CHANGED
|
@@ -745,6 +745,8 @@ def get_target_coords(grid, use_coarse_grid=False):
|
|
|
745
745
|
mask = grid.ds.get("mask_coarse")
|
|
746
746
|
if mask is not None:
|
|
747
747
|
mask = mask.rename({"eta_coarse": "eta_rho", "xi_coarse": "xi_rho"})
|
|
748
|
+
mask_u = interpolate_from_rho_to_u(mask, method="multiplicative")
|
|
749
|
+
mask_v = interpolate_from_rho_to_v(mask, method="multiplicative")
|
|
748
750
|
|
|
749
751
|
lat_psi = grid.ds.get("lat_psi_coarse")
|
|
750
752
|
lon_psi = grid.ds.get("lon_psi_coarse")
|
|
@@ -754,6 +756,8 @@ def get_target_coords(grid, use_coarse_grid=False):
|
|
|
754
756
|
lon = grid.ds.lon_rho
|
|
755
757
|
angle = grid.ds.angle
|
|
756
758
|
mask = grid.ds.get("mask_rho")
|
|
759
|
+
mask_u = grid.ds.get("mask_u")
|
|
760
|
+
mask_v = grid.ds.get("mask_v")
|
|
757
761
|
lat_psi = grid.ds.get("lat_psi")
|
|
758
762
|
lon_psi = grid.ds.get("lon_psi")
|
|
759
763
|
|
|
@@ -776,6 +780,8 @@ def get_target_coords(grid, use_coarse_grid=False):
|
|
|
776
780
|
"lon_psi": lon_psi,
|
|
777
781
|
"angle": angle,
|
|
778
782
|
"mask": mask,
|
|
783
|
+
"mask_u": mask_u,
|
|
784
|
+
"mask_v": mask_v,
|
|
779
785
|
"straddle": straddle,
|
|
780
786
|
}
|
|
781
787
|
|
|
@@ -1073,6 +1079,10 @@ def _to_yaml(forcing_object, filepath: Union[str, Path]) -> None:
|
|
|
1073
1079
|
|
|
1074
1080
|
grid_yaml_data = {**parent_grid_yaml_data, **child_grid_yaml_data}
|
|
1075
1081
|
|
|
1082
|
+
# Ensure forcing_object.source.path is a string (convert if it's a pathlib object)
|
|
1083
|
+
if hasattr(forcing_object, "source") and "path" in forcing_object.source:
|
|
1084
|
+
forcing_object.source["path"] = str(forcing_object.source["path"])
|
|
1085
|
+
|
|
1076
1086
|
# Step 2: Get ROMS Tools version
|
|
1077
1087
|
# Fetch the version of the 'roms-tools' package for inclusion in the YAML header
|
|
1078
1088
|
try:
|
|
@@ -19,7 +19,7 @@ import logging
|
|
|
19
19
|
def test_boundary_forcing_creation(boundary_forcing_fixture, request):
|
|
20
20
|
"""Test the creation of the BoundaryForcing object."""
|
|
21
21
|
|
|
22
|
-
fname = download_test_data("GLORYS_coarse_test_data.nc")
|
|
22
|
+
fname = Path(download_test_data("GLORYS_coarse_test_data.nc"))
|
|
23
23
|
boundary_forcing = request.getfixturevalue(boundary_forcing_fixture)
|
|
24
24
|
assert boundary_forcing.start_time == datetime(2021, 6, 29)
|
|
25
25
|
assert boundary_forcing.end_time == datetime(2021, 6, 30)
|
|
@@ -59,7 +59,9 @@ def test_boundary_forcing_creation(boundary_forcing_fixture, request):
|
|
|
59
59
|
def test_boundary_forcing_creation_with_bgc(boundary_forcing_fixture, request):
|
|
60
60
|
"""Test the creation of the BoundaryForcing object."""
|
|
61
61
|
|
|
62
|
-
fname_bgc =
|
|
62
|
+
fname_bgc = Path(
|
|
63
|
+
download_test_data("CESM_regional_coarse_test_data_climatology.nc")
|
|
64
|
+
)
|
|
63
65
|
boundary_forcing = request.getfixturevalue(boundary_forcing_fixture)
|
|
64
66
|
|
|
65
67
|
assert boundary_forcing.start_time == datetime(2021, 6, 29)
|
|
@@ -103,7 +105,7 @@ def test_unsuccessful_boundary_forcing_creation_with_1d_fill(use_dask):
|
|
|
103
105
|
hc=250.0, # critical depth
|
|
104
106
|
)
|
|
105
107
|
|
|
106
|
-
fname = download_test_data("GLORYS_coarse_test_data.nc")
|
|
108
|
+
fname = Path(download_test_data("GLORYS_coarse_test_data.nc"))
|
|
107
109
|
|
|
108
110
|
with pytest.raises(ValueError, match="consists entirely of NaNs"):
|
|
109
111
|
|
|
@@ -138,7 +140,7 @@ def test_boundary_divided_by_land_warning(caplog, use_dask):
|
|
|
138
140
|
nx=5, ny=5, size_x=500, size_y=500, center_lon=-10, center_lat=65, rot=0
|
|
139
141
|
)
|
|
140
142
|
|
|
141
|
-
fname = download_test_data("GLORYS_coarse_test_data.nc")
|
|
143
|
+
fname = Path(download_test_data("GLORYS_coarse_test_data.nc"))
|
|
142
144
|
|
|
143
145
|
with caplog.at_level(logging.WARNING):
|
|
144
146
|
BoundaryForcing(
|
|
@@ -158,7 +160,7 @@ def test_1d_and_2d_fill_coincide_if_no_land(use_dask):
|
|
|
158
160
|
# this grid lies entirely over open ocean
|
|
159
161
|
grid = Grid(nx=5, ny=5, size_x=300, size_y=300, center_lon=-5, center_lat=65, rot=0)
|
|
160
162
|
|
|
161
|
-
fname = download_test_data("GLORYS_coarse_test_data.nc")
|
|
163
|
+
fname = Path(download_test_data("GLORYS_coarse_test_data.nc"))
|
|
162
164
|
|
|
163
165
|
kwargs = {
|
|
164
166
|
"grid": grid,
|
|
@@ -26,7 +26,7 @@ def test_initial_conditions_creation(ic_fixture, request):
|
|
|
26
26
|
assert ic.ini_time == datetime(2021, 6, 29)
|
|
27
27
|
assert ic.source == {
|
|
28
28
|
"name": "GLORYS",
|
|
29
|
-
"path": download_test_data("GLORYS_coarse_test_data.nc"),
|
|
29
|
+
"path": Path(download_test_data("GLORYS_coarse_test_data.nc")),
|
|
30
30
|
"climatology": False,
|
|
31
31
|
}
|
|
32
32
|
assert isinstance(ic.ds, xr.Dataset)
|
|
@@ -83,7 +83,7 @@ def test_initial_conditions_missing_physics_path(example_grid, use_dask):
|
|
|
83
83
|
# Test initialization with missing 'name' in bgc_source
|
|
84
84
|
def test_initial_conditions_missing_bgc_name(example_grid, use_dask):
|
|
85
85
|
|
|
86
|
-
fname = download_test_data("GLORYS_coarse_test_data.nc")
|
|
86
|
+
fname = Path(download_test_data("GLORYS_coarse_test_data.nc"))
|
|
87
87
|
with pytest.raises(
|
|
88
88
|
ValueError, match="`bgc_source` must include a 'name' if it is provided."
|
|
89
89
|
):
|
|
@@ -99,7 +99,7 @@ def test_initial_conditions_missing_bgc_name(example_grid, use_dask):
|
|
|
99
99
|
# Test initialization with missing 'path' in bgc_source
|
|
100
100
|
def test_initial_conditions_missing_bgc_path(example_grid, use_dask):
|
|
101
101
|
|
|
102
|
-
fname = download_test_data("GLORYS_coarse_test_data.nc")
|
|
102
|
+
fname = Path(download_test_data("GLORYS_coarse_test_data.nc"))
|
|
103
103
|
with pytest.raises(
|
|
104
104
|
ValueError, match="`bgc_source` must include a 'path' if it is provided."
|
|
105
105
|
):
|
|
@@ -115,7 +115,7 @@ def test_initial_conditions_missing_bgc_path(example_grid, use_dask):
|
|
|
115
115
|
# Test default climatology value
|
|
116
116
|
def test_initial_conditions_default_climatology(example_grid, use_dask):
|
|
117
117
|
|
|
118
|
-
fname = download_test_data("GLORYS_coarse_test_data.nc")
|
|
118
|
+
fname = Path(download_test_data("GLORYS_coarse_test_data.nc"))
|
|
119
119
|
|
|
120
120
|
initial_conditions = InitialConditions(
|
|
121
121
|
grid=example_grid,
|
|
@@ -130,8 +130,8 @@ def test_initial_conditions_default_climatology(example_grid, use_dask):
|
|
|
130
130
|
|
|
131
131
|
def test_initial_conditions_default_bgc_climatology(example_grid, use_dask):
|
|
132
132
|
|
|
133
|
-
fname = download_test_data("GLORYS_coarse_test_data.nc")
|
|
134
|
-
fname_bgc = download_test_data("CESM_regional_test_data_one_time_slice.nc")
|
|
133
|
+
fname = Path(download_test_data("GLORYS_coarse_test_data.nc"))
|
|
134
|
+
fname_bgc = Path(download_test_data("CESM_regional_test_data_one_time_slice.nc"))
|
|
135
135
|
|
|
136
136
|
initial_conditions = InitialConditions(
|
|
137
137
|
grid=example_grid,
|
|
@@ -174,7 +174,7 @@ def test_successful_initialization_with_regional_data(grid_fixture, request, use
|
|
|
174
174
|
start_time = datetime(2020, 1, 31)
|
|
175
175
|
end_time = datetime(2020, 2, 2)
|
|
176
176
|
|
|
177
|
-
fname = download_test_data("ERA5_regional_test_data.nc")
|
|
177
|
+
fname = Path(download_test_data("ERA5_regional_test_data.nc"))
|
|
178
178
|
|
|
179
179
|
grid = request.getfixturevalue(grid_fixture)
|
|
180
180
|
|
|
@@ -235,7 +235,7 @@ def test_nan_detection_initialization_with_regional_data(
|
|
|
235
235
|
start_time = datetime(2020, 1, 31)
|
|
236
236
|
end_time = datetime(2020, 2, 2)
|
|
237
237
|
|
|
238
|
-
fname = download_test_data("ERA5_regional_test_data.nc")
|
|
238
|
+
fname = Path(download_test_data("ERA5_regional_test_data.nc"))
|
|
239
239
|
|
|
240
240
|
grid = request.getfixturevalue(grid_fixture)
|
|
241
241
|
|
|
@@ -264,7 +264,7 @@ def test_no_longitude_intersection_initialization_with_regional_data(
|
|
|
264
264
|
start_time = datetime(2020, 1, 31)
|
|
265
265
|
end_time = datetime(2020, 2, 2)
|
|
266
266
|
|
|
267
|
-
fname = download_test_data("ERA5_regional_test_data.nc")
|
|
267
|
+
fname = Path(download_test_data("ERA5_regional_test_data.nc"))
|
|
268
268
|
|
|
269
269
|
for use_coarse_grid in [True, False]:
|
|
270
270
|
with pytest.raises(
|
|
@@ -304,7 +304,7 @@ def test_successful_initialization_with_global_data(grid_fixture, request, use_d
|
|
|
304
304
|
start_time = datetime(2020, 1, 31)
|
|
305
305
|
end_time = datetime(2020, 2, 2)
|
|
306
306
|
|
|
307
|
-
fname = download_test_data("ERA5_global_test_data.nc")
|
|
307
|
+
fname = Path(download_test_data("ERA5_global_test_data.nc"))
|
|
308
308
|
|
|
309
309
|
grid = request.getfixturevalue(grid_fixture)
|
|
310
310
|
|
|
@@ -353,8 +353,8 @@ def test_nans_filled_in(grid_that_straddles_dateline, use_dask):
|
|
|
353
353
|
start_time = datetime(2020, 1, 31)
|
|
354
354
|
end_time = datetime(2020, 2, 2)
|
|
355
355
|
|
|
356
|
-
fname = download_test_data("ERA5_regional_test_data.nc")
|
|
357
|
-
fname_bgc = download_test_data("CESM_surface_global_test_data_climatology.nc")
|
|
356
|
+
fname = Path(download_test_data("ERA5_regional_test_data.nc"))
|
|
357
|
+
fname_bgc = Path(download_test_data("CESM_surface_global_test_data_climatology.nc"))
|
|
358
358
|
|
|
359
359
|
for use_coarse_grid in [True, False]:
|
|
360
360
|
sfc_forcing = SurfaceForcing(
|
|
@@ -417,12 +417,12 @@ def test_time_attr(bgc_surface_forcing):
|
|
|
417
417
|
(
|
|
418
418
|
"bgc_surface_forcing",
|
|
419
419
|
False,
|
|
420
|
-
download_test_data("CESM_surface_global_test_data.nc"),
|
|
420
|
+
Path(download_test_data("CESM_surface_global_test_data.nc")),
|
|
421
421
|
),
|
|
422
422
|
(
|
|
423
423
|
"bgc_surface_forcing_from_climatology",
|
|
424
424
|
True,
|
|
425
|
-
download_test_data("CESM_surface_global_test_data_climatology.nc"),
|
|
425
|
+
Path(download_test_data("CESM_surface_global_test_data_climatology.nc")),
|
|
426
426
|
),
|
|
427
427
|
],
|
|
428
428
|
)
|
|
@@ -67,7 +67,7 @@ def grid_that_straddles_180_degree_meridian():
|
|
|
67
67
|
)
|
|
68
68
|
def test_successful_initialization_with_global_data(grid_fixture, request, use_dask):
|
|
69
69
|
|
|
70
|
-
fname = download_test_data("TPXO_global_test_data.nc")
|
|
70
|
+
fname = Path(download_test_data("TPXO_global_test_data.nc"))
|
|
71
71
|
|
|
72
72
|
grid = request.getfixturevalue(grid_fixture)
|
|
73
73
|
|
|
@@ -94,7 +94,7 @@ def test_successful_initialization_with_regional_data(
|
|
|
94
94
|
grid_that_lies_within_bounds_of_regional_tpxo_data, use_dask
|
|
95
95
|
):
|
|
96
96
|
|
|
97
|
-
fname = download_test_data("TPXO_regional_test_data.nc")
|
|
97
|
+
fname = Path(download_test_data("TPXO_regional_test_data.nc"))
|
|
98
98
|
|
|
99
99
|
tidal_forcing = TidalForcing(
|
|
100
100
|
grid=grid_that_lies_within_bounds_of_regional_tpxo_data,
|
|
@@ -122,7 +122,7 @@ def test_unsuccessful_initialization_with_regional_data_due_to_nans(
|
|
|
122
122
|
grid_that_is_out_of_bounds_of_regional_tpxo_data, use_dask
|
|
123
123
|
):
|
|
124
124
|
|
|
125
|
-
fname = download_test_data("TPXO_regional_test_data.nc")
|
|
125
|
+
fname = Path(download_test_data("TPXO_regional_test_data.nc"))
|
|
126
126
|
|
|
127
127
|
with pytest.raises(ValueError, match="NaN values found"):
|
|
128
128
|
TidalForcing(
|
|
@@ -141,7 +141,7 @@ def test_unsuccessful_initialization_with_regional_data_due_to_no_overlap(
|
|
|
141
141
|
grid_fixture, request, use_dask
|
|
142
142
|
):
|
|
143
143
|
|
|
144
|
-
fname = download_test_data("TPXO_regional_test_data.nc")
|
|
144
|
+
fname = Path(download_test_data("TPXO_regional_test_data.nc"))
|
|
145
145
|
|
|
146
146
|
grid = request.getfixturevalue(grid_fixture)
|
|
147
147
|
|
|
@@ -158,7 +158,7 @@ def test_unsuccessful_initialization_with_regional_data_due_to_no_overlap(
|
|
|
158
158
|
|
|
159
159
|
def test_insufficient_number_of_consituents(grid_that_straddles_dateline, use_dask):
|
|
160
160
|
|
|
161
|
-
fname = download_test_data("TPXO_global_test_data.nc")
|
|
161
|
+
fname = Path(download_test_data("TPXO_global_test_data.nc"))
|
|
162
162
|
|
|
163
163
|
with pytest.raises(ValueError, match="The dataset contains fewer"):
|
|
164
164
|
TidalForcing(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: roms-tools
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2.0
|
|
4
4
|
Summary: Tools for running and analysing UCLA-ROMS simulations
|
|
5
5
|
Author-email: Nora Loose <nora.loose@gmail.com>, Thomas Nicholas <tom@cworthy.org>
|
|
6
6
|
License: Apache-2
|
|
@@ -2,35 +2,35 @@ ci/environment.yml,sha256=bwK5Lz4j44gY2ee2Edn3ftXnfvYbRUVvFXVJH7T-oro,198
|
|
|
2
2
|
roms_tools/__init__.py,sha256=UdCkky5JiiUlqPlG0MwQdhm6uxsY0bkDuaxi4xOB3Ls,846
|
|
3
3
|
roms_tools/utils.py,sha256=kMlVbaDcokPBqXN0307Dwt10Z8-qMcvbRLiDMX8fUpk,12230
|
|
4
4
|
roms_tools/setup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
-
roms_tools/setup/boundary_forcing.py,sha256=
|
|
6
|
-
roms_tools/setup/datasets.py,sha256
|
|
5
|
+
roms_tools/setup/boundary_forcing.py,sha256=VocsvG3g9hQxzYO9gdy2bxZAaJc9oQlT7hpurcAi71Y,43067
|
|
6
|
+
roms_tools/setup/datasets.py,sha256=-SI5EAwgGzZ8ChM1YKU9lNi-M4tRRqG5RefEyHZcQyQ,86167
|
|
7
7
|
roms_tools/setup/download.py,sha256=TgDC3TdE_njFGbPYJprAN8J1nYeOWFzavQhUfOGwAYk,5927
|
|
8
8
|
roms_tools/setup/fill.py,sha256=YQes_9uADZ-XZ6dBqXyvG7OAp7UrWhX-p3pR1gD6Od4,11120
|
|
9
9
|
roms_tools/setup/grid.py,sha256=hpECjTC8Bz3ysvabar7t7ZtsTanqxjvHtYHgnyFcVYQ,51293
|
|
10
|
-
roms_tools/setup/initial_conditions.py,sha256=
|
|
10
|
+
roms_tools/setup/initial_conditions.py,sha256=NuTOqig8navFJ6IysXwK5pKd2selkRWrFaiedtRqqiw,37059
|
|
11
11
|
roms_tools/setup/mask.py,sha256=IK2SrVnMJwZjE4jNFtzMQhp1c5c8SUO45OIpCIrNSis,3413
|
|
12
12
|
roms_tools/setup/nesting.py,sha256=CB9bGizmNaQ74niARyRf-p0lY7c3CPhXTfdenmbIPOQ,21013
|
|
13
13
|
roms_tools/setup/plot.py,sha256=Qs-JgHXQGfHcMg2cfn4TMYeDuJh2dMUgMMrndHr_jH4,12866
|
|
14
14
|
roms_tools/setup/regrid.py,sha256=OBlW-KnQfXmxSZ5MwNoroxU51sI8-3ZRQhEPX3maj1A,5173
|
|
15
15
|
roms_tools/setup/river_forcing.py,sha256=Ox61M_SNousC_FLwmBoR865oiTyisbvJb4bcEaJZfg4,27364
|
|
16
|
-
roms_tools/setup/surface_forcing.py,sha256
|
|
17
|
-
roms_tools/setup/tides.py,sha256=
|
|
16
|
+
roms_tools/setup/surface_forcing.py,sha256=-i2lAxv_vhjO2QQyWPfLg1mIIOx4N0VDmMUrkI1V0qQ,21409
|
|
17
|
+
roms_tools/setup/tides.py,sha256=EgsPsLY70ERB6q2w1DClRQZvSbX-i_Ypume01Ub_EYU,28257
|
|
18
18
|
roms_tools/setup/topography.py,sha256=pKf2EmUc85meKN5aDkN1fY2U3Zn5nn80RDqzaEfpvvw,13475
|
|
19
|
-
roms_tools/setup/utils.py,sha256=
|
|
19
|
+
roms_tools/setup/utils.py,sha256=1WzeRF8hf-00cnh2M73nsyvMQxDfHqXF2AMI947iyDk,46494
|
|
20
20
|
roms_tools/setup/vertical_coordinate.py,sha256=yw3L_ONELAZfOHwNvcyQaJ0Vqir05FRzFBd601eTLUM,2689
|
|
21
21
|
roms_tools/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
22
|
roms_tools/tests/test_utils.py,sha256=X16UHYzd8KmUgxBHJqmVP6cIHfOtScCdXPw905bgGMk,7966
|
|
23
23
|
roms_tools/tests/test_setup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
|
-
roms_tools/tests/test_setup/test_boundary_forcing.py,sha256=
|
|
24
|
+
roms_tools/tests/test_setup/test_boundary_forcing.py,sha256=izCr5zRLtCsbWa2jjEvuAP5Q941A_erDn1S3Ao5eXU0,14425
|
|
25
25
|
roms_tools/tests/test_setup/test_datasets.py,sha256=Pxh95V-x-EaemVm6F_T0TbtrEp4Lh1_OAaOxPwTLrfQ,16441
|
|
26
26
|
roms_tools/tests/test_setup/test_fill.py,sha256=gDHuM58d3ECQE317ZntChYt4hWCfo4eVhkW13NiZ1V4,3735
|
|
27
27
|
roms_tools/tests/test_setup/test_grid.py,sha256=oGRiM2mqKuQavlS0C52ambLURu64Yc7zwaKYQxt5tOk,14663
|
|
28
|
-
roms_tools/tests/test_setup/test_initial_conditions.py,sha256=
|
|
28
|
+
roms_tools/tests/test_setup/test_initial_conditions.py,sha256=IFEUgice0hWPKQkQg44d5CJNJ-Cli1vYCK8a0kVAcvM,11201
|
|
29
29
|
roms_tools/tests/test_setup/test_nesting.py,sha256=_LB_10XgGkQ6DmpHp5rgIWTEN6nR14aZY8B_ADX4cRQ,18525
|
|
30
30
|
roms_tools/tests/test_setup/test_regrid.py,sha256=NMzMkPHaFfO_9H0SbIpFL3VHlzhd71gUVLu81QmU-bs,1891
|
|
31
31
|
roms_tools/tests/test_setup/test_river_forcing.py,sha256=K0XoT8sIbqoFGyIkK6oPOPpihAJftXrcsymV2q5tD6o,12010
|
|
32
|
-
roms_tools/tests/test_setup/test_surface_forcing.py,sha256=
|
|
33
|
-
roms_tools/tests/test_setup/test_tides.py,sha256=
|
|
32
|
+
roms_tools/tests/test_setup/test_surface_forcing.py,sha256=oa_Nma8syqVw5_V3UHySIRCrJHdbunsmLXj4Fk7foaA,25000
|
|
33
|
+
roms_tools/tests/test_setup/test_tides.py,sha256=o5oY718nQg3cXuK7Ark0uOtkFF8KuJZI3wQcJwyz8O8,8577
|
|
34
34
|
roms_tools/tests/test_setup/test_topography.py,sha256=RlkQ_zaJzXi75Y5kRCtHA9JO93MRPlj7LNjXIICI9Mk,4969
|
|
35
35
|
roms_tools/tests/test_setup/test_utils.py,sha256=lVeeiEEk_nR0zdmAdRHMlkBUNrAZMiZFrHaLQNy_lPE,585
|
|
36
36
|
roms_tools/tests/test_setup/test_validation.py,sha256=suAkZkcxum5I7uUI2eIXxutLk6yQPtXOCSKrfSIMbN4,2294
|
|
@@ -1048,8 +1048,8 @@ roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Im/0.0.0,sha256=60jWZ
|
|
|
1048
1048
|
roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Re/.zarray,sha256=2P8kKjSgdw5-3udU-vGJ3bzhNuRn7fZmWN811qBJn34,357
|
|
1049
1049
|
roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Re/.zattrs,sha256=2z7WUPvCT9VfFs8VCBltFHLWgaGj1jcw3yZ4n0viLRg,197
|
|
1050
1050
|
roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Re/0.0.0,sha256=33Gl8otBmgqVarmAnZuEqTYS2_hVJUJh-iN1HzvaDuo,96
|
|
1051
|
-
roms_tools-2.
|
|
1052
|
-
roms_tools-2.
|
|
1053
|
-
roms_tools-2.
|
|
1054
|
-
roms_tools-2.
|
|
1055
|
-
roms_tools-2.
|
|
1051
|
+
roms_tools-2.2.0.dist-info/LICENSE,sha256=yiff76E4xRioW2bHhlPpyYpstmePQBx2bF8HhgQhSsg,11318
|
|
1052
|
+
roms_tools-2.2.0.dist-info/METADATA,sha256=ez12LSQgsVdNz-ujYb7B26bIgVYhDi35_ZJRjPYEpEI,4244
|
|
1053
|
+
roms_tools-2.2.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
1054
|
+
roms_tools-2.2.0.dist-info/top_level.txt,sha256=aAf4T4nYQSkay5iKJ9kmTjlDgd4ETdp9OSlB4sJdt8Y,19
|
|
1055
|
+
roms_tools-2.2.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|