From 8eb2f7b00bca405bb7e2436bc49e7dbfda077bba Mon Sep 17 00:00:00 2001 From: Patrick Schurig Date: Tue, 27 Oct 2026 13:18:46 +0100 Subject: [PATCH] =?UTF-8?q?moteur=20:=20la=20coh=C3=A9rence=20avec=20le=20?= =?UTF-8?q?total=20ignore=20un=20manque=20sous=20le=20demi-watt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Un manque de 10⁻¹² W, arrondi de la somme des phases, changeait des décisions au douzième chiffre dans le scénario run de la preuve decisions, sans rien protéger. Co-Authored-By: Claude Opus 5.5 --- energyplugin/etm/types/drawcap.cpp | 4 +++- energyplugin/etm/types/drawcap.h | 7 ++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/energyplugin/etm/types/drawcap.cpp b/energyplugin/etm/types/drawcap.cpp index 54abcf4..45bcca0 100644 --- a/energyplugin/etm/types/drawcap.cpp +++ b/energyplugin/etm/types/drawcap.cpp @@ -98,7 +98,9 @@ QList tiragesCoherentsAvecLeTotal(const QList &parPhaseW, double importe += qMax(0.0, w); } const double manque = totalW - somme; - if (manque <= 0) + // Sous le demi-watt, c'est l'arrondi d'une somme de flottants, pas une lecture en retard : la + // corriger changerait des décisions au douzième chiffre sans rien protéger. + if (manque <= 0.5) return tirages; // les phases disent au moins ce que dit le total : rien à corriger for (double &w : tirages) w += importe > 0 ? manque * qMax(0.0, w) / importe : manque / tirages.size(); diff --git a/energyplugin/etm/types/drawcap.h b/energyplugin/etm/types/drawcap.h index b53ad32..6524b72 100644 --- a/energyplugin/etm/types/drawcap.h +++ b/energyplugin/etm/types/drawcap.h @@ -116,9 +116,10 @@ QString drawCapSourceCode(DrawCapSource s); * * \param parPhaseW Tirage lu sur chaque phase, en watts (import > 0, export < 0). * \param totalW Puissance totale du même compteur, en watts (import > 0). - * \return Les mêmes tirages si leur somme atteint le total. Sinon, le MANQUE (total − somme) est - * ajouté aux phases qui importent, au prorata de ce qu'elles lisent — ou à parts égales si - * aucune n'importe. Aucune valeur n'est jamais diminuée. Liste vide : rendue telle quelle. + * \return Les mêmes tirages si leur somme atteint le total, à un demi-watt près. Sinon, le + * MANQUE (total − somme) est ajouté aux phases qui importent, au prorata de ce qu'elles lisent + * — ou à parts égales si aucune n'importe. Aucune valeur n'est jamais diminuée. Liste vide : + * rendue telle quelle. * * \par Pourquoi * Les phases d'un compteur triphasé somment à son total : la phase la plus chargée porte AU MOINS