From 643487ce07c3e79270430e1d6ba4f70ba97bb019 Mon Sep 17 00:00:00 2001 From: lbdreyer Date: Mon, 1 Jun 2020 00:13:18 +0100 Subject: [PATCH] add temp data casting workaround --- iris_grib/_save_rules.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/iris_grib/_save_rules.py b/iris_grib/_save_rules.py index e3c352932..f3eeb940a 100644 --- a/iris_grib/_save_rules.py +++ b/iris_grib/_save_rules.py @@ -1489,6 +1489,13 @@ def data_section(cube, grib): # Enable missing values in the grib message. gribapi.grib_set(grib, "bitmapPresent", 1) gribapi.grib_set_double(grib, "missingValue", fill_value) + + # A segmentation fault is raised by `gribapi.grib_set_double_array` if it + # tries to cast large data to float64. As a temporary fix we cast the data + # upfront + # TODO: remove the `astype` command once eccodes (gribapi) has been fixed. + if data.dtype != np.float64: + data = data.astype(np.float64) gribapi.grib_set_double_array(grib, "values", data.flatten()) # todo: check packing accuracy?