Exemplo n.º 1
0
def test_speed():

    # run speed in xroms
    xvar = xroms.speed(ds.u, ds.v, grid)

    # calculate own version of speed
    var = np.sqrt(u ** 2 + v ** 2)

    # these aren't identical because of grid shifting
    assert np.allclose(xvar.mean(), var.mean(), rtol=1e-2)
Exemplo n.º 2
0
def test_speed():

    acc = ds.xroms.speed

    assert np.allclose(acc, xroms.speed(ds.u, ds.v, grid))

    # also check attributes
    acc.name == acc.attrs["name"]
    acc.attrs["grid"] == ds.xroms.grid
    # cf-xarray: make sure all Axes and Coordinates available in output
    items = ["T", "X", "Y", "Z", "longitude", "latitude", "vertical", "time"]
    assert set(items).issubset(acc.cf.get_valid_keys())
Exemplo n.º 3
0
def test_KE():
    rho = xroms.density(temp, salt, z_rho)[:, np.newaxis, np.newaxis]
    s2 = (u ** 2 + v ** 2)[np.newaxis, :, :]
    KE = 0.5 * rho * s2

    # xroms
    s = xroms.speed(ds.u, ds.v, grid)
    assert np.allclose(
        xroms.to_grid(xroms.KE(ds.rho0, s), grid, hcoord="psi").mean(),
        KE.mean(),
        rtol=1e-2,
    )
Exemplo n.º 4
0
    def speed(self):
        """Calculate horizontal speed [m/s] from u and v components, on rho/rho grids.

        Notes
        -----
        speed = np.sqrt(u^2 + v^2)

        Uses 'extend' for horizontal boundary.

        See `xroms.speed` for full docstring.

        Example usage
        -------------
        >>> ds.xroms.speed
        """

        if "speed" not in self.ds:
            var = xroms.speed(self.ds.u,
                              self.ds.v,
                              self.grid,
                              hboundary="extend")
            self.ds["speed"] = var
        return self.ds.speed