From a3a6e75ff6eca4b34515af79b34fb0de2c3c8954 Mon Sep 17 00:00:00 2001 From: stefaniereuter <98333239+stefaniereuter@users.noreply.github.com> Date: Tue, 7 Jan 2025 12:52:48 +0100 Subject: [PATCH] Add missing to Encoding of Levtype iceLayerOnWater (#44) --- src/multio/action/encode/GribEncoder.cc | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/multio/action/encode/GribEncoder.cc b/src/multio/action/encode/GribEncoder.cc index 87c79f62..925bf0d8 100644 --- a/src/multio/action/encode/GribEncoder.cc +++ b/src/multio/action/encode/GribEncoder.cc @@ -277,6 +277,16 @@ void setSoilLayerTypeOfLevel(GribEncoder& g, const std::string& typeOfLevel, lon g.setValue("scaledValueOfSecondFixedSurface", level); } +void setMissingFixedSurface(GribEncoder& g, const std::string& typeOfLevel, long level) { + g.setValue("typeOfLevel", typeOfLevel); + + g.setMissing(glossary().scaleFactorOfFirstFixedSurface); + g.setMissing(glossary().scaledValueOfFirstFixedSurface); + g.setMissing(glossary().scaleFactorOfSecondFixedSurface); + g.setMissing(glossary().scaledValueOfSecondFixedSurface); + +} + using TypeOfLevelSetter = std::function; const std::map typeOfLevelSetters{ @@ -287,9 +297,9 @@ const std::map typeOfLevelSetters{ {"lowCloudLayer", &setLevelUnrelatedTypeOfLevel}, {"highCloudLayer", &setLevelUnrelatedTypeOfLevel}, {"meanSea", &setLevelUnrelatedTypeOfLevel}, + {"iceLayerOnWater", &setMissingFixedSurface}, }; - template QueriedMarsKeys setMarsKeys(GribEncoder& g, const Dict& md) { QueriedMarsKeys ret; @@ -849,6 +859,7 @@ void GribEncoder::setOceanMetadata(message::Metadata& md) { setValue("scaleFactorOfFirstFixedSurface", 0l); } + std::string gridType; const auto searchGridType = md.find(glossary().gridType); if (searchGridType != md.end() && searchGridType->second.get() == "unstructured_grid") {