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, ...])
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)
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, ...])
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)
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)
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)
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)
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)