Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions src/13.2_generateur_combustion_ch.js
Original file line number Diff line number Diff line change
Expand Up @@ -370,9 +370,10 @@ export function calc_generateur_combustion_ch(dpe, di, de, du) {
const k = K[type_energie];

// Pveil and QP0 are in kW
const Pveil = di.pveil / 1000;
// rg est d'abord calculé sur PCS (puis × k pour revenir en PCI) : QP0 doit donc être exprimé
// sur PCS, comme dans QPx() (qp0 × k). Cf. issue #205.
// rg est d'abord calculé sur PCS (puis × k pour revenir en PCI) : QP0 et Pveil (pertes de la
// veilleuse, consommation de combustible) doivent donc être exprimés sur PCS, comme dans QPx()
// (qp0 × k). Cf. issue #205 et autotests État MI4-0-x (Tribu : Pveil × k).
const Pveil = (di.pveil * k) / 1000;
const QP0 = (di.qp0 * k) / 1000;

const rg_pcs = Pmfou / (Pmcons + 0.45 * QP0 + Pveil);
Expand Down
83 changes: 83 additions & 0 deletions src/13.2_generateur_combustion_ch.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ vi.mock('./enums.js', () => ({
default: {
type_generateur_ch: {
89: 'chaudière gaz standard 2001-2015',
86: 'chaudière gaz classique 1981-1985',
55: 'chaudière bois bûche avant 1978',
96: 'chaudière gaz à condensation 2001-2015',
70: 'chaudière gaz basse température 2001-2015',
Expand Down Expand Up @@ -704,6 +705,88 @@ describe('calc_generateur_combustion_ch - rendement de génération', () => {
expect(di.rg).toBeCloseTo(0.8511886946001722, 12);
});

/**
* Référence externe : autotest État CSTB `MI4-0-1`, moteur Moteur_DPE.dll (Tribu). Chaudière gaz
* classique 1981-1985 avec veilleuse, Pn = 24 kW, valeurs par défaut (Rpn, Rpint, Qp0 = 480 W,
* Pveil = 150 W, Tfonc30/100 = 56/70, Cdimref = 0.05 / TchFinal(Ch_5)).
* Comme QP0, la puissance de veilleuse est exprimée sur PCS (Pveil × k) dans le dénominateur.
* Avant correctif (Pveil sur PCI) : rg = 0.740607866698453 (Cch −0,42 %).
* @see : Methode_de_calcul_3CL_DPE_2021-338.pdf - §13.2.1.2
*/
test('autotest État MI4-0-1 : rg identique à Tribu (Pveil exprimée sur PCS)', () => {
const di = {
pn: 24000,
rpn: 0.8676042248342321,
rpint: 0.8414063372513482,
qp0: 480,
pveilleuse: 150,
pveil: 150,
temp_fonc_30: 56,
temp_fonc_100: 70
};
const de = {
enum_type_generateur_ch_id: '86',
enum_type_energie_id: '2',
type_energie: 'gaz naturel',
presence_regulation_combustion: true,
description: 'Chaudière classique 81-85'
};
const cdimref = 0.05 / 0.01710986374076308;
calc_generateur_combustion_ch({}, di, de, { cdimref, cdimrefDep: cdimref });
// Rg Tribu (sortie MI4-0-1_Sortie.xml) : 0.7374941696172325
expect(di.rg).toBeCloseTo(0.7374941696172325, 12);
});

test('la veilleuse est convertie sur PCS : rg_pcs = Pmfou / (Pmcons + 0.45 × QP0 × k + Pveil × k)', () => {
const base = () => ({
pn: 24000,
rpn: 0.87,
rpint: 0.84,
qp0: 0,
pveilleuse: 150,
pveil: 150,
temp_fonc_30: 56,
temp_fonc_100: 70
});
const de = {
enum_type_generateur_ch_id: '86',
enum_type_energie_id: '2',
presence_regulation_combustion: true,
description: 't'
};
const avecVeilleuse = base();
calc_generateur_combustion_ch(
{},
avecVeilleuse,
{ ...de, type_energie: 'gaz naturel' },
{
cdimref: 3
}
);
const sansVeilleuse = { ...base(), pveilleuse: 0, pveil: 0 };
calc_generateur_combustion_ch(
{},
sansVeilleuse,
{ ...de, type_energie: 'gaz naturel' },
{
cdimref: 3
}
);
// rg = k × Pmfou / Pmcons sans veilleuse ; avec veilleuse : k × Pmfou / (Pmcons + 0.15 × k)
const k = 1.11;
const coefPond = { 0.05: 0.1, 0.15: 0.25, 0.25: 0.2, 0.35: 0.15, 0.45: 0.1, 0.55: 0.1 };
Object.assign(coefPond, { 0.65: 0.05, 0.75: 0.025, 0.85: 0.025, 0.95: 0 });
const pmfou = Object.entries(coefPond).reduce(
(acc, [x, c]) => acc + 24 * Math.min(1, Number(x) / 3) * c,
0
);
const pmcons = (k * pmfou) / sansVeilleuse.rg;
const attendu = (k * pmfou) / (pmcons + 0.15 * k);
expect(avecVeilleuse.rg).toBeCloseTo(attendu, 12);
// sur PCI (avant correctif), le rendement serait plus élevé
expect(avecVeilleuse.rg).toBeLessThan((k * pmfou) / (pmcons + 0.15));
});

test('les pertes à charge nulle QP0 réduisent le rendement de génération', () => {
const di = () => ({
pn: 23000,
Expand Down
Loading