Lock UTCI to Standard = Grass
This commit is contained in:
fraxle
2026-08-02 17:59:17 +01:00
parent ffb5ed1d7d
commit 2035edad23
4 changed files with 24 additions and 13 deletions
+14 -3
View File
@@ -86,9 +86,20 @@ export function buildHourlyRows({ forecast, airQuality, location, vehicleType, v
// concreteT is now stamped in the two-pass section below (thermal lag).
// vehicleT is stamped in the two-pass section below (thermal lag).
const eh = vaporPressureHpa(Ta, RH);
// UTCI: the standard, unmodified benchmark. Computed from the raw
// open-ground observation only - NO Solar Model anywhere in it. Its whole
// job is to be the fixed reference SunSoak is read against, so it must
// not move when the user switches environment; if both numbers shifted
// together the comparison would say nothing. Only the SunSoak family
// (utciAdj, Shade, Tmrt) responds to the Solar Model.
const TmrtStd = calcTmrt(Ta, dir, dif, glob, elev);
const utci = utciApprox(Ta, TmrtStd, va, eh);
// SunSoak: same peer-reviewed polynomial, every input shifted by the
// active Solar Model (air temp via taOffset, radiation via dir/dif/glob
// factors), then the rain/snow soak penalty on top.
const Tmrt = calcTmrt(TaEnv, dirEnv, difEnv, globEnv, elev);
const utci = utciApprox(TaEnv, Tmrt, va, eh);
const utciAdj = utci + precipPenalty(precip, snow, va);
const utciEnv = utciApprox(TaEnv, Tmrt, va, eh);
const utciAdj = utciEnv + precipPenalty(precip, snow, va);
// Shade air temp: what a thermometer in this Solar Model's typical shade
// (building shadow, beach umbrella, canopy...) would read. Shares
// SunSoak's TaEnv baseline and env-reduced radiation, so the two stay
@@ -757,7 +768,7 @@ export function computeGlanceSummary(todayRows, profile, variant, skinType, cols
label: 'Pet at home',
value: peakIndoor ? `${Math.round(peakIndoor.indoorT)}° at ${hhmm(peakIndoor.iso)}` : '-',
alert: !!(peakIndoor && peakIndoor.indoorT >= 26),
grp: 'felt',
grp: 'ambient',
}] : []),
...(show('vehicleT') ? [{
icon: '🧒',