@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.
Files changed (154) hide show
  1. package/10_besoin_fr.spec.js +1 -1
  2. package/10_clim.js +1 -1
  3. package/10_clim.spec.js +5 -9
  4. package/11_besoin_ecs.spec.js +1 -1
  5. package/11_ecs.js +2 -1
  6. package/11_ecs.spec.js +2 -2
  7. package/11_nadeq.js +1 -0
  8. package/11_nadeq.spec.js +1 -1
  9. package/11_rdim_ecs_individuelle_unique.js +78 -0
  10. package/11_rdim_ecs_individuelle_unique.spec.js +136 -0
  11. package/12.4_pac.js +5 -3
  12. package/12.4_pac.spec.js +10 -18
  13. package/13.2_generateur_combustion.js +19 -16
  14. package/13.2_generateur_combustion.spec.js +10 -10
  15. package/13.2_generateur_combustion_bouilleur.js +5 -2
  16. package/13.2_generateur_combustion_bouilleur.spec.js +1 -1
  17. package/13.2_generateur_combustion_ch.js +8 -7
  18. package/13.2_generateur_combustion_ch.spec.js +7 -7
  19. package/13.2_generateur_combustion_chaudiere.js +5 -2
  20. package/13.2_generateur_combustion_chaudiere.spec.js +2 -2
  21. package/13.2_generateur_combustion_pdim.js +6 -6
  22. package/13.2_generateur_combustion_pdim.spec.js +1 -1
  23. package/13.2_generateur_combustion_pn.spec.js +1 -1
  24. package/13.2_generateur_pac.js +4 -1
  25. package/13.2_generateur_pac.spec.js +1 -1
  26. package/13_rendement_distribution_ecs.spec.js +1 -1
  27. package/14_generateur_ecs.js +2 -1
  28. package/14_generateur_ecs.spec.js +4 -4
  29. package/15_conso_aux.js +19 -17
  30. package/15_conso_aux.spec.js +8 -8
  31. package/16.2_production_enr.js +4 -3
  32. package/16.2_production_enr.spec.js +1 -1
  33. package/16_conso_eclairage.spec.js +1 -1
  34. package/2021_04_13_confort_ete.spec.js +1 -1
  35. package/2021_04_13_qualite_isolation.js +1 -1
  36. package/2021_04_13_qualite_isolation.spec.js +2 -2
  37. package/3.1_b.spec.js +1 -1
  38. package/3.2.1_mur.js +10 -9
  39. package/3.2.1_mur.spec.js +11 -19
  40. package/3.2.2_plancher_bas.js +4 -3
  41. package/3.2.2_plancher_bas.spec.js +10 -20
  42. package/3.2.3_plancher_haut.js +1 -1
  43. package/3.2.3_plancher_haut.spec.js +2 -2
  44. package/3.3.1.4_porte.js +1 -1
  45. package/3.3.1.4_porte.spec.js +2 -2
  46. package/3.3_baie_vitree.js +2 -2
  47. package/3.3_baie_vitree.spec.js +3 -3
  48. package/3.4_pont_thermique.js +6 -4
  49. package/3.4_pont_thermique.spec.js +7 -7
  50. package/3_deperdition.js +1 -0
  51. package/3_deperdition.spec.js +3 -3
  52. package/4_ventilation.js +2 -2
  53. package/4_ventilation.spec.js +1 -1
  54. package/5_conso_ventilation.spec.js +1 -1
  55. package/6.1_apport_gratuit.spec.js +2 -2
  56. package/6.2_surface_sud_equivalente.js +12 -9
  57. package/6.2_surface_sud_equivalente.spec.js +3 -3
  58. package/7_inertie.js +7 -4
  59. package/7_inertie.spec.js +1 -1
  60. package/8_intermittence.spec.js +1 -1
  61. package/9_besoin_ch.js +5 -3
  62. package/9_besoin_ch.spec.js +3 -3
  63. package/9_chauffage.js +12 -11
  64. package/9_chauffage.spec.js +7 -7
  65. package/9_conso_ch.spec.js +3 -3
  66. package/9_emetteur_ch.js +5 -5
  67. package/9_emetteur_ch.spec.js +1 -1
  68. package/9_generateur_ch.js +16 -13
  69. package/9_generateur_ch.spec.js +6 -6
  70. package/README.md +19 -19
  71. package/apport_et_besoin.spec.js +1 -1
  72. package/conso.js +18 -14
  73. package/conso.spec.js +3 -3
  74. package/core/assets/domain/synchronize-assets.js +2 -0
  75. package/core/assets/domain/synchronize-c1-tables.js +2 -0
  76. package/core/assets/domain/synchronize-dpe-ges-limit-values-tables.js +2 -0
  77. package/core/assets/domain/synchronize-enum-tables.js +2 -0
  78. package/core/assets/domain/synchronize-solicitations-tables.js +2 -0
  79. package/core/assets/domain/synchronize-valeur-tables.js +6 -0
  80. package/core/file/infrastructure/adapter/csv-parser.store.js +2 -1
  81. package/dpe-sanitizer.service.js +1 -0
  82. package/engine.js +11 -2
  83. package/engine.spec.js +23 -2
  84. package/enums.d.ts +1257 -0
  85. package/features/dpe/domain/models/baie-ets.model.ts +8 -11
  86. package/features/dpe/domain/models/baie-vitree.model.ts +28 -96
  87. package/features/dpe/domain/models/climatisation.model.ts +13 -23
  88. package/features/dpe/domain/models/dpe-xsd.generated.ts +2797 -0
  89. package/features/dpe/domain/models/dpe.model.ts +105 -181
  90. package/features/dpe/domain/models/ets.model.ts +10 -18
  91. package/features/dpe/domain/models/installation-chauffage.model.ts +92 -99
  92. package/features/dpe/domain/models/installation-ecs.model.ts +45 -77
  93. package/features/dpe/domain/models/mur.model.ts +10 -38
  94. package/features/dpe/domain/models/plancher.model.ts +22 -63
  95. package/features/dpe/domain/models/pont-thermique.model.ts +10 -20
  96. package/features/dpe/domain/models/porte.model.ts +10 -30
  97. package/features/dpe/domain/models/production-elec-enr.model.ts +13 -27
  98. package/features/dpe/domain/models/sortie.model.ts +32 -176
  99. package/features/dpe/domain/models/type-generateur.model.js +4 -3
  100. package/features/dpe/domain/models/type-habitation.model.js +8 -6
  101. package/features/dpe/domain/models/type-stockage.model.js +4 -3
  102. package/features/dpe/domain/models/type-ventilation.model.js +4 -3
  103. package/features/dpe/domain/models/ventilation.model.ts +15 -25
  104. package/features/dpe/infrastructure/ch/chTv.store.js +2 -2
  105. package/features/dpe/infrastructure/ecs/ecsTv.store.js +3 -3
  106. package/features/dpe/infrastructure/enveloppe/baieVitreeTv.store.js +1 -1
  107. package/features/dpe/infrastructure/froid/frTv.store.js +3 -3
  108. package/features/dpe/infrastructure/froid/frTv.store.spec.js +1 -1
  109. package/features/dpe/infrastructure/tv.store.js +1 -1
  110. package/features/engine/domain/apport_et_besoin/apport-et-besoin.service.js +3 -0
  111. package/features/engine/domain/apport_et_besoin/apport_gratuit/apport-gratuit.service.js +3 -1
  112. package/features/engine/domain/apport_et_besoin/ch/besoin-ch.service.js +3 -1
  113. package/features/engine/domain/apport_et_besoin/ch/perte-ch-recup.service.js +9 -3
  114. package/features/engine/domain/apport_et_besoin/ch/perte-ch-recup.service.spec.js +1 -1
  115. package/features/engine/domain/apport_et_besoin/ecs/besoin-ecs.service.js +2 -1
  116. package/features/engine/domain/apport_et_besoin/ecs/perte-ecs-recup.service.js +4 -1
  117. package/features/engine/domain/apport_et_besoin/froid/besoin-froid.service.js +3 -1
  118. package/features/engine/domain/apport_et_besoin/surface-sud-equivalente.service.js +7 -2
  119. package/features/engine/domain/apport_et_besoin/surface-sud-equivalente.service.spec.js +1 -1
  120. package/features/engine/domain/ch/emetteur-ch.service.js +3 -1
  121. package/features/engine/domain/ch/emetteur-ch.service.spec.js +1 -1
  122. package/features/engine/domain/ch/generateur-ch.service.js +4 -1
  123. package/features/engine/domain/ch/generateur-ch.service.spec.js +3 -3
  124. package/features/engine/domain/ch/installation-ch.service.js +2 -0
  125. package/features/engine/domain/conso/conso.service.js +2 -0
  126. package/features/engine/domain/conso/froid/conso-froid.service.js +5 -1
  127. package/features/engine/domain/contexte.builder.js +2 -0
  128. package/features/engine/domain/ecs/generateur-ecs.service.js +1 -0
  129. package/features/engine/domain/ecs/installation-ecs.service.js +3 -0
  130. package/features/engine/domain/engine.service.js +1 -0
  131. package/features/engine/domain/enveloppe/baie_vitree/deperdition-baie-vitree.service.js +4 -1
  132. package/features/engine/domain/enveloppe/deperdition-enveloppe.service.js +3 -0
  133. package/features/engine/domain/enveloppe/deperdition.service.js +8 -4
  134. package/features/engine/domain/enveloppe/espace_tampon/espace-tampon.service.js +4 -1
  135. package/features/engine/domain/enveloppe/mur/deperdition-mur.service.js +3 -1
  136. package/features/engine/domain/enveloppe/plancher_bas/deperdition-plancher-bas.service.js +3 -1
  137. package/features/engine/domain/enveloppe/plancher_bas/deperdition-plancher-bas.service.spec.js +2 -2
  138. package/features/engine/domain/enveloppe/plancher_haut/deperdition-plancher-haut.service.js +4 -2
  139. package/features/engine/domain/enveloppe/pont_thermique/deperdition-pont-thermique.service.js +9 -1
  140. package/features/engine/domain/enveloppe/pont_thermique/deperdition-pont-thermique.service.spec.js +1 -1
  141. package/features/engine/domain/enveloppe/porte/deperdition-porte.service.js +3 -1
  142. package/features/engine/domain/enveloppe/ventilation/deperdition-ventilation.service.js +3 -1
  143. package/features/engine/domain/enveloppe/ventilation/deperdition-ventilation.service.spec.js +1 -1
  144. package/features/engine/domain/logement/nadeq.service.js +1 -1
  145. package/features/engine/domain/logement/nadeq.service.spec.js +1 -1
  146. package/features/engine/domain/models/contexte.model.ts +2 -2
  147. package/features/normalizer/domain/dpe-normalizer.service.js +1 -0
  148. package/ficheTechnique.js +4 -2
  149. package/globals.d.ts +14 -0
  150. package/package.json +3 -2
  151. package/preprocessor/index.js +1 -0
  152. package/tv.d.ts +759 -0
  153. package/tvs.d.ts +2 -7
  154. 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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.2
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.5
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.5
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.5
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1
285
- * @param de {Donnee_entree}
286
- * @param di {Donnee_intermediaire}
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.1
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.5
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.2
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.2
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.4
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.2
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 {Donnee_entree}
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 {Donnee_entree}
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §17.2.1.1
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.2.4 Calcul des puissances nominales (p.90-91)
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2 et §17.2.1 (virtualisation)
17
+ * @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2 et §17.2.1 (virtualisation)
18
18
  */
