Ejemplo n.º 1
0
    def test_unstagger(self):

        wf = get_demo_file("wrf_cropped.nc")
        nc = netCDF4.Dataset(wf)

        ref = nc["PH"][:]
        ref = 0.5 * (ref[:, :-1, ...] + ref[:, 1:, ...])

        # Own constructor
        v = wrftools.Unstaggerer(nc["PH"])
        assert_allclose(v[:], ref)
        assert_allclose(v[0:2, 2:12, ...], ref[0:2, 2:12, ...])
        assert_allclose(v[:, 2:12, ...], ref[:, 2:12, ...])
        assert_allclose(v[0:2, 2:12, 5:10, 15:17], ref[0:2, 2:12, 5:10, 15:17])
        assert_allclose(v[1:2, 2:, 5:10, 15:17], ref[1:2, 2:, 5:10, 15:17])
        assert_allclose(v[1:2, :-2, 5:10, 15:17], ref[1:2, :-2, 5:10, 15:17])
        assert_allclose(v[1:2, 2:-4, 5:10, 15:17], ref[1:2, 2:-4, 5:10, 15:17])
        assert_allclose(v[[0, 2], ...], ref[[0, 2], ...])
        assert_allclose(v[..., [0, 2]], ref[..., [0, 2]])
        assert_allclose(v[0, ...], ref[0, ...])

        # Under WRF
        nc = WRF(wf)
        assert_allclose(nc.get_vardata("PH"), ref)
        nc.set_period(1, 2)
        assert_allclose(nc.get_vardata("PH"), ref[1:3, ...])
Ejemplo n.º 2
0
    def test_ncl_diagvars(self):

        wf = get_demo_file('wrf_cropped.nc')
        ncl_out = get_demo_file('wrf_cropped_ncl.nc')

        w = WRF(wf)

        nc = netCDF4.Dataset(ncl_out)
        ref = nc.variables['TK'][:]
        tot = w.get_vardata('TK')
        assert_allclose(ref, tot, rtol=1e-6)

        ref = nc.variables['SLP'][:]
        tot = w.get_vardata('SLP')
        assert_allclose(ref, tot, rtol=1e-6)
Ejemplo n.º 3
0
    def test_ncl_diagvars(self):

        wf = get_demo_file("wrf_cropped.nc")
        ncl_out = get_demo_file("wrf_cropped_ncl.nc")

        w = WRF(wf)

        nc = netCDF4.Dataset(ncl_out)
        ref = nc.variables["TK"][:]
        tot = w.get_vardata("TK")
        assert_allclose(ref, tot, rtol=1e-6)

        ref = nc.variables["SLP"][:]
        tot = w.get_vardata("SLP")
        assert_allclose(ref, tot, rtol=1e-6)
Ejemplo n.º 4
0
    def test_ncl_diagvars_compressed(self):

        wf = get_demo_file('wrf_cropped_compressed.nc')
        ncl_out = get_demo_file('wrf_cropped_ncl.nc')

        w = WRF(wf)

        with netCDF4.Dataset(ncl_out) as nc:
            nc.set_auto_mask(False)

            ref = nc.variables['TK'][:]
            tot = w.get_vardata('TK')
            assert_allclose(ref, tot, rtol=1e-5)

            ref = nc.variables['SLP'][:]
            tot = w.get_vardata('SLP')
            assert_allclose(ref, tot, rtol=1e-4)
Ejemplo n.º 5
0
    def test_unstagger(self):

        wf = get_demo_file('wrf_cropped.nc')
        with netCDF4.Dataset(wf) as nc:
            nc.set_auto_mask(False)

            ref = nc['PH'][:]
            ref = 0.5 * (ref[:, :-1, ...] + ref[:, 1:, ...])

            # Own constructor
            v = wrftools.Unstaggerer(nc['PH'])
            assert_allclose(v[:], ref)
            assert_allclose(v[0:2, 2:12, ...], ref[0:2, 2:12, ...])
            assert_allclose(v[:, 2:12, ...], ref[:, 2:12, ...])
            assert_allclose(v[0:2, 2:12, 5:10, 15:17], ref[0:2, 2:12, 5:10,
                                                           15:17])
            assert_allclose(v[1:2, 2:, 5:10, 15:17], ref[1:2, 2:, 5:10, 15:17])
            assert_allclose(v[1:2, :-2, 5:10, 15:17], ref[1:2, :-2, 5:10,
                                                          15:17])
            assert_allclose(v[1:2, 2:-4, 5:10, 15:17], ref[1:2, 2:-4, 5:10,
                                                           15:17])
            assert_allclose(v[[0, 2], ...], ref[[0, 2], ...])
            assert_allclose(v[..., [0, 2]], ref[..., [0, 2]])
            assert_allclose(v[0, ...], ref[0, ...])

            # Under WRF
            nc = WRF(wf)
            assert_allclose(nc.get_vardata('PH'), ref)
            nc.set_period(1, 2)
            assert_allclose(nc.get_vardata('PH'), ref[1:3, ...])
