@jzck/open3cl
Version:
Open Source 3CL-DPE engine
96 lines (87 loc) • 2.9 kB
JavaScript
import { requestInputID } from './utils.js';
import { rendement_emission } from './9_emetteur_ch.js';
import { calc_intermittence } from './8_intermittence.js';
function coef_ch(Fch) {
return {
'installation de chauffage simple': {
0: 1,
1: 1
},
'installation de chauffage avec chauffage solaire': {
0: 1 - Fch
},
'installation de chauffage avec insert ou poêle bois en appoint': {
0: 0.75,
1: 0.25
},
// todo: 2 sdb
'installation de chauffage par insert, poêle bois (ou biomasse) avec un chauffage électrique dans la salle de bain':
{
0: 0.9,
1: 0.1
},
'installation de chauffage avec en appoint un insert ou poêle bois et un chauffage électrique dans la salle de bain (différent du chauffage principal)':
{
0: 0.75 * 0.9,
1: 0.25 * 0.9,
2: 0.1
},
'installation de chauffage avec une chaudière ou une pac en relève d’une chaudière bois': {
0: 0.75,
1: 0.25
},
'installation de chauffage avec chauffage solaire et insert ou poêle bois en appoint': {
0: 0.75 * (1 - Fch),
1: 0.25 * (1 - Fch)
},
'installation de chauffage avec chaudière en relève de pac': {
0: 0.8,
1: 0.2
},
'installation de chauffage avec chaudière en relève de pac avec insert ou poêle bois en appoint':
{
0: 0.8 * 0.75,
1: 0.2 * 0.75,
2: 0.25
},
'installation de chauffage collectif avec base + appoint': {
0: 0.75 * (1 - Fch),
1: 0.25 * (1 - Fch)
},
'convecteurs bi-jonction': {
0: 0.6,
1: 0.4
}
};
}
export function conso_ch(di, de, du, _pos, cfg_ch, em_list, GV, Sh, hsp, bch, bch_dep) {
const gen_lge_id = requestInputID(de, du, 'lien_generateur_emetteur');
const coef = coef_ch(de.fch || 0.5)[cfg_ch][_pos] || 1;
let em_filt;
if (em_list.length === 1) {
em_filt = em_list;
} else {
em_filt = em_list.filter(
(em) => em.donnee_entree.enum_lien_generateur_emetteur_id === gen_lge_id
);
}
const hasMultipleEmetteur = em_filt.length > 1;
const emetteur_eq = em_filt.reduce((acc, em) => {
const int = calc_intermittence(GV, Sh, hsp, em.donnee_intermediaire.i0);
const r_em = rendement_emission(em);
/**
* 9.1.3 Installation avec plusieurs émissions pour un même générateur
* La part de la consommation traitée par chaque émetteur est proratisé par le ratio des surfaces habitables.
* @type {number|number}
*/
const ratio_s = hasMultipleEmetteur
? em.donnee_entree.surface_chauffee / de.surface_chauffee
: 1;
const Ich = 1 / r_em;
return acc + ratio_s * int * Ich;
}, 0);
const Ich = emetteur_eq / di.rg;
const Ich_dep = emetteur_eq / di.rg_dep;
di.conso_ch = coef * Ich * bch;
di.conso_ch_depensier = coef * Ich_dep * bch_dep;
}