19
19
 
20
20
  /**
@@ -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 {Donnee_entree}
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13
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)', () => {
@@ -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 {Donnee_intermediaire}
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §14
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §14.1
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §14.1
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §17.2.1.1
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 {Donnee_intermediaire}
15
- * @param de {Donnee_entree}
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.1
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.1
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.1
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.1
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 { EmetteurChauffageItem[]}
171
- * @param de {Donnee_entree} donnée du générateur de chauffage
172
- * @param di {Donnee_intermediaire} donnée intermédiaire du générateur de chauffage
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 { EmetteurChauffageItem[]}
218
- * @param de {Donnee_entree} donnée du générateur de chauffage
219
- * @param di {Donnee_intermediaire} donnée intermédiaire du générateur de chauffage
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.2.1
323
- * @param em_ch {EmetteurChauffageItem[]}
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 {Donnee_entree} donnée d'entrée de l'installation ECS
347
- * @param di {Donnee_intermediaire} donnée intermédiaire de l'installation ECS
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
@@ -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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.1
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.1
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.1
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.2
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.2.1
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.2.1
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.2.1
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §15.2.3
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 :
@@ -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 {SortieParEnergieItem}
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: 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 {Ef_conso}
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf Page 103
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §16.1
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - annexe confort d'été
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - annexe 8 (indicateurs de qualité d'isolation)
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - annexe qualité d'isolation
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - annexe 8 / issue #45
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.1
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.2.1.2
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.2.1
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.2.1.2
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.2.1.2
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, de);
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.2.1
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 : Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.2.1
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 {Donnee_intermediaire}
514
- * @param de {Donnee_entree}
514
+ * @param di {MurDI}
515
+ * @param de {MurDE}
515
516
  * @param umur0_avant {number}
516
517
  * @param umur_avant {number}
517
518
  */