@open3cl/engine 1.11.2 → 1.11.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/10_besoin_fr.spec.js +1 -1
- package/10_clim.js +1 -1
- package/10_clim.spec.js +5 -9
- package/11_besoin_ecs.spec.js +1 -1
- package/11_ecs.js +2 -1
- package/11_ecs.spec.js +2 -2
- package/11_nadeq.js +1 -0
- package/11_nadeq.spec.js +1 -1
- package/11_rdim_ecs_individuelle_unique.js +78 -0
- package/11_rdim_ecs_individuelle_unique.spec.js +136 -0
- package/12.4_pac.js +5 -3
- package/12.4_pac.spec.js +10 -18
- package/13.2_generateur_combustion.js +19 -16
- package/13.2_generateur_combustion.spec.js +10 -10
- package/13.2_generateur_combustion_bouilleur.js +5 -2
- package/13.2_generateur_combustion_bouilleur.spec.js +1 -1
- package/13.2_generateur_combustion_ch.js +8 -7
- package/13.2_generateur_combustion_ch.spec.js +7 -7
- package/13.2_generateur_combustion_chaudiere.js +5 -2
- package/13.2_generateur_combustion_chaudiere.spec.js +2 -2
- package/13.2_generateur_combustion_pdim.js +6 -6
- package/13.2_generateur_combustion_pdim.spec.js +1 -1
- package/13.2_generateur_combustion_pn.spec.js +1 -1
- package/13.2_generateur_pac.js +4 -1
- package/13.2_generateur_pac.spec.js +1 -1
- package/13_rendement_distribution_ecs.spec.js +1 -1
- package/14_generateur_ecs.js +2 -1
- package/14_generateur_ecs.spec.js +4 -4
- package/15_conso_aux.js +19 -17
- package/15_conso_aux.spec.js +8 -8
- package/16.2_production_enr.js +4 -3
- package/16.2_production_enr.spec.js +1 -1
- package/16_conso_eclairage.spec.js +1 -1
- package/2021_04_13_confort_ete.spec.js +1 -1
- package/2021_04_13_qualite_isolation.js +1 -1
- package/2021_04_13_qualite_isolation.spec.js +2 -2
- package/3.1_b.spec.js +1 -1
- package/3.2.1_mur.js +10 -9
- package/3.2.1_mur.spec.js +11 -19
- package/3.2.2_plancher_bas.js +4 -3
- package/3.2.2_plancher_bas.spec.js +10 -20
- package/3.2.3_plancher_haut.js +1 -1
- package/3.2.3_plancher_haut.spec.js +2 -2
- package/3.3.1.4_porte.js +1 -1
- package/3.3.1.4_porte.spec.js +2 -2
- package/3.3_baie_vitree.js +2 -2
- package/3.3_baie_vitree.spec.js +3 -3
- package/3.4_pont_thermique.js +6 -4
- package/3.4_pont_thermique.spec.js +7 -7
- package/3_deperdition.js +1 -0
- package/3_deperdition.spec.js +3 -3
- package/4_ventilation.js +2 -2
- package/4_ventilation.spec.js +1 -1
- package/5_conso_ventilation.spec.js +1 -1
- package/6.1_apport_gratuit.spec.js +2 -2
- package/6.2_surface_sud_equivalente.js +12 -9
- package/6.2_surface_sud_equivalente.spec.js +3 -3
- package/7_inertie.js +7 -4
- package/7_inertie.spec.js +1 -1
- package/8_intermittence.spec.js +1 -1
- package/9_besoin_ch.js +5 -3
- package/9_besoin_ch.spec.js +3 -3
- package/9_chauffage.js +12 -11
- package/9_chauffage.spec.js +7 -7
- package/9_conso_ch.spec.js +3 -3
- package/9_emetteur_ch.js +5 -5
- package/9_emetteur_ch.spec.js +1 -1
- package/9_generateur_ch.js +16 -13
- package/9_generateur_ch.spec.js +6 -6
- package/README.md +19 -19
- package/apport_et_besoin.spec.js +1 -1
- package/conso.js +18 -14
- package/conso.spec.js +3 -3
- package/core/assets/domain/synchronize-assets.js +2 -0
- package/core/assets/domain/synchronize-c1-tables.js +2 -0
- package/core/assets/domain/synchronize-dpe-ges-limit-values-tables.js +2 -0
- package/core/assets/domain/synchronize-enum-tables.js +2 -0
- package/core/assets/domain/synchronize-solicitations-tables.js +2 -0
- package/core/assets/domain/synchronize-valeur-tables.js +6 -0
- package/core/file/infrastructure/adapter/csv-parser.store.js +2 -1
- package/dpe-sanitizer.service.js +1 -0
- package/engine.js +11 -2
- package/engine.spec.js +23 -2
- package/enums.d.ts +1257 -0
- package/features/dpe/domain/models/baie-ets.model.ts +8 -11
- package/features/dpe/domain/models/baie-vitree.model.ts +28 -96
- package/features/dpe/domain/models/climatisation.model.ts +13 -23
- package/features/dpe/domain/models/dpe-xsd.generated.ts +2797 -0
- package/features/dpe/domain/models/dpe.model.ts +105 -181
- package/features/dpe/domain/models/ets.model.ts +10 -18
- package/features/dpe/domain/models/installation-chauffage.model.ts +92 -99
- package/features/dpe/domain/models/installation-ecs.model.ts +45 -77
- package/features/dpe/domain/models/mur.model.ts +10 -38
- package/features/dpe/domain/models/plancher.model.ts +22 -63
- package/features/dpe/domain/models/pont-thermique.model.ts +10 -20
- package/features/dpe/domain/models/porte.model.ts +10 -30
- package/features/dpe/domain/models/production-elec-enr.model.ts +13 -27
- package/features/dpe/domain/models/sortie.model.ts +32 -176
- package/features/dpe/domain/models/type-generateur.model.js +4 -3
- package/features/dpe/domain/models/type-habitation.model.js +8 -6
- package/features/dpe/domain/models/type-stockage.model.js +4 -3
- package/features/dpe/domain/models/type-ventilation.model.js +4 -3
- package/features/dpe/domain/models/ventilation.model.ts +15 -25
- package/features/dpe/infrastructure/ch/chTv.store.js +2 -2
- package/features/dpe/infrastructure/ecs/ecsTv.store.js +3 -3
- package/features/dpe/infrastructure/enveloppe/baieVitreeTv.store.js +1 -1
- package/features/dpe/infrastructure/froid/frTv.store.js +3 -3
- package/features/dpe/infrastructure/froid/frTv.store.spec.js +1 -1
- package/features/dpe/infrastructure/tv.store.js +1 -1
- package/features/engine/domain/apport_et_besoin/apport-et-besoin.service.js +3 -0
- package/features/engine/domain/apport_et_besoin/apport_gratuit/apport-gratuit.service.js +3 -1
- package/features/engine/domain/apport_et_besoin/ch/besoin-ch.service.js +3 -1
- package/features/engine/domain/apport_et_besoin/ch/perte-ch-recup.service.js +9 -3
- package/features/engine/domain/apport_et_besoin/ch/perte-ch-recup.service.spec.js +1 -1
- package/features/engine/domain/apport_et_besoin/ecs/besoin-ecs.service.js +2 -1
- package/features/engine/domain/apport_et_besoin/ecs/perte-ecs-recup.service.js +4 -1
- package/features/engine/domain/apport_et_besoin/froid/besoin-froid.service.js +3 -1
- package/features/engine/domain/apport_et_besoin/surface-sud-equivalente.service.js +7 -2
- package/features/engine/domain/apport_et_besoin/surface-sud-equivalente.service.spec.js +1 -1
- package/features/engine/domain/ch/emetteur-ch.service.js +3 -1
- package/features/engine/domain/ch/emetteur-ch.service.spec.js +1 -1
- package/features/engine/domain/ch/generateur-ch.service.js +4 -1
- package/features/engine/domain/ch/generateur-ch.service.spec.js +3 -3
- package/features/engine/domain/ch/installation-ch.service.js +2 -0
- package/features/engine/domain/conso/conso.service.js +2 -0
- package/features/engine/domain/conso/froid/conso-froid.service.js +5 -1
- package/features/engine/domain/contexte.builder.js +2 -0
- package/features/engine/domain/ecs/generateur-ecs.service.js +1 -0
- package/features/engine/domain/ecs/installation-ecs.service.js +3 -0
- package/features/engine/domain/engine.service.js +1 -0
- package/features/engine/domain/enveloppe/baie_vitree/deperdition-baie-vitree.service.js +4 -1
- package/features/engine/domain/enveloppe/deperdition-enveloppe.service.js +3 -0
- package/features/engine/domain/enveloppe/deperdition.service.js +8 -4
- package/features/engine/domain/enveloppe/espace_tampon/espace-tampon.service.js +4 -1
- package/features/engine/domain/enveloppe/mur/deperdition-mur.service.js +3 -1
- package/features/engine/domain/enveloppe/plancher_bas/deperdition-plancher-bas.service.js +3 -1
- package/features/engine/domain/enveloppe/plancher_bas/deperdition-plancher-bas.service.spec.js +2 -2
- package/features/engine/domain/enveloppe/plancher_haut/deperdition-plancher-haut.service.js +4 -2
- package/features/engine/domain/enveloppe/pont_thermique/deperdition-pont-thermique.service.js +9 -1
- package/features/engine/domain/enveloppe/pont_thermique/deperdition-pont-thermique.service.spec.js +1 -1
- package/features/engine/domain/enveloppe/porte/deperdition-porte.service.js +3 -1
- package/features/engine/domain/enveloppe/ventilation/deperdition-ventilation.service.js +3 -1
- package/features/engine/domain/enveloppe/ventilation/deperdition-ventilation.service.spec.js +1 -1
- package/features/engine/domain/logement/nadeq.service.js +1 -1
- package/features/engine/domain/logement/nadeq.service.spec.js +1 -1
- package/features/engine/domain/models/contexte.model.ts +2 -2
- package/features/normalizer/domain/dpe-normalizer.service.js +1 -0
- package/ficheTechnique.js +4 -2
- package/globals.d.ts +14 -0
- package/package.json +3 -2
- package/preprocessor/index.js +1 -0
- package/tv.d.ts +759 -0
- package/tvs.d.ts +2 -7
- package/utils.js +8 -6
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @import { GenerateurChauffageDE, GenerateurChauffageDI } from './features/dpe/domain/models/installation-chauffage.model.js' */
|
|
1
2
|
import enums from './enums.js';
|
|
2
3
|
import { bug_for_bug_compat, requestInput, requestInputID, tv } from './utils.js';
|
|
3
4
|
|
|
@@ -18,7 +19,7 @@ const coef_pond = {
|
|
|
18
19
|
* Coefficients de conversion PCS / PCI.
|
|
19
20
|
* Le propane et le butane sont des GPL : k = 1.09 (et non 1.11, valeur du gaz naturel), comme
|
|
20
21
|
* dans le moteur de référence CSTB (Tribu).
|
|
21
|
-
* @see
|
|
22
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.2
|
|
22
23
|
*/
|
|
23
24
|
export const K = {
|
|
24
25
|
électricité: 1,
|
|
@@ -84,7 +85,7 @@ export const TOLERANCE_TEMP_FONC = 0.01;
|
|
|
84
85
|
* 13.2.1.5 Chaudières basse température et condensation
|
|
85
86
|
* « Si l'année d'installation des émetteurs est inconnue, prendre l'année de construction du
|
|
86
87
|
* bâtiment. »
|
|
87
|
-
* @see
|
|
88
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.5
|
|
88
89
|
*
|
|
89
90
|
* @param ac {number} année de construction du bâtiment
|
|
90
91
|
* @return {string} période d'installation des émetteurs
|
|
@@ -148,7 +149,7 @@ export function temp_fonc_pour_periode(de, em_ch, periodeParDefaut) {
|
|
|
148
149
|
* - plusieurs : celle de l'année de construction si elle en fait partie, sinon la plus récente ;
|
|
149
150
|
* - aucune : null (repli sur l'année de construction, valeurs hors tables).
|
|
150
151
|
*
|
|
151
|
-
* @see
|
|
152
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.5
|
|
152
153
|
*
|
|
153
154
|
* @param tempFonc30Dpe {number} temp_fonc_30 d'origine du DPE
|
|
154
155
|
* @param tempFonc100Dpe {number} temp_fonc_100 d'origine du DPE
|
|
@@ -203,7 +204,7 @@ export function deductionPeriodeEmetteursActive(tempFonc30Dpe, tempFonc100Dpe, e
|
|
|
203
204
|
* d'installation des émetteurs non exportée (issue #220) ; les valeurs retenues proviennent
|
|
204
205
|
* toujours des tables (tv_temp_fonc_30_id / tv_temp_fonc_100_id renseignés).
|
|
205
206
|
*
|
|
206
|
-
* @see
|
|
207
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.5
|
|
207
208
|
*/
|
|
208
209
|
export function tv_temp_fonc_30_100(di, de, du, em_ch, ac) {
|
|
209
210
|
const tempFonc30Dpe = di.temp_fonc_30;
|
|
@@ -281,9 +282,9 @@ function Tch_xfinal(x, Cdimref) {
|
|
|
281
282
|
* une division en place ramenait QP0 à ~0 (÷ 100 à chaque appel), et le terme 0,45 × QP0 du
|
|
282
283
|
* rendement de génération en était absent.
|
|
283
284
|
*
|
|
284
|
-
* @see
|
|
285
|
-
* @param de {
|
|
286
|
-
* @param di {
|
|
285
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1
|
|
286
|
+
* @param de {GenerateurChauffageDE}
|
|
287
|
+
* @param di {GenerateurChauffageDI}
|
|
287
288
|
* @param k {number} rapport PCI/PCS de l'énergie
|
|
288
289
|
* @returns {number}
|
|
289
290
|
*/
|
|
@@ -68,7 +68,7 @@ const RG_DEP_AIR_CHAUD = 0.874622228362935;
|
|
|
68
68
|
/**
|
|
69
69
|
* Pertes à l'arrêt QP0 (kW sur PCS) : pour les générateurs d'air chaud, la valeur de la table 13.2
|
|
70
70
|
* est en % de Pn et doit être ramenée en W.
|
|
71
|
-
* @see
|
|
71
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1
|
|
72
72
|
*/
|
|
73
73
|
describe('qp0PcsKw - pertes à l’arrêt sur PCS', () => {
|
|
74
74
|
test('générateur à air chaud : qp0 ramené en W (÷ 100) puis en kW PCS', () => {
|
|
@@ -94,7 +94,7 @@ describe('qp0PcsKw - pertes à l’arrêt sur PCS', () => {
|
|
|
94
94
|
|
|
95
95
|
/**
|
|
96
96
|
* 13.2.1.1 - Températures de fonctionnement à 30 % et 100 % de charge.
|
|
97
|
-
* @see
|
|
97
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.1
|
|
98
98
|
*/
|
|
99
99
|
describe('tv_temp_fonc_30_100 - températures de fonctionnement', () => {
|
|
100
100
|
function emetteur(overrides = {}) {
|
|
@@ -266,7 +266,7 @@ describe('tv_temp_fonc_30_100 - températures de fonctionnement', () => {
|
|
|
266
266
|
* Mode strict : « Si l'année d'installation des émetteurs est inconnue, prendre l'année de
|
|
267
267
|
* construction du bâtiment. » En mode bug_for_bug_compat uniquement, la période est retrouvée à
|
|
268
268
|
* partir des temp_fonc_30 / temp_fonc_100 d'origine stockées dans le DPE (règle de l'expert).
|
|
269
|
-
* @see
|
|
269
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.5
|
|
270
270
|
*/
|
|
271
271
|
describe('tv_temp_fonc_30_100 - période des émetteurs absente (issue #220)', () => {
|
|
272
272
|
/**
|
|
@@ -555,7 +555,7 @@ describe('tempDistributionChPourTempFonc', () => {
|
|
|
555
555
|
|
|
556
556
|
/**
|
|
557
557
|
* 13.2.1.2 - Rendement de génération des chaudières (rg PCI).
|
|
558
|
-
* @see
|
|
558
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.2
|
|
559
559
|
*/
|
|
560
560
|
describe('calc_generateur_combustion_ch - rendement de génération', () => {
|
|
561
561
|
test('chaudière gaz standard : rendement PCI et rendement dépensier', () => {
|
|
@@ -822,7 +822,7 @@ describe('calc_generateur_combustion_ch - rendement de génération', () => {
|
|
|
822
822
|
* Pveil = 150 W, Tfonc30/100 = 56/70, Cdimref = 0.05 / TchFinal(Ch_5)).
|
|
823
823
|
* Comme QP0, la puissance de veilleuse est exprimée sur PCS (Pveil × k) dans le dénominateur.
|
|
824
824
|
* Avant correctif (Pveil sur PCI) : rg = 0.740607866698453 (Cch −0,42 %).
|
|
825
|
-
* @see
|
|
825
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.2
|
|
826
826
|
*/
|
|
827
827
|
test('autotest État MI4-0-1 : rg identique à Tribu (Pveil exprimée sur PCS)', () => {
|
|
828
828
|
const di = {
|
|
@@ -902,7 +902,7 @@ describe('calc_generateur_combustion_ch - rendement de génération', () => {
|
|
|
902
902
|
* Issue #39 : la présence de veilleuse lue dans la fiche technique (de.presence_veilleuse)
|
|
903
903
|
* prime sur la valeur intermédiaire pveilleuse du DPE. Sans fiche, comportement inchangé.
|
|
904
904
|
* Tribu : Pveil1 = 0 si Is_veilleuse != oui (DPE.Core/Calcul_generateur.cs).
|
|
905
|
-
* @see
|
|
905
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.4
|
|
906
906
|
*/
|
|
907
907
|
describe('présence de veilleuse (issue #39)', () => {
|
|
908
908
|
const di = (extra) => ({
|
|
@@ -985,7 +985,7 @@ describe('calc_generateur_combustion_ch - rendement de génération', () => {
|
|
|
985
985
|
|
|
986
986
|
/**
|
|
987
987
|
* Coefficient de conversion PCS / PCI : le propane et le butane sont des GPL (k = 1.09).
|
|
988
|
-
* @see
|
|
988
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.2
|
|
989
989
|
*/
|
|
990
990
|
describe('K - coefficient PCS / PCI', () => {
|
|
991
991
|
test('propane et butane : même coefficient que le gpl (1.09), distinct du gaz naturel', () => {
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/** @import { FullDpe } from './features/dpe/domain/models/dpe.model.js' */
|
|
2
|
+
/** @import { GenerateurChauffageDE } from './features/dpe/domain/models/installation-chauffage.model.js' */
|
|
3
|
+
/** @import { GenerateurEcsDE } from './features/dpe/domain/models/installation-ecs.model.js' */
|
|
1
4
|
import getFicheTechnique from './ficheTechnique.js';
|
|
2
5
|
|
|
3
6
|
/**
|
|
@@ -91,7 +94,7 @@ export function getChaudiereFioulDefautId(dpe, type, typeSaisiId) {
|
|
|
91
94
|
/**
|
|
92
95
|
* Pour les générateurs "Autre système à combustion", les calculs sont faits comme pour les chaudières standard
|
|
93
96
|
* @param dpe {FullDpe}
|
|
94
|
-
* @param de {
|
|
97
|
+
* @param de {GenerateurChauffageDE|GenerateurEcsDE}
|
|
95
98
|
* @param type {'ch' | 'ecs'}
|
|
96
99
|
*/
|
|
97
100
|
export function updateGenerateurChaudieres(dpe, de, type) {
|
|
@@ -169,7 +172,7 @@ export function updateGenerateurChaudieres(dpe, de, type) {
|
|
|
169
172
|
* - Pour un système 'autre système à combustion fioul' granulés installé en 2000, on prendra la chaudière gaz standard 2001-2015
|
|
170
173
|
* @param dpe {FullDpe}
|
|
171
174
|
* @param ids
|
|
172
|
-
* @param de {
|
|
175
|
+
* @param de {GenerateurChauffageDE|GenerateurEcsDE}
|
|
173
176
|
* @param type {'ch' | 'ecs'}
|
|
174
177
|
*/
|
|
175
178
|
function updateGenerateurChaudiere(dpe, ids, de, type) {
|
|
@@ -20,7 +20,7 @@ beforeEach(() => {
|
|
|
20
20
|
/**
|
|
21
21
|
* 13.2 - Les "autres systèmes à combustion" sont assimilés à des chaudières standard
|
|
22
22
|
* de la période correspondante.
|
|
23
|
-
* @see
|
|
23
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2
|
|
24
24
|
*/
|
|
25
25
|
describe('updateGenerateurChaudieres - substitution par une chaudière équivalente', () => {
|
|
26
26
|
test('type non concerné : aucune substitution, pas de champ previous', () => {
|
|
@@ -108,7 +108,7 @@ describe('findIdForAnnee - sélection de la période', () => {
|
|
|
108
108
|
/**
|
|
109
109
|
* Système collectif par défaut (ch 119 / ecs 84) : chaudière atmosphérique mixte standard
|
|
110
110
|
* datant de la construction du bâtiment, énergie fioul.
|
|
111
|
-
* @see
|
|
111
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §17.2.1.1
|
|
112
112
|
*/
|
|
113
113
|
describe('getChaudiereFioulDefautId - chaudière fioul par défaut selon l’année de construction', () => {
|
|
114
114
|
const dpe = (annee) => ({
|
|
@@ -173,13 +173,13 @@ export function valeurChaudiereMurale(valeur) {
|
|
|
173
173
|
* majoritairement murales), première sinon.
|
|
174
174
|
*
|
|
175
175
|
* @param params {{
|
|
176
|
-
* pch: number, Pch (W), déjà proratisée à la surface desservie
|
|
177
|
-
* volumeStockage?: number|string, Vs (L) de la production d'ECS assurée par le générateur
|
|
178
|
-
* usageEcs?: boolean, le générateur produit de l'ECS (usage ECS ou mixte)
|
|
179
|
-
* usageChauffage?: boolean, le générateur assure le chauffage (défaut true)
|
|
176
|
+
* pch: number, // Pch (W), déjà proratisée à la surface desservie
|
|
177
|
+
* volumeStockage?: number|string, // Vs (L) de la production d'ECS assurée par le générateur
|
|
178
|
+
* usageEcs?: boolean, // le générateur produit de l'ECS (usage ECS ou mixte)
|
|
179
|
+
* usageChauffage?: boolean, // le générateur assure le chauffage (défaut true)
|
|
180
180
|
* libelleTypeGenerateur?: string,
|
|
181
|
-
* murale?: boolean, pose murale (undefined si inconnue)
|
|
182
|
-
* anneeInstallation?: number année d'installation (undefined si inconnue)
|
|
181
|
+
* murale?: boolean, // pose murale (undefined si inconnue)
|
|
182
|
+
* anneeInstallation?: number // année d'installation (undefined si inconnue)
|
|
183
183
|
* }}
|
|
184
184
|
* @returns {number} Pn (W)
|
|
185
185
|
*/
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Module de calcul pur (aucune dépendance) : pas de mock nécessaire.
|
|
15
|
-
* @see
|
|
15
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.2.4 Calcul des puissances nominales (p.90-91)
|
|
16
16
|
*/
|
|
17
17
|
describe('puissanceEcs - puissance de dimensionnement ECS selon le volume de stockage', () => {
|
|
18
18
|
test('production instantanée (Vs = 0) : Pecs = 21 kW', () => {
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
* Module pur (aucune dépendance importée) : les caractéristiques du générateur sont fournies par
|
|
15
15
|
* une fonction injectée, remplacée ici par un double de test déterministe.
|
|
16
16
|
*
|
|
17
|
-
* @see
|
|
17
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2 et §17.2.1 (virtualisation)
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
20
|
/**
|
package/13.2_generateur_pac.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
/** @import { FullDpe } from './features/dpe/domain/models/dpe.model.js' */
|
|
2
|
+
/** @import { GenerateurChauffageDE } from './features/dpe/domain/models/installation-chauffage.model.js' */
|
|
3
|
+
/** @import { GenerateurEcsDE } from './features/dpe/domain/models/installation-ecs.model.js' */
|
|
1
4
|
/**
|
|
2
5
|
* Pour les générateurs "Autre système thermodynamique", les calculs sont faits comme pour les 'cet sur air ambiant'
|
|
3
6
|
* @param dpe {FullDpe}
|
|
4
|
-
* @param de {
|
|
7
|
+
* @param de {GenerateurChauffageDE|GenerateurEcsDE}
|
|
5
8
|
* @param type {'ch' | 'ecs'}
|
|
6
9
|
*/
|
|
7
10
|
export function updateGenerateurPacs(dpe, de, type) {
|
|
@@ -9,7 +9,7 @@ const { updateGenerateurPacs } = await import('./13.2_generateur_pac.js');
|
|
|
9
9
|
/**
|
|
10
10
|
* 13.2 - Substitution des générateurs "autre système thermodynamique" par un CET
|
|
11
11
|
* sur air ambiant équivalent selon la période d'installation.
|
|
12
|
-
* @see
|
|
12
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2
|
|
13
13
|
*/
|
|
14
14
|
describe('updateGenerateurPacs - substitution des générateurs thermodynamiques', () => {
|
|
15
15
|
test("aucune période d'installation renseignée : aucune modification", () => {
|
|
@@ -16,7 +16,7 @@ const { default: rendement_distribution_ecs } = await import('./13_rendement_dis
|
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* 13. Rendement de distribution de l'ECS
|
|
19
|
-
* @see
|
|
19
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13
|
|
20
20
|
*/
|
|
21
21
|
describe('rendement_distribution_ecs', () => {
|
|
22
22
|
test('ne retourne aucune valeur (fonction sans effet de sortie)', () => {
|
package/14_generateur_ecs.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @import { GenerateurEcsDI } from './features/dpe/domain/models/installation-ecs.model.js' */
|
|
1
2
|
import enums from './enums.js';
|
|
2
3
|
import {
|
|
3
4
|
bug_for_bug_compat,
|
|
@@ -200,7 +201,7 @@ const PVEILLEUSES_EXPORTEES_TRIBU = [10, 0.01];
|
|
|
200
201
|
* chauffe-eau gaz / GPL instantané 2001-2015, veilleuse de la méthode (100 W) retenue, et
|
|
201
202
|
* pveilleuse exportée par le DPE égale à 10 W ou 0,01 kW.
|
|
202
203
|
* @param typeGenerateurId {string|number} enum_type_generateur_ecs_id
|
|
203
|
-
* @param di {
|
|
204
|
+
* @param di {GenerateurEcsDI}
|
|
204
205
|
* @returns {boolean}
|
|
205
206
|
*/
|
|
206
207
|
export function isPveilChauffeEauGazInstantaneTribu(typeGenerateurId, di) {
|
|
@@ -90,7 +90,7 @@ const { getChaudiereFioulDefautId } = await import('./13.2_generateur_combustion
|
|
|
90
90
|
|
|
91
91
|
/**
|
|
92
92
|
* 14. Générateur d'ECS : rendements et consommations
|
|
93
|
-
* @see
|
|
93
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §14
|
|
94
94
|
*/
|
|
95
95
|
describe('rendements de génération (fonctions pures)', () => {
|
|
96
96
|
const di = { rpn: 0.9, qp0: 0.1, pveil: 0.02, Qgw: 1000 };
|
|
@@ -415,7 +415,7 @@ describe('calc_gen_ecs - consommation par générateur', () => {
|
|
|
415
415
|
|
|
416
416
|
/**
|
|
417
417
|
* 14.1 - Pertes de stockage forfaitaires (générateur électrique à accumulation).
|
|
418
|
-
* @see
|
|
418
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §14.1
|
|
419
419
|
*/
|
|
420
420
|
test('électrique avec stockage : pertes de stockage forfaitaires et matcher de volume', () => {
|
|
421
421
|
vi.mocked(tvColumnIDs).mockImplementation((table) =>
|
|
@@ -690,7 +690,7 @@ describe('calc_gen_ecs - consommation par générateur', () => {
|
|
|
690
690
|
|
|
691
691
|
/**
|
|
692
692
|
* Issue #39 : présence de veilleuse lue dans la fiche technique (de.presence_veilleuse).
|
|
693
|
-
* @see
|
|
693
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §14.1
|
|
694
694
|
*/
|
|
695
695
|
test.each([
|
|
696
696
|
[1, undefined, 0.02],
|
|
@@ -943,7 +943,7 @@ describe('calc_gen_ecs - consommation par générateur', () => {
|
|
|
943
943
|
|
|
944
944
|
/**
|
|
945
945
|
* Type 84 : chaudière fioul standard datant de la construction du bâtiment.
|
|
946
|
-
* @see
|
|
946
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §17.2.1.1
|
|
947
947
|
*/
|
|
948
948
|
test('type 84 combustion compatible 84 : chaudière de la période de construction retenue', () => {
|
|
949
949
|
vi.mocked(getChaudiereFioulDefautId).mockReturnValue('39');
|
package/15_conso_aux.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** @import { EmetteurChauffage, EmetteurChauffageDI, GenerateurChauffageDE, GenerateurChauffageDI } from './features/dpe/domain/models/installation-chauffage.model.js' */
|
|
2
|
+
/** @import { GenerateurEcsDE, GenerateurEcsDI, InstallationEcsDE, InstallationEcsDI } from './features/dpe/domain/models/installation-ecs.model.js' */
|
|
1
3
|
import enums from './enums.js';
|
|
2
4
|
import tvs from './tv.js';
|
|
3
5
|
import { mois_liste, Njj, Tbase } from './utils.js';
|
|
@@ -11,8 +13,8 @@ const H_CHAUDIERE_BOIS = 10.5;
|
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
15
|
* 15.1 Consommation des auxiliaires de génération
|
|
14
|
-
* @param di {
|
|
15
|
-
* @param de {
|
|
16
|
+
* @param di {GenerateurChauffageDI|GenerateurEcsDI}
|
|
17
|
+
* @param de {GenerateurChauffageDE|GenerateurEcsDE}
|
|
16
18
|
* @param type {'ecs'|'ch'}
|
|
17
19
|
* @param besoin {number} Besoin en chauffage ou ecs pour ce générateur
|
|
18
20
|
* @param besoin_dep {number} Besoin en chauffage ou ecs pour ce générateur (mode dépensier)
|
|
@@ -31,7 +33,7 @@ export function conso_aux_gen(di, de, type, besoin, besoin_dep) {
|
|
|
31
33
|
* nominale réelle du générateur, comme le moteur de référence CSTB (Tribu) et comme le calcul
|
|
32
34
|
* dépensier. Autotests CSTB APP3-0-3 (chaudière bois collective 150 kW, Tribu Qaux_ch =
|
|
33
35
|
* 13,27 kWh) et IC4-0-1 (chaudière bois 300 kW, Tribu Qaux_ch = 864,60 kWh).
|
|
34
|
-
* @see
|
|
36
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.1
|
|
35
37
|
*/
|
|
36
38
|
const pnReel = di.pn / (de.ratio_virtualisation || 1);
|
|
37
39
|
let pe = pnReel;
|
|
@@ -53,7 +55,7 @@ export function conso_aux_gen(di, de, type, besoin, besoin_dep) {
|
|
|
53
55
|
* Installation collective virtualisée : Paux_g (W) est celle du générateur de l'immeuble
|
|
54
56
|
* (Pn = pe, puissance immeuble) et Caux_g = Paux_g × Bch_logement / Pn. Le terme G ne doit pas
|
|
55
57
|
* être proratisé par ratio_virtualisation (sinon G × ratio), comme le moteur CSTB (Tribu).
|
|
56
|
-
* @see
|
|
58
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.1
|
|
57
59
|
*/
|
|
58
60
|
const Paux_g_ch = g + h * (pe / 1000);
|
|
59
61
|
|
|
@@ -65,7 +67,7 @@ export function conso_aux_gen(di, de, type, besoin, besoin_dep) {
|
|
|
65
67
|
* le moteur de référence CSTB (Tribu) n'utilise aucune clé de répartition pour ces
|
|
66
68
|
* installations (DPE.Core : Calcul_installation.cs l.79-80, Calcul_generateur.cs l.1497,
|
|
67
69
|
* Calcul_batiment.cs l.652). La clé reste appliquée au collectif et à l'ECS.
|
|
68
|
-
* @see
|
|
70
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.1
|
|
69
71
|
*/
|
|
70
72
|
const ignoreCle = type === 'ch' && String(de.enum_type_installation_id) === '1';
|
|
71
73
|
const cle = ignoreCle ? 1 : de[`cle_repartition_${type}`] || 1;
|
|
@@ -78,7 +80,7 @@ export function conso_aux_gen(di, de, type, besoin, besoin_dep) {
|
|
|
78
80
|
* seconde fois (sinon Bch × (Sc / Sh)²), comme le moteur de référence CSTB (Tribu).
|
|
79
81
|
* Autotest CSTB MI5-0-8 : radiateur gaz, Sc = 96 m², Sh = 136 m², Tribu Qaux_ch = 84,69 kWh
|
|
80
82
|
* (59,78 kWh avec le double prorata, −29 %).
|
|
81
|
-
* @see
|
|
83
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.1
|
|
82
84
|
*/
|
|
83
85
|
di[`conso_auxiliaire_generation_${type}`] = (Paux_g_ch * besoinAppart) / pnReel || 0;
|
|
84
86
|
di[`conso_auxiliaire_generation_${type}_depensier`] = (Paux_g_ch * besoinAppartDep) / pnReel || 0;
|
|
@@ -167,9 +169,9 @@ function getFacteur(values, type, id, presenceVentilateur) {
|
|
|
167
169
|
|
|
168
170
|
/**
|
|
169
171
|
* Calcul de la consommation des auxiliaires de distribution de chauffage
|
|
170
|
-
* @param em_ch {
|
|
171
|
-
* @param de {
|
|
172
|
-
* @param di {
|
|
172
|
+
* @param em_ch { EmetteurChauffage[]}
|
|
173
|
+
* @param de {GenerateurChauffageDE} donnée du générateur de chauffage
|
|
174
|
+
* @param di {GenerateurChauffageDI} donnée intermédiaire du générateur de chauffage
|
|
173
175
|
* @param du {object} donnée utilisateur du générateur de chauffage
|
|
174
176
|
* @param surfaceHabitable {number}
|
|
175
177
|
* @param zcId {number} id de la zone climatique du bien
|
|
@@ -214,9 +216,9 @@ export function conso_aux_distribution_ch(
|
|
|
214
216
|
|
|
215
217
|
/**
|
|
216
218
|
* 15.2.1 Puissance des circulateurs de chauffage
|
|
217
|
-
* @param em_ch {
|
|
218
|
-
* @param de {
|
|
219
|
-
* @param di {
|
|
219
|
+
* @param em_ch { EmetteurChauffage[]}
|
|
220
|
+
* @param de {GenerateurChauffageDE} donnée du générateur de chauffage
|
|
221
|
+
* @param di {GenerateurChauffageDI} donnée intermédiaire du générateur de chauffage
|
|
220
222
|
* @param du {object} donnée utilisateur du générateur de chauffage
|
|
221
223
|
* @param surfaceHabitable {number}
|
|
222
224
|
* @param GV {number} déperdition de l'enveloppe
|
|
@@ -285,7 +287,7 @@ function getPuissanceCirculateur(em_ch, de, di, du, surfaceHabitable, GV, Tbase)
|
|
|
285
287
|
|
|
286
288
|
// Exposition de la longueur du réseau (lb) dans les données intermédiaires des émetteurs desservis
|
|
287
289
|
em_ch.forEach((em) => {
|
|
288
|
-
em.donnee_intermediaire = em.donnee_intermediaire || {};
|
|
290
|
+
em.donnee_intermediaire = /** @type {EmetteurChauffageDI} */ (em.donnee_intermediaire || {});
|
|
289
291
|
em.donnee_intermediaire.lb = Lem;
|
|
290
292
|
});
|
|
291
293
|
|
|
@@ -319,8 +321,8 @@ function getPuissanceCirculateur(em_ch, de, di, du, surfaceHabitable, GV, Tbase)
|
|
|
319
321
|
* température impose 15 °C, quel que soit l'ordre de saisie des émetteurs (comme le moteur de
|
|
320
322
|
* référence CSTB Tribu). Auparavant, seul le premier émetteur était considéré.
|
|
321
323
|
*
|
|
322
|
-
* @see
|
|
323
|
-
* @param em_ch {
|
|
324
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.2.1
|
|
325
|
+
* @param em_ch {EmetteurChauffage[]}
|
|
324
326
|
* @return {number}
|
|
325
327
|
*/
|
|
326
328
|
export function getDeltaDim(em_ch) {
|
|
@@ -343,8 +345,8 @@ export function getDeltaDim(em_ch) {
|
|
|
343
345
|
* CAS 3 - enum_bouclage_reseau_ecs_id = 3 (traçage) : conso = 0.14 * BECS_annuel * Sh_install / Sh_logement
|
|
344
346
|
*
|
|
345
347
|
* @param ecs {object} installation ECS
|
|
346
|
-
* @param de {
|
|
347
|
-
* @param di {
|
|
348
|
+
* @param de {InstallationEcsDE} donnée d'entrée de l'installation ECS
|
|
349
|
+
* @param di {InstallationEcsDI} donnée intermédiaire de l'installation ECS
|
|
348
350
|
* @param Sh_logement {number} surface habitable du logement
|
|
349
351
|
* @param Sh_immeuble {number} surface habitable de l'immeuble
|
|
350
352
|
* @param caId {number} id de la classe d'altitude
|
package/15_conso_aux.spec.js
CHANGED
|
@@ -36,7 +36,7 @@ const { conso_aux_gen, conso_aux_distribution_ch, conso_aux_distribution_ecs, ge
|
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
38
|
* 15.1 Consommation des auxiliaires de génération
|
|
39
|
-
* @see
|
|
39
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.1
|
|
40
40
|
*/
|
|
41
41
|
describe('conso_aux_gen - auxiliaires de génération', () => {
|
|
42
42
|
let di;
|
|
@@ -94,7 +94,7 @@ describe('conso_aux_gen - auxiliaires de génération', () => {
|
|
|
94
94
|
/**
|
|
95
95
|
* Le besoin transmis par calc_chauffage est déjà proratisé par Sc / Sh : aucun second prorata.
|
|
96
96
|
* Autotest CSTB MI5-0-8 : radiateur gaz (G = 40, H = 0), Sc = 96 m², Sh = 136 m².
|
|
97
|
-
* @see
|
|
97
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.1
|
|
98
98
|
*/
|
|
99
99
|
test('chauffage : surface chauffée partielle sans second prorata Sc / Sh du besoin', () => {
|
|
100
100
|
const diPartiel = { pn: 20000 };
|
|
@@ -235,7 +235,7 @@ describe('conso_aux_gen - auxiliaires de génération', () => {
|
|
|
235
235
|
* installation individuelle (enum_type_installation_id = 1) : ce besoin est déjà proratisé
|
|
236
236
|
* par Sc / Sh, et le moteur CSTB (Tribu) n'utilise aucune clé pour ces installations.
|
|
237
237
|
* La clé reste appliquée au collectif et à l'ECS.
|
|
238
|
-
* @see
|
|
238
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.1
|
|
239
239
|
*/
|
|
240
240
|
describe('clé de répartition (issue #252)', () => {
|
|
241
241
|
test('chauffage, installation individuelle : la clé de répartition est ignorée', () => {
|
|
@@ -297,7 +297,7 @@ describe('conso_aux_gen - auxiliaires de génération', () => {
|
|
|
297
297
|
|
|
298
298
|
/**
|
|
299
299
|
* 15.2 Consommation des auxiliaires de distribution de chauffage
|
|
300
|
-
* @see
|
|
300
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.2
|
|
301
301
|
*/
|
|
302
302
|
describe('conso_aux_distribution_ch - auxiliaires de distribution', () => {
|
|
303
303
|
const emCh = [
|
|
@@ -379,7 +379,7 @@ describe('conso_aux_distribution_ch - auxiliaires de distribution', () => {
|
|
|
379
379
|
* Seuls les émetteurs reliés au générateur (même enum_lien_generateur_emetteur_id) dimensionnent
|
|
380
380
|
* son circulateur. Autotest CSTB IC5-0-3 : chaudière (lien 1) sur plancher chauffant + convecteurs
|
|
381
381
|
* électriques d'appoint (lien 2) : Fcot du plancher (0,156), pas le forçage multi-émetteurs.
|
|
382
|
-
* @see
|
|
382
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.2.1
|
|
383
383
|
*/
|
|
384
384
|
test('émetteurs reliés à un autre générateur : exclus du dimensionnement du circulateur', () => {
|
|
385
385
|
const plancher = {
|
|
@@ -412,7 +412,7 @@ describe('conso_aux_distribution_ch - auxiliaires de distribution', () => {
|
|
|
412
412
|
/**
|
|
413
413
|
* La longueur du réseau le plus défavorisé (Lem) est exposée sous le nom lb dans la donnée
|
|
414
414
|
* intermédiaire de chaque émetteur desservi par le circulateur.
|
|
415
|
-
* @see
|
|
415
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.2.1
|
|
416
416
|
*/
|
|
417
417
|
test('longueur du réseau lb exposée dans la donnée intermédiaire des émetteurs', () => {
|
|
418
418
|
const em = [
|
|
@@ -640,7 +640,7 @@ describe('conso_aux_distribution_ch - auxiliaires de distribution', () => {
|
|
|
640
640
|
|
|
641
641
|
/**
|
|
642
642
|
* 15.2.1 Chute nominale de température de dimensionnement ΔθDim
|
|
643
|
-
* @see
|
|
643
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.2.1
|
|
644
644
|
*/
|
|
645
645
|
describe('getDeltaDim - chute nominale de température de dimensionnement', () => {
|
|
646
646
|
const em = (temp, type = '10') => ({
|
|
@@ -674,7 +674,7 @@ describe('getDeltaDim - chute nominale de température de dimensionnement', () =
|
|
|
674
674
|
|
|
675
675
|
/**
|
|
676
676
|
* 15.2.3 Consommation des auxiliaires de distribution d'ECS
|
|
677
|
-
* @see
|
|
677
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.2.3
|
|
678
678
|
*
|
|
679
679
|
* Les scénarios ci-dessous s'appuient sur l'année réduite à Janvier (31 jours,
|
|
680
680
|
* tefs = 10 °C) définie par les mocks en tête de fichier :
|
package/16.2_production_enr.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @import { EfConso, EpConso, SortieParEnergie } from './features/dpe/domain/models/sortie.model.js' */
|
|
1
2
|
import enums from './enums.js';
|
|
2
3
|
import { mois_liste, tv } from './utils.js';
|
|
3
4
|
import tvs from './tv.js';
|
|
@@ -152,7 +153,7 @@ export class ProductionENR {
|
|
|
152
153
|
|
|
153
154
|
/**
|
|
154
155
|
* Récupération des consommations électriques pour ch et ecs
|
|
155
|
-
* @type {
|
|
156
|
+
* @type {SortieParEnergie}
|
|
156
157
|
*/
|
|
157
158
|
let consoElec = conso.sortie_par_energie_collection.sortie_par_energie.find(
|
|
158
159
|
(sortie) => sortie.enum_type_energie_id === '1'
|
|
@@ -302,7 +303,7 @@ export class ProductionENR {
|
|
|
302
303
|
/**
|
|
303
304
|
* Mise à jour des consommations ef en minorant l'énergie primaire consommée par l'énergie autoconsommée par chaque enveloppe
|
|
304
305
|
* @param productionElectricite
|
|
305
|
-
* @param conso {{ep_conso:
|
|
306
|
+
* @param conso {{ep_conso: EpConso}}
|
|
306
307
|
* @param Sh {number}
|
|
307
308
|
* @param coeff_ep_override {number?} coeff ep à surcharger si définit
|
|
308
309
|
*/
|
|
@@ -350,7 +351,7 @@ export class ProductionENR {
|
|
|
350
351
|
|
|
351
352
|
/**
|
|
352
353
|
* Calcul des taux d'autoproduction consommés pour chaque enveloppe
|
|
353
|
-
* @param efConso {
|
|
354
|
+
* @param efConso {EfConso}
|
|
354
355
|
* @param consoElec
|
|
355
356
|
* @param ccom {number}
|
|
356
357
|
* @param consoElecTotale {number}
|
|
@@ -3,7 +3,7 @@ import { describe, expect, test, it } from 'vitest';
|
|
|
3
3
|
|
|
4
4
|
describe('production ENR unit tests', () => {
|
|
5
5
|
/**
|
|
6
|
-
* @see
|
|
6
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf Page 103
|
|
7
7
|
*/
|
|
8
8
|
const productionENR = new ProductionENR();
|
|
9
9
|
|
|
@@ -23,7 +23,7 @@ const { default: calc_conso_eclairage } = await import('./16_conso_eclairage.js'
|
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* 16.1 Consommation d'éclairage (Cecl)
|
|
26
|
-
* @see
|
|
26
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §16.1
|
|
27
27
|
*
|
|
28
28
|
* Cecl = (C * Pecl * Nh) / 1000 avec C = 0.9 (interrupteur) et Pecl = 1.4 W/m²
|
|
29
29
|
* Nh = nombre d'heures de fonctionnement de l'éclairage, fonction de la zone climatique.
|
|
@@ -45,7 +45,7 @@ function plancherHaut({ typeAdjacence = 'extérieur', typeIsolation = 'isolé' }
|
|
|
45
45
|
|
|
46
46
|
/**
|
|
47
47
|
* Indicateur de confort d'été
|
|
48
|
-
* @see
|
|
48
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - annexe confort d'été
|
|
49
49
|
*/
|
|
50
50
|
describe("calc_confort_ete - indicateur de confort d'été", () => {
|
|
51
51
|
test('inertie lourde + aspect traversant : niveau « bon »', () => {
|
|
@@ -120,7 +120,7 @@ export default function calc_qualite_isolation(enveloppe, dp) {
|
|
|
120
120
|
* Il ne prend en compte QUE les déperditions par les parois et les ponts thermiques :
|
|
121
121
|
* les déperditions par renouvellement d'air (DR) sont volontairement exclues
|
|
122
122
|
* (cf. issue #45).
|
|
123
|
-
* @see
|
|
123
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - annexe 8 (indicateurs de qualité d'isolation)
|
|
124
124
|
*/
|
|
125
125
|
const deperdition =
|
|
126
126
|
dp.deperdition_mur +
|
|
@@ -9,7 +9,7 @@ const { default: calc_qualite_isolation, qualite_isol } =
|
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Qualité de l'isolation
|
|
12
|
-
* @see
|
|
12
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - annexe qualité d'isolation
|
|
13
13
|
*/
|
|
14
14
|
describe('qualite_isol - classement selon les seuils U', () => {
|
|
15
15
|
const seuils = [0.3, 0.45, 0.65];
|
|
@@ -123,7 +123,7 @@ describe('calc_qualite_isolation - agrégation et classement', () => {
|
|
|
123
123
|
/**
|
|
124
124
|
* Ubat est un coefficient de transmission surfacique moyen : il exclut les
|
|
125
125
|
* déperditions par renouvellement d'air (DR).
|
|
126
|
-
* @see
|
|
126
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - annexe 8 / issue #45
|
|
127
127
|
*/
|
|
128
128
|
test("les déperditions par renouvellement d'air (DR) ne sont pas prises en compte dans ubat", () => {
|
|
129
129
|
const env = enveloppe({
|
package/3.1_b.spec.js
CHANGED
|
@@ -54,7 +54,7 @@ afterEach(() => {
|
|
|
54
54
|
|
|
55
55
|
/**
|
|
56
56
|
* 3.1 Coefficient de réduction des déperditions (b)
|
|
57
|
-
* @see
|
|
57
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.1
|
|
58
58
|
*/
|
|
59
59
|
describe('findRanges - encadrement du rapport surface_aiu / surface_aue', () => {
|
|
60
60
|
const ranges = [0.25, 0.5, 0.75, 1, 1.25, 2, 2.5, 3, 3.5, 4, 6, 8, 10, 25, 50];
|
package/3.2.1_mur.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @import { MurDE, MurDI } from './features/dpe/domain/models/mur.model.js' */
|
|
1
2
|
import enums from './enums.js';
|
|
2
3
|
import {
|
|
3
4
|
tv,
|
|
@@ -24,7 +25,7 @@ const scriptName = new URL(import.meta.url).pathname.split('/').pop();
|
|
|
24
25
|
* logiciels) : colonne la plus proche, et en cas d'égalité la colonne inférieure (la plus
|
|
25
26
|
* défavorable thermiquement). Les bornes ouvertes « ≤ x » / « ≥ x » sont ramenées à x.
|
|
26
27
|
*
|
|
27
|
-
* @see
|
|
28
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.2.1.2
|
|
28
29
|
*
|
|
29
30
|
* @param enumMateriauxStructureMurId {string|number}
|
|
30
31
|
* @param epaisseur {number|string}
|
|
@@ -87,7 +88,7 @@ function matcherEpaisseurTable(matcher) {
|
|
|
87
88
|
* 2, 3 - pierre de taille et moellons ; 4 - pisé / béton de terre ; 5, 6 - pan de bois (colombage) ;
|
|
88
89
|
* 7 - bois (rondin) ; 8, 9 - briques pleines ; 21 - autre matériau traditionnel ancien.
|
|
89
90
|
*
|
|
90
|
-
* @see
|
|
91
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.2.1
|
|
91
92
|
* @see https://github.com/Open3CL/engine/issues/295
|
|
92
93
|
*/
|
|
93
94
|
export const MATERIAUX_PAROI_ANCIENNE = [2, 3, 4, 5, 6, 7, 8, 9, 21];
|
|
@@ -99,7 +100,7 @@ export const MATERIAUX_PAROI_ANCIENNE = [2, 3, 4, 5, 6, 7, 8, 9, 21];
|
|
|
99
100
|
* La méthode ne précise pas de règle d'interpolation pour Umur0 : cette valeur n'est utilisée qu'en
|
|
100
101
|
* compatibilité (bug_for_bug), lorsque le DPE d'origine l'a manifestement appliquée.
|
|
101
102
|
*
|
|
102
|
-
* @see
|
|
103
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.2.1.2
|
|
103
104
|
* @see https://github.com/Open3CL/engine/issues/295
|
|
104
105
|
*
|
|
105
106
|
* @param enumMateriauxStructureMurId {string|number}
|
|
@@ -204,7 +205,7 @@ function tv_umur0(di, de, du) {
|
|
|
204
205
|
* Certains logiciels interpolent Umur0 entre les deux colonnes d'épaisseur qui encadrent
|
|
205
206
|
* l'épaisseur saisie (ex : 2,28 pour un béton banché de 32 cm, entre 30 et 35 cm).
|
|
206
207
|
* Si l'Umur0 du DPE correspond à cette interpolation (tolérance empirique de 0,006), on la reprend.
|
|
207
|
-
* @see
|
|
208
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.2.1.2
|
|
208
209
|
* @see https://github.com/Open3CL/engine/issues/295
|
|
209
210
|
*/
|
|
210
211
|
if (bug_for_bug_compat && du.umur0_avant !== undefined) {
|
|
@@ -260,7 +261,7 @@ function tv_umur(di, de, du, pc_id, zc, effetJoule) {
|
|
|
260
261
|
enum_zone_climatique_id: zc,
|
|
261
262
|
effet_joule: effetJoule
|
|
262
263
|
};
|
|
263
|
-
const row = tv('umur', matcher
|
|
264
|
+
const row = tv('umur', matcher);
|
|
264
265
|
if (row) {
|
|
265
266
|
di.umur = Number(row.umur);
|
|
266
267
|
de.tv_umur_id = Number(row.tv_umur_id);
|
|
@@ -330,7 +331,7 @@ function calc_umur0(di, de, du, versionDpe) {
|
|
|
330
331
|
* DPE antérieurs à la version 2.4 : certains logiciels n'y cumulent déjà pas le doublage avec une
|
|
331
332
|
* isolation ITE/ITI. Si l'Umur0 du DPE vaut min(2,5 ; Umur0 de la paroi nue), le doublage n'a pas
|
|
332
333
|
* été appliqué : on ne l'applique pas non plus.
|
|
333
|
-
* @see
|
|
334
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.2.1
|
|
334
335
|
* @see https://github.com/Open3CL/engine/issues/295
|
|
335
336
|
*/
|
|
336
337
|
if (
|
|
@@ -376,7 +377,7 @@ function calc_umur0(di, de, du, versionDpe) {
|
|
|
376
377
|
* intègre l'enduit. Si l'Umur du DPE vaut min(2,5 ; Umur0 avec enduit), le DPE a bien appliqué
|
|
377
378
|
* l'enduit : l'Umur0 d'origine ne doit pas être conservé.
|
|
378
379
|
* Garde : l'enduit isolant ne vaut que pour les parois anciennes (MATERIAUX_PAROI_ANCIENNE).
|
|
379
|
-
* @see
|
|
380
|
+
* @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.2.1
|
|
380
381
|
* @see https://github.com/Open3CL/engine/issues/295
|
|
381
382
|
*/
|
|
382
383
|
const enduitAppliqueDansDpe =
|
|
@@ -510,8 +511,8 @@ export default function calc_mur(mur, zc, pc_id, effetJoule, versionDpe) {
|
|
|
510
511
|
* Vérification si le calcul des déperditions des murs utilisent, dans le DPE d'origine, une minoration à 2.5 de Umur0
|
|
511
512
|
* pour l'application du doublage
|
|
512
513
|
* @param type_doublage {number}
|
|
513
|
-
* @param di {
|
|
514
|
-
* @param de {
|
|
514
|
+
* @param di {MurDI}
|
|
515
|
+
* @param de {MurDE}
|
|
515
516
|
* @param umur0_avant {number}
|
|
516
517
|
* @param umur_avant {number}
|
|
517
518
|
*/
|