@open3cl/engine 1.7.0 → 1.7.2

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 (58) hide show
  1. package/10_besoin_fr.spec.js +1 -0
  2. package/10_clim.spec.js +1 -0
  3. package/11_besoin_ecs.spec.js +1 -0
  4. package/11_ecs.spec.js +1 -0
  5. package/12.4_pac.spec.js +1 -0
  6. package/13.2_generateur_combustion.js +2 -10
  7. package/13.2_generateur_combustion.spec.js +3 -3
  8. package/13.2_generateur_combustion_ch.spec.js +3 -3
  9. package/14_generateur_ecs.spec.js +1 -0
  10. package/15_conso_aux.spec.js +3 -3
  11. package/2021_04_13_confort_ete.spec.js +1 -0
  12. package/3.1_b.js +45 -33
  13. package/3.1_b.spec.js +1 -0
  14. package/3.2.1_mur.spec.js +1 -0
  15. package/3.2.2_plancher_bas.spec.js +1 -0
  16. package/3.2.3_plancher_haut.spec.js +1 -0
  17. package/3.3.1.4_porte.spec.js +1 -0
  18. package/3.3_baie_vitree.js +32 -10
  19. package/3.3_baie_vitree.spec.js +1 -0
  20. package/3.4_pont_thermique.js +21 -13
  21. package/3.4_pont_thermique.spec.js +2 -1
  22. package/4_ventilation.spec.js +1 -0
  23. package/5_conso_ventilation.spec.js +1 -0
  24. package/6.2_surface_sud_equivalente.spec.js +1 -0
  25. package/9_besoin_ch.spec.js +1 -0
  26. package/9_chauffage.spec.js +3 -3
  27. package/9_conso_ch.spec.js +1 -0
  28. package/9_emetteur_ch.spec.js +1 -0
  29. package/9_generateur_ch.spec.js +1 -0
  30. package/README.md +442 -291
  31. package/conso.spec.js +1 -0
  32. package/engine.js +3 -1
  33. package/engine.spec.js +1 -0
  34. package/ficheTechnique.js +133 -53
  35. package/ficheTechnique.spec.js +46 -14
  36. package/formula.js +251 -0
  37. package/formula.spec.js +99 -0
  38. package/package.json +15 -15
  39. package/utils.js +195 -44
  40. package/utils.spec.js +69 -0
  41. package/features/engine/domain/apport_et_besoin/apport-et-besoin.service.spec.js +0 -222
  42. package/features/engine/domain/apport_et_besoin/ch/perte-ch-recup.service.spec.js +0 -345
  43. package/features/engine/domain/apport_et_besoin/ecs/besoin-ecs.service.spec.js +0 -87
  44. package/features/engine/domain/apport_et_besoin/ecs/perte-ecs-recup.service.spec.js +0 -260
  45. package/features/engine/domain/apport_et_besoin/froid/besoin-froid.service.spec.js +0 -272
  46. package/features/engine/domain/apport_et_besoin/surface-sud-equivalente.service.spec.js +0 -231
  47. package/features/engine/domain/ch/generateur-ch.service.spec.js +0 -849
  48. package/features/engine/domain/conso/froid/conso-froid.service.spec.js +0 -233
  49. package/features/engine/domain/ecs/installation-ecs.service.spec.js +0 -337
  50. package/features/engine/domain/enveloppe/baie_vitree/deperdition-baie-vitree.service.spec.js +0 -607
  51. package/features/engine/domain/enveloppe/deperdition-enveloppe.service.spec.js +0 -550
  52. package/features/engine/domain/enveloppe/espace_tampon/espace-tampon.service.spec.js +0 -82
  53. package/features/engine/domain/enveloppe/mur/deperdition-mur.service.spec.js +0 -542
  54. package/features/engine/domain/enveloppe/plancher_bas/deperdition-plancher-bas.service.spec.js +0 -430
  55. package/features/engine/domain/enveloppe/plancher_haut/deperdition-plancher-haut.service.spec.js +0 -411
  56. package/features/engine/domain/enveloppe/pont_thermique/deperdition-pont-thermique.service.spec.js +0 -653
  57. package/features/engine/domain/enveloppe/porte/deperdition-porte.service.spec.js +0 -117
  58. package/features/engine/domain/enveloppe/ventilation/deperdition-ventilation.service.spec.js +0 -508
