Skip to content

Commit

Permalink
Correct rounding of vertical coordinates.
Browse files Browse the repository at this point in the history
  • Loading branch information
pp-mo committed Jun 15, 2020
1 parent 2e99443 commit cba5330
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 5 deletions.
6 changes: 3 additions & 3 deletions iris_grib/_save_rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -932,7 +932,7 @@ def set_fixed_surfaces(cube, grib, full3d_cube=None):
output_v = v_coord.units.convert(v_coord.points[0], output_unit)
if output_v - abs(output_v):
warnings.warn("Vertical level encoding problem: scaling required.")
output_v = int(output_v)
output_v = int(round(output_v))

gribapi.grib_set(grib, "typeOfFirstFixedSurface", grib_v_code)
gribapi.grib_set(grib, "scaleFactorOfFirstFixedSurface", 0)
Expand All @@ -950,9 +950,9 @@ def set_fixed_surfaces(cube, grib, full3d_cube=None):
gribapi.grib_set(grib, "scaleFactorOfFirstFixedSurface", 0)
gribapi.grib_set(grib, "scaleFactorOfSecondFixedSurface", 0)
gribapi.grib_set(grib, "scaledValueOfFirstFixedSurface",
int(output_v[0]))
int(round(output_v[0])))
gribapi.grib_set(grib, "scaledValueOfSecondFixedSurface",
int(output_v[1]))
int(round(output_v[1])))

if hybrid_factory is not None:
# Need to record ALL the level coefficents in a 'PV' vector.
Expand Down
4 changes: 2 additions & 2 deletions iris_grib/tests/unit/save_rules/test_set_fixed_surfaces.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ def test_bounded_altitude_feet(self):
set_fixed_surfaces(cube, grib)
self.assertEqual(
gribapi.grib_get_double(grib, "scaledValueOfFirstFixedSurface"),
304.0)
305.0) # precise ~304.8
self.assertEqual(
gribapi.grib_get_double(grib, "scaledValueOfSecondFixedSurface"),
609.0)
610.0) # precise ~609.6
self.assertEqual(
gribapi.grib_get_long(grib, "typeOfFirstFixedSurface"),
102)
Expand Down

0 comments on commit cba5330

Please sign in to comment.