From ad81cfa05a25017fff183e5c6560316f1599699f Mon Sep 17 00:00:00 2001 From: Linlin Cui Date: Tue, 30 Sep 2025 16:28:58 +0000 Subject: [PATCH] update decimal precision for SPFH for different levels --- oper/utils/grib2writer.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/oper/utils/grib2writer.py b/oper/utils/grib2writer.py index 85038fa..2c0ddef 100644 --- a/oper/utils/grib2writer.py +++ b/oper/utils/grib2writer.py @@ -63,6 +63,18 @@ def create_grib2_message(self, var, da, lead, level=None): msg.typeOfEnsembleForecast = 3 msg.typeOfData = 4 + # update decScaleFactor for specific humidity + # 12 for [5000, 10000]Pa, 10 for [15000, ..., 40000]Pa, 8 for [50000, ..., 100000]Pa + if var == "specific_humidity": + if level >= 5000 and level <= 10000: + msg.decScaleFactor = 12 + elif level >= 15000 and level <= 40000: + msg.decScaleFactor = 10 + elif level >= 50000 and level <= 100000: + msg.decScaleFactor = 8 + else: + raise ValueError(f"level {level} Pa is not included in this model!") + # Set GRIB2 attributes unique to each iteration. msg.refDate = self.start_date msg.duration = duration