@@ -1,231 +0,0 @@
1
- import corpus from '../../../../../test/corpus-sano.json';
2
- import { beforeEach, describe, expect, test, vi } from 'vitest';
3
- import { DpeNormalizerService } from '../../../normalizer/domain/dpe-normalizer.service.js';
4
- import { ContexteBuilder } from '../contexte.builder.js';
5
- import { SurfaceSudEquivalenteService } from './surface-sud-equivalente.service.js';
6
- import { getAdemeFileJson } from '../../../../../test/test-helpers.js';
7
- import { BaieVitreeTvStore } from '../../../dpe/infrastructure/enveloppe/baieVitreeTv.store.js';
8
- import { describeIntegration } from '../../../../../test/helpers/integration-test.js';
9
-
10
- /** @type {SurfaceSudEquivalenteService} **/
11
- let service;
12
-
13
- /** @type {DpeNormalizerService} **/
14
- let normalizerService;
15
-
16
- /** @type {ContexteBuilder} **/
17
- let contexteBuilder;
18
-
19
- /** @type {BaieVitreeTvStore} **/
20
- let tvStore;
21
-
22
- describe('Calcul de la surface sud équivalente du logement', () => {
23
- beforeEach(() => {
24
- tvStore = new BaieVitreeTvStore();
25
- service = new SurfaceSudEquivalenteService(tvStore);
26
- normalizerService = new DpeNormalizerService();
27
- contexteBuilder = new ContexteBuilder();
28
- });
29
-
30
- describe('Determination de la surface sud équivalente pour une baie vitrée bv et pendant un mois donné', () => {
31
- test.each([
32
- {
33
- enumOrientationId: 2,
34
- enumInclinaisonVitrageId: 3,
35
- fe1: 1,
36
- fe2: 1,
37
- sw: 0.2,
38
- coeff: 1,
39
- expected: 5
40
- },
41
- {
42
- enumOrientationId: 2,
43
- enumInclinaisonVitrageId: undefined,
44
- fe1: 1,
45
- fe2: 1,
46
- sw: 0.2,
47
- coeff: 1,
48
- expected: 5
49
- },
50
- {
51
- enumOrientationId: 2,
52
- enumInclinaisonVitrageId: undefined,
53
- fe1: 1,
54
- fe2: 1,
55
- sw: 0.2,
56
- coeff: undefined,
57
- expected: 1
58
- },
59
- {
60
- enumOrientationId: 2,
61
- enumInclinaisonVitrageId: 3,
62
- fe1: 0.5,
63
- fe2: 0.5,
64
- sw: 0.2,
65
- coeff: 1,
66
- expected: 1.25
67
- },
68
- {
69
- enumOrientationId: 2,
70
- enumInclinaisonVitrageId: 3,
71
- fe1: undefined,
72
- fe2: undefined,
73
- sw: 0.2,
74
- coeff: 1,
75
- expected: 5
76
- }
77
- ])(
78
- 'enumOrientationId: $enumOrientationId, enumInclinaisonVitrageId: $enumInclinaisonVitrageId, fe1: $fe1,' +
79
- 'fe2: $fe2, sw: $sw, coeff: $coeff',
80
- ({
81
- enumOrientationId,
82
- enumInclinaisonVitrageId = undefined,
83
- fe1,
84
- fe2,
85
- sw,
86
- coeff = undefined,
87
- expected
88
- }) => {
89
- vi.spyOn(tvStore, 'getCoefficientBaieVitree').mockReturnValue(0.5);
90
-
91
- /** @type {BaieVitree} */
92
- const baieVitree = {
93
- donnee_entree: {
94
- enum_orientation_id: enumOrientationId,
95
- enum_inclinaison_vitrage_id: enumInclinaisonVitrageId,
96
- surface_totale_baie: 10
97
- },
98
- donnee_intermediaire: { fe1, fe2, sw }
99
- };
100
-
101
- const ssd = service.ssdBaieMois(baieVitree, '1', 'Janvier', coeff);
102
-
103
- if (enumInclinaisonVitrageId === undefined) {
104
- enumInclinaisonVitrageId = 3;
105
- }
106
-
107
- expect(tvStore.getCoefficientBaieVitree).toHaveBeenCalledWith(
108
- enumOrientationId,
109
- enumInclinaisonVitrageId,
110
- 1,
111
- 'Janvier'
112
- );
113
- expect(ssd).toBe(expected);
114
- }
115
- );
116
- });
117
-
118
- describe('Determination de la surface sud équivalente des baies vitrées bv', () => {
119
- test("Aucune pour les baies vitrées qui ne donnent pas sur l'extérieur", () => {
120
- expect(service.execute({}, [])).toBe(0);
121
-
122
- /** @type {Enveloppe} */
123
- const enveloppe = {
124
- baie_vitree_collection: {
125
- baie_vitree: [
126
- {
127
- donnee_entree: { enum_type_adjacence_id: 18 }
128
- }
129
- ]
130
- }
131
- };
132
- expect(service.ssdMois({}, enveloppe, 'Janvier')).toBe(0);
133
- });
134
-
135
- test("Baies vitrées donnant sur l'extérieur", () => {
136
- vi.spyOn(tvStore, 'getCoefficientBaieVitree').mockReturnValue(0.5);
137
-
138
- /** @type {Contexte} */
139
- const ctx = { zoneClimatique: { id: 1 } };
140
-
141
- /** @type {Enveloppe} */
142
- const enveloppe = {
143
- baie_vitree_collection: {
144
- baie_vitree: [
145
- {
146
- donnee_entree: {
147
- enum_type_adjacence_id: 1,
148
- enum_orientation_id: 2,
149
- surface_totale_baie: 10
150
- },
151
- donnee_intermediaire: { sw: 1 }
152
- }
153
- ]
154
- }
155
- };
156
- expect(service.ssdMois(ctx, enveloppe, 'Janvier')).toBe(5);
157
- expect(tvStore.getCoefficientBaieVitree).toHaveBeenCalledWith(2, 3, 1, 'Janvier');
158
- });
159
-
160
- test('Baies vitrées donnant sur un espace tampon solarisé', () => {
161
- vi.spyOn(tvStore, 'getCoefficientBaieVitree').mockReturnValue(0.5);
162
-
163
- /** @type {Contexte} */
164
- const ctx = { zoneClimatique: { id: 1 } };
165
-
166
- /** @type {Enveloppe} */
167
- const enveloppe = {
168
- baie_vitree_collection: {
169
- baie_vitree: [
170
- {
171
- donnee_entree: {
172
- enum_type_adjacence_id: 10,
173
- enum_orientation_id: 2,
174
- surface_totale_baie: 10
175
- },
176
- donnee_intermediaire: { sw: 1 }
177
- },
178
- {
179
- donnee_entree: {
180
- enum_type_adjacence_id: 1,
181
- enum_orientation_id: 2,
182
- surface_totale_baie: 10
183
- },
184
- donnee_intermediaire: { sw: 1 }
185
- }
186
- ]
187
- },
188
- ets_collection: {
189
- ets: {
190
- donnee_intermediaire: { bver: 0.6, coef_transparence_ets: 0.4 },
191
- baie_ets_collection: {
192
- baie_ets: {
193
- donnee_entree: {
194
- enum_inclinaison_vitrage_id: 3,
195
- enum_orientation_id: 1,
196
- surface_totale_baie: 7
197
- }
198
- }
199
- }
200
- }
201
- }
202
- };
203
-
204
- expect(service.ssdMois(ctx, enveloppe, 'Janvier')).toBe(6.5224);
205
- expect(tvStore.getCoefficientBaieVitree).toHaveBeenCalledWith(2, 3, 1, 'Janvier');
206
- expect(tvStore.getCoefficientBaieVitree).toHaveBeenCalledWith(1, 3, 1, 'Janvier');
207
- });
208
- });
209
-
210
- describeIntegration("Test d'intégration pour surface sud équivalente", () => {
211
- test.each(corpus)(
212
- 'vérification des DI de la surface sud équivalente pour dpe %s',
213
- (ademeId) => {
214
- /**
215
- * @type {Dpe}
216
- */
217
- let dpeRequest = getAdemeFileJson(ademeId);
218
- dpeRequest = normalizerService.normalize(dpeRequest);
219
-
220
- /** @type {Contexte} */
221
- const ctx = contexteBuilder.fromDpe(dpeRequest);
222
-
223
- const sse = service.execute(ctx, dpeRequest.logement.enveloppe);
224
- expect(sse).toBeCloseTo(
225
- dpeRequest.logement.sortie.apport_et_besoin.surface_sud_equivalente,
226
- 2
227
- );
228
- }
229
- );
230
- });
231
- });