Skip to content

Commit

Permalink
fix(fix-125): ECS generation with solar production
Browse files Browse the repository at this point in the history
  • Loading branch information
Jérôme GAVIGNET committed Oct 17, 2024
1 parent e42c03b commit a25f0cf
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 6 deletions.
4 changes: 2 additions & 2 deletions src/11_ecs.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ function tv_rendement_distribution_ecs(di, de, du, pvc) {
}
}

export default function calc_ecs(ecs, becs, becs_dep, GV, ca_id, zc_id) {
export default function calc_ecs(ecs, becs, becs_dep, GV, ca_id, zc_id, th) {
const de = ecs.donnee_entree;
const di = {};
const du = {};
Expand All @@ -55,7 +55,7 @@ export default function calc_ecs(ecs, becs, becs_dep, GV, ca_id, zc_id) {
tv_rendement_distribution_ecs(di, de, du, pvc);

const gen_ecs_list = ecs.generateur_ecs_collection.generateur_ecs;
gen_ecs_list.forEach((gen_ecs) => calc_gen_ecs(gen_ecs, di, GV, ca_id, zc_id));
gen_ecs_list.forEach((gen_ecs) => calc_gen_ecs(gen_ecs, di, de, GV, ca_id, zc_id, th));

di.conso_ecs = gen_ecs_list.reduce(
(acc, gen_ecs) => acc + gen_ecs.donnee_intermediaire.conso_ecs,
Expand Down
32 changes: 29 additions & 3 deletions src/14_generateur_ecs.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,23 @@ function tv_pertes_stockage(di, de) {
}
}

function tv_facteur_couverture_solaire(di, de, zc_id, th) {
const matcher = {
enum_zone_climatique_id: zc_id,
type_installation_solaire:
enums.type_installation_solaire[de.enum_type_installation_solaire_id],
type_batiment: th === 'maison' ? 'maison' : 'immeuble'
};

const row = tv('facteur_couverture_solaire', matcher);
if (row) {
di.fecs = Number(row.facteur_couverture_solaire);
de.tv_facteur_couverture_solaire_id = Number(row.tv_facteur_couverture_solaire_id);
} else {
console.error('!! pas de valeur forfaitaire trouvée pour facteur_couverture_solaire !!');
}
}

// 15.2.3
export function calc_Qdw_j(instal_ecs, becs_j) {
const de = instal_ecs.donnee_entree;
Expand Down Expand Up @@ -113,7 +130,7 @@ function rg_accumulateur_gaz(di, besoin_ecs) {
return rg;
}

export default function calc_gen_ecs(gen_ecs, ecs_di, GV, ca_id, zc_id) {
export default function calc_gen_ecs(gen_ecs, ecs_di, ecs_de, GV, ca_id, zc_id, th) {
const de = gen_ecs.donnee_entree;
const di = gen_ecs.donnee_intermediaire || {};
const du = {};
Expand Down Expand Up @@ -192,8 +209,17 @@ export default function calc_gen_ecs(gen_ecs, ecs_di, GV, ca_id, zc_id) {
Iecs_dep = Iecs_dep / rd;

di.ratio_besoin_ecs = 1;
di.conso_ecs = ecs_di.besoin_ecs * Iecs;
di.conso_ecs_depensier = ecs_di.besoin_ecs_depensier * Iecs_dep;

// Système ECS avec solaire (paragraphe 11.3 de la doc Méthode de calcul 3CL-DPE 2021)
if (ecs_de.enum_type_installation_solaire_id) {
tv_facteur_couverture_solaire(ecs_di, ecs_de, zc_id, th);

di.conso_ecs = ecs_di.besoin_ecs * (1 - ecs_di.fecs) * Iecs;
di.conso_ecs_depensier = ecs_di.besoin_ecs_depensier * (1 - ecs_di.fecs) * Iecs_dep;
} else {
di.conso_ecs = ecs_di.besoin_ecs * Iecs;
di.conso_ecs_depensier = ecs_di.besoin_ecs_depensier * Iecs_dep;
}

gen_ecs.donnee_intermediaire = di;
gen_ecs.donnee_utilisateur = du;
Expand Down
2 changes: 1 addition & 1 deletion src/engine.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ export function calcul_3cl(dpe) {

const becs = apport_et_besoin.besoin_ecs;
const becs_dep = apport_et_besoin.besoin_ecs_depensier;
ecs.forEach((ecs) => calc_ecs(ecs, becs, becs_dep, GV, ca_id, zc_id));
ecs.forEach((ecs) => calc_ecs(ecs, becs, becs_dep, GV, ca_id, zc_id, th));

const ac = cg.annee_construction;
// needed for apport_et_besoin
Expand Down

0 comments on commit a25f0cf

Please sign in to comment.