Skip to content

fix(mur): enduit isolant, interpolation de umur0 et doublage iti pour les dpe < 2.4 (#295) - #307

Merged
michaeldesigaud merged 1 commit into
mainfrom
fix/issue-295-murs-enduit-interpolation-doublage
Oct 15, 2026
Merged

michaeldesigaud merged 1 commit into
mainfrom
fix/issue-295-murs-enduit-interpolation-doublage

Conversation

@elliot-redfroggy

Copy link
Copy Markdown
Collaborator

Contexte

Corrige #295. Tribu reçoit dp_mur déjà calculé : ce sont les logiciels qui fixent la convention. Les trois correctifs sont en bug_for_bug uniquement, dans src/3.2.1_mur.js (méthode 3CL §3.2.1).

Correctifs

  • MUR1, enduit isolant (verdict de l'expert : GARDER, §3.2.1, Umur0 = 1/(1/U0 + 0,7)) : certains logiciels exportent l'Umur0 avant enduit, mais un Umur qui intègre l'enduit. Si l'Umur du DPE vaut min(2,5 ; Umur0 avec enduit), l'Umur0 d'origine n'est plus conservé.
    Cas vérifié : 2495E2914184U, dp_mur 2 106,3, contre 3 880,5 sur main (ADEME : 2 106,3).
    • Garde sur le matériau : l'enduit ne vaut que pour les parois anciennes (« pierres, terre, mur à colombage, brique ancienne », §3.2.1), soit MATERIAUX_PAROI_ANCIENNE = [2, 3, 4, 5, 6, 7, 8, 9, 21]. Les matériaux « inconnu » (1), blocs béton (12) et béton banché (13) sont exclus, ce que confirment les données : avec enduit=1, l'ADEME ne l'applique jamais à ces matériaux (Umur = Umur0, ou doublage seul). La garde est neutre sur le corpus : sur 545 DPE ayant un mur non ancien avec enduit=1, dp_mur est identique avec et sans garde.
  • MUR2, interpolation d'Umur0 (GARDER, ambiguïté signalée : le §3.2.1.2 ne parle pas d'interpolation) : umur0Interpole() interpole linéairement entre les deux colonnes d'épaisseur encadrantes. La valeur interpolée n'est retenue que si l'Umur0 du DPE lui correspond, avec une tolérance de 0,006, fixée empiriquement.
    Cas vérifié : 2463E3034751T, dp_mur 13 902,5 (= ADEME), contre 13 414,7 sur main.
  • MUR3, doublage + ITI/ITE pour les DPE < 2.4 (GARDER, ambiguïté signalée) : l'exclusion du cumul ([MURS] Le doublage NE doit PAS être cumulé à une isolation #146) ne valait que pour les versions ≥ 2.4. Pour un DPE < 2.4 en type d'isolation 3/4/6/7/8, si l'Umur0 du DPE vaut min(2,5 ; Umur0 nu), le doublage n'est pas appliqué.
    Cas vérifié : 2375E0900891Q, dp_mur 17,8 (= ADEME), contre 11,9 sur main.

Mesure sur les 9 corpus (contre origin/main 9537813)

Critère OK : 6 grandeurs obligatoires à ±5 %. dp_mur est considéré aligné à moins de 3 %.

Corpus DPE KO→OK OK→KO net dp_mur aligné + dp_mur aligné −
corpus_dpe 9 971 21 1 +20 106 0
appartement chauffage collectif 2025 10 000 0 0 0 0 0
appartement chauffage individuel 2025 10 000 0 0 0 0 0
immeuble chauffage collectif 9 814 1 0 +1 3 0
immeuble chauffage individuel 9 998 0 0 0 3 0
immeuble chauffage mixte 9 616 20 4 +16 51 0
individuel à partir d'un DPE immeuble 2026 9 993 0 0 0 0 0
logement individuel 2025 9 992 0 0 0 0 0
maison individuelle 2025 9 999 0 0 0 0 0
Total 89 383 42 5 +37 163 0

Les 5 OK→KO (2260E0128239Q, 2244E1175277S, 2262E2749533S, 2376E0207768C, 2376E0213386E) sont des compensations : dp_mur y devient exactement égal à l'ADEME, et le dépassement de conso_ch (5,4 à 6,4 %) vient d'autres écarts que le mur sous-évalué masquait jusqu'ici.

Non-régression

  • src/3.2.1_mur.spec.js : 35 tests ajoutés (MUR1 avec et sans Umur enduit, matériau ancien ou non ; MUR2 interpolation retenue, non retenue, hors bornes, épaisseur non finie ; MUR3 v < 2.4 avec et sans correspondance, v ≥ 2.4 inchangé). Couverture de 3.2.1_mur.js : 100 %.
  • Suite vitest complète identique à main : mêmes 35 échecs préexistants (fixtures absentes).
  • ESLint et Prettier OK.

Closes #295

… les dpe < 2.4 (#295)

Trois correctifs de compatibilité (bug_for_bug) sur le calcul de Umur0
(méthode 3CL §3.2.1) :

- MUR1 enduit isolant : l'Umur0 exporté par certains logiciels est la
  valeur avant enduit alors que l'Umur exporté intègre l'enduit. Si
  l'Umur du DPE vaut min(2,5 ; Umur0 avec enduit), l'enduit est appliqué.
  Garde : uniquement pour les parois anciennes (pierres, terre,
  colombage, briques pleines, bois, autre matériau traditionnel ancien).
- MUR2 interpolation : umur0Interpole() interpole Umur0 entre les deux
  colonnes d'épaisseur encadrantes ; retenue si l'Umur0 du DPE
  correspond (tolérance empirique 0,006).
- MUR3 doublage + ITI/ITE pour DPE < 2.4 : si l'Umur0 du DPE vaut
  min(2,5 ; Umur0 nu), le doublage n'est pas appliqué.

Closes #295
@michaeldesigaud
michaeldesigaud self-requested a review October 15, 2026 20:59
@michaeldesigaud michaeldesigaud added the bug Something isn't working label Oct 15, 2026
@michaeldesigaud
michaeldesigaud merged commit 8d4ccf8 into main Oct 15, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Murs : enduit isolant, interpolation de U0 (béton banché), doublage + ITI pour DPE < 2.4

2 participants