def test_write_from_dfsu_default_items_numbered(tmpdir): sourcefilename = os.path.join("tests", "testdata", "HD2D.dfsu") outfilename = os.path.join(tmpdir.dirname, "simple.dfsu") dfs = Dfsu(sourcefilename) ds = dfs.read([0, 1]) dfs.write(outfilename, ds.data) assert os.path.exists(outfilename) newdfs = Dfsu(outfilename) assert newdfs.items[0].name == "Item 1"
def test_interp2d_radius(): dfs = Dfsu("tests/testdata/wind_north_sea.dfsu") ds = dfs.read(items=["Wind speed"]) nt = ds.n_timesteps g = dfs.get_overset_grid(shape=(20, 10), buffer=-1e-2) interpolant = dfs.get_2d_interpolant(g.xy, extrapolate=True, n_nearest=1, radius=0.1) dsi = dfs.interp2d(ds, *interpolant) assert dsi.shape == (nt, 20 * 10) assert np.isnan(dsi[0][0][0])
def test_extract_top_layer_to_2d(tmpdir): filename = os.path.join("tests", "testdata", "oresund_sigma_z.dfsu") dfs = Dfsu(filename) top_ids = dfs.top_elements ds = dfs.read(elements=top_ids) outfilename = os.path.join(tmpdir, "toplayer.dfsu") dfs.write(outfilename, ds, elements=top_ids) newdfs = Dfsu(outfilename) assert os.path.exists(outfilename) assert newdfs.is_2d
def test_get_layer_elements(): filename = os.path.join("tests", "testdata", "oresund_sigma_z.dfsu") dfs = Dfsu(filename) elem_ids = dfs.get_layer_elements(0) assert np.all(elem_ids == dfs.top_elements) elem_ids = dfs.get_layer_elements(-1) assert elem_ids[5] == 23 elem_ids = dfs.get_layer_elements(1) assert elem_ids[5] == 8638 assert len(elem_ids) == 10 elem_ids = dfs.get_layer_elements([1, 3]) assert len(elem_ids) == 197 with pytest.raises(Exception): elem_ids = dfs.get_layer_elements(12)
def test_get_layers_2d_error(): dfs = Dfsu("tests/testdata/HD2D.dfsu") assert dfs.is_2d with pytest.raises(InvalidGeometry): dfs.get_layer_elements(0) with pytest.raises(InvalidGeometry): dfs.layer_ids with pytest.raises(InvalidGeometry): dfs.elem2d_ids with pytest.raises(InvalidGeometry): dfs.find_nearest_profile_elements(x=0, y=0)
def test_temporal_resample_by_reading_selected_timesteps(tmpdir): sourcefilename = os.path.join("tests", "testdata", "HD2D.dfsu") outfilename = os.path.join(tmpdir.dirname, "simple.dfsu") dfs = Dfsu(sourcefilename) nt = dfs.n_timesteps ds = dfs.read(time_steps=list(range(0, nt, 2))) dfs.write(outfilename, ds) assert os.path.exists(outfilename) newdfs = Dfsu(outfilename) assert pytest.approx(dfs.timestep) == newdfs.timestep / 2
def test_write_from_dfsu(tmpdir): sourcefilename = os.path.join("tests", "testdata", "HD2D.dfsu") outfilename = os.path.join(tmpdir.dirname, "simple.dfsu") dfs = Dfsu(sourcefilename) ds = dfs.read([0, 1]) dfs.write(outfilename, ds) assert dfs.start_time.hour == 7 assert os.path.exists(outfilename) newdfs = Dfsu(outfilename) assert dfs.start_time == newdfs.start_time assert dfs.timestep == newdfs.timestep assert dfs.end_time == newdfs.end_time
def test_write_from_dfsu_2_time_steps(tmpdir): sourcefilename = os.path.join("tests", "testdata", "HD2D.dfsu") outfilename = os.path.join(tmpdir.dirname, "simple.dfsu") dfs = Dfsu(sourcefilename) ds = dfs.read(time_steps=[0, 1]) assert ds.is_equidistant # Data with two time steps is per definition equidistant dfs.write(outfilename, ds) assert os.path.exists(outfilename) newdfs = Dfsu(outfilename) assert dfs.start_time == newdfs.start_time assert dfs.timestep == newdfs.timestep assert dfs.end_time != newdfs.end_time
def test_write_temporal_subset(tmpdir): sourcefilename = os.path.join("tests", "testdata", "HD2D.dfsu") outfilename = os.path.join(tmpdir.dirname, "simple.dfsu") dfs = Dfsu(sourcefilename) assert dfs.n_timesteps == 9 ds = dfs.read( ) # TODO read temporal subset with slice e.g. "1985-08-06 12:00": selds = ds["1985-08-06 12:00":] dfs.write(outfilename, selds) assert os.path.exists(outfilename) newdfs = Dfsu(outfilename) assert newdfs.start_time.hour == 12 assert newdfs.n_timesteps == 7
def test_get_overset_grid(): filename = os.path.join("tests", "testdata", "FakeLake.dfsu") dfs = Dfsu(filename) g = dfs.get_overset_grid() assert g.nx == 21 assert g.ny == 10 g = dfs.get_overset_grid(dx=0.2) assert g.dx == 0.2 assert g.dy == 0.2 g = dfs.get_overset_grid(dx=(0.4, 0.2)) assert g.dx == 0.4 assert g.dy == 0.2 g = dfs.get_overset_grid(shape=(5, 4)) assert g.nx == 5 assert g.ny == 4 g = dfs.get_overset_grid(shape=(None, 5)) assert g.nx == 11 assert g.ny == 5
def test_incremental_write_from_dfsu_context_manager(tmpdir): sourcefilename = os.path.join("tests", "testdata", "HD2D.dfsu") outfilename = os.path.join(tmpdir.dirname, "simple.dfsu") dfs = Dfsu(sourcefilename) nt = dfs.n_timesteps ds = dfs.read(time_steps=[0]) with dfs.write(outfilename, ds, keep_open=True) as f: for i in range(1, nt): ds = dfs.read(time_steps=[i]) f.append(ds) # dfs.close() # should be called automagically by context manager newdfs = Dfsu(outfilename) assert dfs.start_time == newdfs.start_time assert dfs.timestep == newdfs.timestep assert dfs.end_time == newdfs.end_time
def test_plot_2d(): filename = os.path.join("tests", "testdata", "HD2D.dfsu") dfs = Dfsu(filename) dfs.plot(cmap="plasma") assert True
def test_plot_dfsu_vertical_profile(): import matplotlib.pyplot as plt filename = os.path.join("tests", "testdata", "oresund_vertical_slice.dfsu") dfs = Dfsu(filename) time_step = 1 item_number = 1 data = dfs.read()[item_number][time_step, :] # defaults dfs.plot_vertical_profile(data) dfs.plot_vertical_profile(data, time_step, 0, 20) dfs.plot_vertical_profile( data, title="txt", label="txt", edge_color="0.3", cmin=0, cmax=20, cmap="plasma" ) _, ax = plt.subplots() dfs.plot_vertical_profile(data, ax=ax) assert True
def test_is_geo_LONGLAT(): filename = os.path.join("tests", "testdata", "wind_north_sea.dfsu") dfs = Dfsu() dfs.read(filename) assert dfs.is_geo is True
def test_is_geo_UTM(): filename = os.path.join("tests", "testdata", "HD2D.dfsu") dfs = Dfsu() dfs.read(filename) assert dfs.is_geo is False
def test_get_number_of_time_steps_with_input_arg(): filename = os.path.join("tests", "testdata", "HD2D.dfsu") dfs = Dfsu() dfs.read(filename, time_steps=[4]) assert dfs.get_number_of_time_steps() == 9
def test_get_number_of_time_steps(): filename = os.path.join("tests", "testdata", "HD2D.dfsu") dfs = Dfsu() dfs.read(filename) assert dfs.get_number_of_time_steps() == 9
def test_plot_dfsu_contour(): filename = os.path.join("tests", "testdata", "HD2D.dfsu") dfs = Dfsu(filename) dfs.plot(plot_type="contour", n_levels=5) assert True
def test_get_element_coords(): filename = os.path.join("tests", "testdata", "HD2D.dfsu") dfs = Dfsu(filename) ec = dfs.element_coordinates assert ec[1, 1] == pytest.approx(6906790.5928664245)
def test_plot_dfsu(): filename = os.path.join("tests", "testdata", "HD2D.dfsu") dfs = Dfsu(filename) data = dfs.read() dfs.plot(z=data[1][0, :], figsize=(3, 3)) assert True
def test_plot_3d(): filename = os.path.join("tests", "testdata", "oresund_sigma_z.dfsu") dfs = Dfsu(filename) dfs.plot() assert True
def test_find_nearest_profile_elements(): filename = os.path.join("tests", "testdata", "oresund_sigma_z.dfsu") dfs = Dfsu(filename) elem_ids = dfs.find_nearest_profile_elements(358337, 6196090) assert len(elem_ids) == 8 assert elem_ids[-1] == 3042
def test_get_element_area_UTM(): filename = os.path.join("tests", "testdata", "HD2D.dfsu") dfs = Dfsu(filename) areas = dfs.get_element_area() assert areas[0] == 4949.102548750438
def test_read_int_not_accepted(): filename = os.path.join("tests", "testdata", "HD2D.dfsu") with pytest.raises(Exception): dfs = Dfsu(filename, dtype=np.int)
def test_get_element_area_LONGLAT(): filename = os.path.join("tests", "testdata", "wind_north_sea.dfsu") dfs = Dfsu(filename) areas = dfs.get_element_area() assert areas[0] == 139524218.81411952
def test_get_element_area_3D(): filename = os.path.join("tests", "testdata", "oresund_sigma_z.dfsu") dfs = Dfsu(filename) areas = dfs.get_element_area() assert areas[0] == 350186.43530453625
def test_plot_dfsu_contourf_levels(): filename = os.path.join("tests", "testdata", "HD2D.dfsu") dfs = Dfsu(filename) dfs.plot(plot_type="contourf", levels=[-3, -1]) assert True
def test_element_table(): filename = os.path.join("tests", "testdata", "HD2D.dfsu") dfs = Dfsu(filename) eid = 31 nid = dfs.element_table[eid] assert nid == [32, 28, 23]
def test_plot_dfsu_arguments(): filename = os.path.join("tests", "testdata", "HD2D.dfsu") dfs = Dfsu(filename) data = dfs.read() dfs.plot(title="test", label="test", vmin=-23, vmax=23) assert True
def test_find_nearest_element_2d(): filename = os.path.join("tests", "testdata", "HD2D.dfsu") dfs = Dfsu(filename) elem_id = dfs.find_nearest_element(606200, 6905480) assert elem_id == 317