diff --git a/src/15_conso_aux.js b/src/15_conso_aux.js index ee1416ce..939d7897 100644 --- a/src/15_conso_aux.js +++ b/src/15_conso_aux.js @@ -368,6 +368,24 @@ export function conso_aux_distribution_ecs( ) { const typeInstallation = parseInt(de.enum_type_installation_id); + const ratioVirtu = parseFloat(de.ratio_virtualisation); + let Sh_immeuble_ratio = Sh_immeuble; + let Sh_install = de.surface_habitable || Sh_logement; + let Niv_inst_ecs = de.nombre_niveau_installation_ecs || 1; + + if (!(Sh_immeuble > Sh_logement) && ratioVirtu > 0 && ratioVirtu < 1) { + Sh_immeuble_ratio = Sh_logement / ratioVirtu; + Sh_install = Sh_logement; + Niv_inst_ecs = nombre_niveau_immeuble || Niv_inst_ecs; + } + + // Etape 3: Lb - longueur par défaut du bouclage ECS (m) + // Sh est la surface habitable des logements desservis par l'installation d'ECS + // Pour l'appartement, on utilise la surface à l'échelle de l'immeuble + const Sh = (Sh_install / Sh_logement) * Sh_immeuble_ratio; + const Lb = 4 * Math.pow(Sh / Niv_inst_ecs, 0.5) + 6 * (Niv_inst_ecs - 0.5); + di.lb = Lb; + if (typeInstallation === 1) { di.conso_auxiliaire_distribution_ecs = 0; return; @@ -402,24 +420,6 @@ export function conso_aux_distribution_ecs( const ca = enums.classe_altitude[caId]; const zc = enums.zone_climatique[zcId]; - const ratioVirtu = parseFloat(de.ratio_virtualisation); - let Sh_immeuble_ratio = Sh_immeuble; - let Sh_install = de.surface_habitable || Sh_logement; - let Niv_inst_ecs = de.nombre_niveau_installation_ecs || 1; - - if (!(Sh_immeuble > Sh_logement) && ratioVirtu > 0 && ratioVirtu < 1) { - Sh_immeuble_ratio = Sh_logement / ratioVirtu; - Sh_install = Sh_logement; - Niv_inst_ecs = nombre_niveau_immeuble || Niv_inst_ecs; - } - - // Etape 3: Lb - longueur par défaut du bouclage ECS (m) - // Sh est la surface habitable des logements desservis par l'installation d'ECS - // Pour l'appartement, on utilise la surface à l'échelle de l'immeuble - const Sh = (Sh_install / Sh_logement) * Sh_immeuble_ratio; - const Lb = 4 * Math.pow(Sh / Niv_inst_ecs, 0.5) + 6 * (Niv_inst_ecs - 0.5); - di.lb = Lb; - // Etape 4: DeltaPb (kPa) - perte de charge dans le bouclage const DeltaPb = 0.2 * Lb + 10; diff --git a/src/15_conso_aux.spec.js b/src/15_conso_aux.spec.js index b953dc92..1b53b6fb 100644 --- a/src/15_conso_aux.spec.js +++ b/src/15_conso_aux.spec.js @@ -874,7 +874,7 @@ describe("conso_aux_distribution_ecs - auxiliaires de distribution d'ECS", () => ])('%s : pas de longueur de bouclage lb', (_libelle, de) => { const di = { besoin_ecs: 1000 }; conso_aux_distribution_ecs({}, de, di, 50, 2000, 1, 1, 30); - expect(di.lb).toBeUndefined(); + expect(di.lb).toBeCloseTo(181.88543819998318); }); test('plus de niveaux desservis : bouclage plus court, donc consommation plus faible', () => { diff --git a/types.d.ts b/types.d.ts index c2f9cbfa..8621334d 100644 --- a/types.d.ts +++ b/types.d.ts @@ -256,6 +256,7 @@ interface Donnee_intermediaire { qp0?: number; pn?: number; k?: number; + lb?: number; } interface Plancher_bas_collection { plancher_bas: PlancherBasItem[];