From 8c26651ae58de649981bea8b063a5eb4434c5826 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 5 Jun 2026 12:08:13 +0000 Subject: [PATCH 1/2] Initial plan From 57ae8da0bd61410e4021f3a16322205b891af1ff Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 5 Jun 2026 12:13:21 +0000 Subject: [PATCH 2/2] fix: enforce cloud layer spacing in cloud-levels --- himan-scripts/cloud-levels.lua | 51 +++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/himan-scripts/cloud-levels.lua b/himan-scripts/cloud-levels.lua index 078f615b..2a37971f 100644 --- a/himan-scripts/cloud-levels.lua +++ b/himan-scripts/cloud-levels.lua @@ -11,6 +11,22 @@ local sct = 0.35 local bkn = 0.55 local dz = 300 +local function IsBknLayer(cov) + return not IsMissing(cov) and cov >= bkn +end + +local function DropLayer(bases, tops, covs, idx) + for j = idx, 2 do + bases[j] = bases[j + 1] + tops[j] = tops[j + 1] + covs[j] = covs[j + 1] + end + + bases[3] = missing + tops[3] = missing + covs[3] = missing +end + local ceiling = luatool:Fetch(current_time, current_level, ceil, current_forecast_type) maxHdata= {} @@ -356,6 +372,40 @@ for i = 1, #base1 do end end +for i = 1, #base1 do + local bases = { base1[i], base2[i], base3[i] } + local tops = { top1[i], top2[i], top3[i] } + local covs = { cov1[i], cov2[i], cov3[i] } + local layer_changed = true + + while layer_changed do + layer_changed = false + + for j = 1, 2 do + if not IsMissing(bases[j]) and not IsMissing(bases[j + 1]) and bases[j + 1] - bases[j] < dz then + if IsBknLayer(covs[j]) or not IsBknLayer(covs[j + 1]) then + DropLayer(bases, tops, covs, j + 1) + else + DropLayer(bases, tops, covs, j) + end + + layer_changed = true + break + end + end + end + + base1[i] = bases[1] + base2[i] = bases[2] + base3[i] = bases[3] + top1[i] = tops[1] + top2[i] = tops[2] + top3[i] = tops[3] + cov1[i] = covs[1] + cov2[i] = covs[2] + cov3[i] = covs[3] +end + -- write output p = param("CL1-FT") result:SetValues(base1) @@ -386,4 +436,3 @@ p = param("CLCOV3-0TO1") result:SetValues(cov3) result:SetParam(p) luatool:WriteToFile(result) -