예제 #1
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, ...])
예제 #2
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, ...])
예제 #3
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)