Ejemplo n.º 6
0
    def test_as_xarray(self):

        f = get_demo_file('era_interim_tibet.nc')
        d = GeoNetcdf(f)
        t2 = d.get_vardata('t2m', as_xarray=True)

        stat_lon = 91.1
        stat_lat = 31.1
        d.set_subset(corners=((stat_lon, stat_lat), (stat_lon, stat_lat)))
        t2_sub = d.get_vardata('t2m', as_xarray=True)
        np.testing.assert_allclose(t2_sub - t2, np.zeros(4).reshape((4, 1, 1)))

        d.set_period(t0='2012-06-01 06:00:00', t1='2012-06-01 12:00:00')
        t2_sub = d.get_vardata('t2m', as_xarray=True)
        np.testing.assert_allclose(t2_sub - t2, np.zeros(2).reshape((2, 1, 1)))

        wf = get_demo_file('wrf_cropped.nc')
        d = WRF(wf)
        tk = d.get_vardata('TK', as_xarray=True)
Ejemplo n.º 7
0
    def test_unstagger_compressed(self):

        wf = get_demo_file('wrf_cropped.nc')
        wfc = get_demo_file('wrf_cropped_compressed.nc')

        # Under WRF
        nc = WRF(wf)
        ncc = WRF(wfc)
        assert_allclose(nc.get_vardata('PH'), ncc.get_vardata('PH'), rtol=.003)
        nc.set_period(1, 2)
        ncc.set_period(1, 2)
        assert_allclose(nc.get_vardata('PH'), ncc.get_vardata('PH'), rtol=.003)
Ejemplo n.º 8
0
    def test_diagnostic_vars(self):

        d = WRF(get_demo_file('wrf_tip_d1.nc'))
        d2 = GeoNetcdf(get_demo_file('wrf_tip_d2.nc'))
        self.assertTrue('T2C' in d.variables)

        ref = d.get_vardata('T2')
        tot = d.get_vardata('T2C') + 273.15
        np.testing.assert_allclose(ref, tot)

        d.set_roi(grid=d2.grid)
        d.set_subset(toroi=True)
        ref = d.get_vardata('T2')
        tot = d.get_vardata('T2C') + 273.15

        self.assertEqual(tot.shape[-1] * 3, d2.grid.nx)
        self.assertEqual(tot.shape[-2] * 3, d2.grid.ny)
        np.testing.assert_allclose(ref, tot)

        d = WRF(get_demo_file('wrf_tip_d1.nc'))
        ref = d.variables['T2'][:]
        d.set_subset(margin=-5)
        tot = d.get_vardata('T2')
        assert_array_equal(ref.shape[1] - 10, tot.shape[1])
        assert_array_equal(ref.shape[2] - 10, tot.shape[2])
        assert_array_equal(ref[:, 5:-5, 5:-5], tot)
Ejemplo n.º 9
0
    def test_diagnostic_vars(self):

        d = WRF(get_demo_file("wrf_tip_d1.nc"))
        d2 = GeoNetcdf(get_demo_file("wrf_tip_d2.nc"))
        self.assertTrue("T2C" in d.variables)

        ref = d.get_vardata("T2")
        tot = d.get_vardata("T2C") + 273.15
        np.testing.assert_allclose(ref, tot)

        d.set_roi(grid=d2.grid)
        d.set_subset(toroi=True)
        ref = d.get_vardata("T2")
        tot = d.get_vardata("T2C") + 273.15

        self.assertEqual(tot.shape[-1] * 3, d2.grid.nx)
        self.assertEqual(tot.shape[-2] * 3, d2.grid.ny)
        np.testing.assert_allclose(ref, tot)

        d = WRF(get_demo_file("wrf_tip_d1.nc"))
        ref = d.variables["T2"][:]
        d.set_subset(margin=-5)
        tot = d.get_vardata("T2")
        assert_array_equal(ref.shape[1] - 10, tot.shape[1])
        assert_array_equal(ref.shape[2] - 10, tot.shape[2])
        assert_array_equal(ref[:, 5:-5, 5:-5], tot)