Exemple #1
0
def test_append_with_new_field(tmpdir, format):
    grid = RasterModelGrid((3, 4))
    grid.add_full("elevation", 1.0, at="node")
    with tmpdir.as_cwd():
        to_netcdf(grid, "test.nc", format=format)
        grid.add_full("temperature", 2.0, at="node")
        to_netcdf(grid, "test.nc", format=format, mode="a", time=10.0)
Exemple #2
0
def test_add_full(at):
    grid = RasterModelGrid((4, 5))
    grid.add_full("temperature", 3, at=at)
    assert_array_equal(
        getattr(grid, "at_{0}".format(at))["temperature"],
        np.full(grid.number_of_elements(at), 3),
    )
Exemple #3
0
def test_append_with_new_field(tmpdir, format):
    grid = RasterModelGrid((3, 4))
    grid.add_full("elevation", 1.0, at="node")
    with tmpdir.as_cwd():
        to_netcdf(grid, "test.nc", format=format, time=0.0)
        grid.add_full("temperature", 2.0, at="node")
        to_netcdf(grid, "test.nc", format=format, mode="a", time=10.0)

        with xr.open_dataset("test.nc") as ds:
            assert sorted(ds.variables) == [
                "at_node:elevation",
                "at_node:temperature",
                "shape",
                "status_at_node",
                "time",
                "xy_of_lower_left",
                "xy_spacing",
            ]
            assert_array_equal(
                ds["at_node:temperature"],
                np.vstack([
                    np.full(grid.number_of_nodes, np.nan),
                    grid.at_node["temperature"]
                ]),
            )
            assert_array_equal(
                ds["at_node:elevation"],
                np.vstack(
                    [grid.at_node["elevation"], grid.at_node["elevation"]]),
            )
            assert_array_equal(ds["time"], [0.0, 10.0])
Exemple #4
0
def test_bad_filepath(tmpdir):
    grid = RasterModelGrid((3, 5))
    grid.add_full("bedrock_surface__elevation", 0.0, at="node")
    grid.add_full("topographic__elevation", 0.0, at="node")

    with pytest.raises(ValueError):
        SubsidenceTimeSeries(grid)

    with tmpdir.as_cwd():
        with pytest.raises(OSError):
            SubsidenceTimeSeries(grid, filepath="missing-file.csv")
Exemple #5
0
def test_with_and_without_time(tmpdir, format, mode):
    grid = RasterModelGrid((3, 4))
    grid.add_full("elevation", 1.0, at="node")
    with tmpdir.as_cwd():
        to_netcdf(grid, "test-without-time.nc", format=format, mode=mode)
        with xr.open_dataset("test-without-time.nc") as actual:
            assert "time" not in actual.dims
            assert "time" not in actual.variables
            assert actual["at_node:elevation"].dims == ("node",)

        to_netcdf(grid, "test-with-time.nc", format=format, time=10.0, mode=mode)
        with xr.open_dataset("test-with-time.nc") as actual:
            assert "time" in actual.dims
            assert "time" in actual.variables
            assert actual["time"] == [10.0]
            assert actual["at_node:elevation"].dims == ("time", "node")
Exemple #6
0
def test_constant_subsidence(tmpdir):
    grid = RasterModelGrid((3, 5))
    grid.add_full("bedrock_surface__elevation", 0.0, at="node")
    grid.add_full("topographic__elevation", 0.0, at="node")

    with tmpdir.as_cwd():
        with open("subsidence.csv", "w") as fp:
            fp.write("0.0,1.0\n5.0,1.0")
        subsidence = SubsidenceTimeSeries(grid, filepath="subsidence.csv")
        assert_array_equal(
            grid.at_node["bedrock_surface__increment_of_elevation"], 1.0)

        subsidence.run_one_step(dt=1.0)
        assert_array_equal(grid.at_node["bedrock_surface__elevation"], 1.0)

        subsidence.run_one_step(dt=1.0)
        assert_array_equal(grid.at_node["bedrock_surface__elevation"], 2.0)
Exemple #7
0
def test_append_with_and_without_time(tmpdir, format, mode, time0, time1):
    grid = RasterModelGrid((3, 4))
    grid.add_full("elevation", 1.0, at="node")
    with tmpdir.as_cwd():
        to_netcdf(grid, "test.nc", format=format, mode=mode, time=time0)
        to_netcdf(grid, "test.nc", format=format, mode="a", time=time1)

        time0 = np.nan if time0 is None else time0

        with xr.open_dataset("test.nc") as actual:
            assert "time" in actual.dims
            assert "time" in actual.variables
            assert_array_equal(
                actual["time"],
                [
                    np.nan if time0 is None else time0,
                    time0 + 1 if time1 is None else time1,
                ],
            )
Exemple #8
0
def test_linear_subsidence(tmpdir):
    grid = RasterModelGrid((3, 5))
    grid.add_full("bedrock_surface__elevation", 0.0, at="node")
    grid.add_full("topographic__elevation", 0.0, at="node")

    with tmpdir.as_cwd():
        with open("subsidence.csv", "w") as fp:
            fp.write("0.0,0.0\n4.0,40.0")
        subsidence = SubsidenceTimeSeries(grid, filepath="subsidence.csv")
        assert_array_equal(
            grid.at_node["bedrock_surface__increment_of_elevation"].reshape(
                (3, 5)),
            [
                [0.0, 10.0, 20.0, 30.0, 40.0],
                [0.0, 10.0, 20.0, 30.0, 40.0],
                [0.0, 10.0, 20.0, 30.0, 40.0],
            ],
        )

        subsidence.run_one_step(dt=1.0)
        assert_array_equal(
            grid.at_node["bedrock_surface__elevation"].reshape((3, 5)),
            [
                [0.0, 10.0, 20.0, 30.0, 40.0],
                [0.0, 10.0, 20.0, 30.0, 40.0],
                [0.0, 10.0, 20.0, 30.0, 40.0],
            ],
        )

        subsidence.run_one_step(dt=1.0)
        assert_array_equal(
            grid.at_node["bedrock_surface__elevation"].reshape((3, 5)),
            [
                [0.0, 20.0, 40.0, 60.0, 80.0],
                [0.0, 20.0, 40.0, 60.0, 80.0],
                [0.0, 20.0, 40.0, 60.0, 80.0],
            ],
        )