GithubHelp home page GithubHelp logo

open3cl's People

Contributors

fperinel avatar jzck avatar michaeldesigaud avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

redfroggy

open3cl's Issues

Arrondi dans la fraction d'apport gratuit

Describe the bug
Dans les tests actuels on contrôle la valeur de la fraction d'apport gratuit, cependant, dans beaucoup de logiciels, il semble que cette valeur sont arrondie à 1 si elle n'est pas nulle.

To Reproduce
Dans le DPE 2187E0981996L,

        <fraction_apport_gratuit_ch>1</fraction_apport_gratuit_ch>
        <fraction_apport_gratuit_depensier_ch>1</fraction_apport_gratuit_depensier_ch>

le résultat du calcul étant :

        <fraction_apport_gratuit_ch>0.16292857201616517</fraction_apport_gratuit_ch>
        <fraction_apport_gratuit_depensier_ch>0.13390710099435527</fraction_apport_gratuit_depensier_ch>

Expected behavior
Le test devrait essayer d'arrondir la valeur à 1 si elle n'est pas nulle pour voir si elle corresponds à la valeur du DPE d'origine.

Additional context

  • NodeJS version: 18.16.0

DPE erroné 2287E2021836I

Describe the bug
Le DPE 2287E2021836I comporte des erreurs sur les valeurs de déperdition des murs.

image

Cependant, les données intermédiaires sont toutes identiques sur les murs. Les calculs devraient donc sortir la même chose (aux arrondis près).

To Reproduce
J'ai utilisé un autre logiciel pour faire l'analyse de ce DPE et le résultat de la déperdition des murs est cohérente avec celle trouvée par la librairie.
image

En excluant les plancher et plafond, on retrouve une déperdition de 72,27 cohérente avec le résultat Open3CL.

Expected behavior
La valeur de deperdition des murs devrait être la somme de deperdition de chaque mur soit 72,27.

Additional context

  • NodeJS version: 18.16.0

DPE erroné 2287E1724516Y

Describe the bug
Le DPE 2287E1724516Y comporte des erreurs sur les valeurs de uMur et de uMur0.

{
        donnee_entree: {
          description:
            "Mur  4 Nord, Sud (p1) - Mur en pan de bois sans remplissage tout venant d'épaisseur 18 cm avec isolation intérieure (R=2.5m².K/W) donnant sur l'extérieur",
          reference: '2022_07_28_05_58_44_4984876005871074',
          tv_coef_reduction_deperdition_id: 1,
          enum_type_adjacence_id: '1',
          enum_orientation_id: '2',
          surface_paroi_totale: 10.4,
          surface_paroi_opaque: 10.4,
          tv_umur0_id: 34,
          epaisseur_structure: 18,
          enum_materiaux_structure_mur_id: '5', // Murs en pan de bois sans remplissage tout venant
          enum_methode_saisie_u0_id: '2', // déterminé selon le matériau et épaisseur à partir de la table de valeur forfaitaire
          paroi_ancienne: 1,
          enum_type_doublage_id: '2', // absence de doublage
          enum_type_isolation_id: '3', // ITI
          resistance_isolation: 2.5,
          enum_methode_saisie_u_id: '6' // Resistance isolation saisie justifiée  à partir des documents justificatifs autorisés
        },
        donnee_intermediaire: {
          b: 1,
          umur: 0.26990177584075975,
          umur0: 0.8298399999999999
        }
      }

En sortie de calcul on obtient :

{
        donnee_entree: {
          description:
            "Mur  4 Nord, Sud (p1) - Mur en pan de bois sans remplissage tout venant d'épaisseur 18 cm avec isolation intérieure (R=2.5m².K/W) donnant sur l'extérieur",
          reference: '2022_07_28_05_58_44_4984876005871074',
          tv_coef_reduction_deperdition_id: 1,
          enum_type_adjacence_id: '1',
          enum_orientation_id: '2',
          surface_paroi_totale: 10.4,
          surface_paroi_opaque: 10.4,
          tv_umur0_id: 34,
          epaisseur_structure: 18,
          enum_materiaux_structure_mur_id: '5', // Murs en pan de bois sans remplissage tout venant
          enum_methode_saisie_u0_id: '2', // déterminé selon le matériau et épaisseur à partir de la table de valeur forfaitaire
          paroi_ancienne: 1,
          enum_type_doublage_id: '2', // absence de doublage
          enum_type_isolation_id: '3', // ITI
          resistance_isolation: 2.5,
          enum_methode_saisie_u_id: '6' // Resistance isolation saisie justifiée  à partir des documents justificatifs autorisés
        },
        donnee_intermediaire: {
          b: 1,
          umur: 0.33277310924369746,
          umur0: 1.98
        }
      }

To Reproduce
image

umur_nu = 1.98
umur = 1 / ((1/1.98) + 2.5) = 0,332773109

Expected behavior
La valeur de uMur devrait être 0,332773109 et uMur0 1.98

Additional context

  • NodeJS version: 18.16.0

Calcul de la déperdition des planchers bas non conforme avec 2187E0982591I

Describe the bug
Dans le DPE 2187E0982591I, la déperdition des planchers bas n'est pas cohérente entre le résultat de la lib et la valeur du DPE d'origine.
Les données intermédiaires ne sont pas les mêmes.

Dans le DPE d'origine

{
      "donnee_entree": {
        "description": "Plancher  1 - Plancher avec ou sans remplissage non isolé donnant sur un terre-plein",
        "enum_type_adjacence_id": "5",          // terre-plein
        "surface_paroi_opaque": 44.8,
        "tv_upb0_id": 2,
        "enum_type_plancher_bas_id": "2",     // Plancher avec ou sans remplissage
        "enum_methode_saisie_u0_id": "2",     // déterminé selon le matériau et épaisseur à partir de la table de valeur forfaitaire
        "enum_type_isolation_id": "2",        // Non isolé
        "enum_methode_saisie_u_id": "1",      // Non isolé
        "calcul_ue": 1,
        "perimetre_ue": 12.8,
        "ue": 0.38538462
      },
      "donnee_intermediaire": {
        "b": 1,
        "upb": 1.45,
        "upb_final": 0.38538462,
        "upb0": 1.45
      }
    }

En sortie de calcul on obtient :

{
            "donnee_entree": {
              "description": "Plancher  1 - Plancher avec ou sans remplissage non isolé donnant sur un terre-plein",
              "enum_type_adjacence_id": "5",
              "surface_paroi_opaque": 44.8,
              "tv_upb0_id": 2,
              "enum_type_plancher_bas_id": "2",
              "enum_methode_saisie_u0_id": "2",
              "enum_type_isolation_id": "2",
              "enum_methode_saisie_u_id": "1",
              "calcul_ue": 1,
              "perimetre_ue": 12.8,
              "ue": 0.3361538461538462,
              "reference": "plancher_bas_0",
              "tv_coef_reduction_deperdition_id": 5
            },
            "donnee_intermediaire": {
              "b": 1,
              "upb0": 1.45,
              "upb": 1.45,
              "upb_final": 0.3361538461538462
            }
 }

To Reproduce

Surface sur terre plein
P = 12.8
S = 44.8
2S/P = (2 * 44.8) / 12.8 = 7 (arrondi à l'entier le plus proche)
upb0 = 1.45
upb = 1.45

image

upbInf = 0.85
upbSup = 1.5
ueInf = 0.33
ueSup = 0.39

image

D'après la norme :

Les données ne figurant pas dans le tableau peuvent être obtenues par interpolation et extrapolation en traçant des
droites entre les valeurs les plus proches présentes dans le tableau

ue = ueInf + ( ueSup - ueInf ) * (upb - upbInf) / (upbSup - upbInf)
ue = 0.33 + ( 0.39 - 0.33 ) * (1.45 - 0.85) / ( 1.5 - 0.85)
ue = 0,385384615
upb_final = ue = 0,385384615

Expected behavior
Le calcul de la lib n'est pas bon et devrait retourner upb_final = ue = 0,385384615
Le problème semble venir de la fonction tv_ue qui fait la somme des surfaces de tous les planches sans distinction du type d'adjacence. Les planchers donnant sur des terre plein sont ajouté à ceux donnant sur vide sanitaire alors que les règles ne sont pas les mêmes.

Additional context

  • NodeJS version: 18.16.0

DPE erroné 2187E0982013C

Describe the bug
Le DPE 2187E0982013C comporte des erreurs sur les valeurs de uMur et de uMur0.

{
    "donnee_entree": {
      "description": "Mur Nord, Sud, Est, Ouest - Mur en pierre de taille et moellons avec remplissage tout venant d'épaisseur 50 cm non isolé donnant sur l'extérieur",
      "enum_type_adjacence_id": "1",
      "enum_orientation_id": "4",
      "surface_paroi_totale": 134.76,
      "surface_paroi_opaque": 134.76,
      "tv_umur0_id": 15,
      "enum_materiaux_structure_mur_id": "3",
      "enum_methode_saisie_u0_id": "2",
      "paroi_ancienne": 1,
      "enum_type_doublage_id": "2",
      "enum_type_isolation_id": "2",
      "enum_methode_saisie_u_id": "1"
    },
    "donnee_intermediaire": {
      "b": 1,
      "umur": 0.81545,
      "umur0": 0.81545
    }
  }

En sortie de calcul on obtient :

{
    "donnee_entree": {
      "description": "Mur Nord, Sud, Est, Ouest - Mur en pierre de taille et moellons avec remplissage tout venant d'épaisseur 50 cm non isolé donnant sur l'extérieur",
      "enum_type_adjacence_id": "1",
      "enum_orientation_id": "4",
      "surface_paroi_totale": 134.76,
      "surface_paroi_opaque": 134.76,
      "tv_umur0_id": 15,
      "enum_materiaux_structure_mur_id": "3",
      "enum_methode_saisie_u0_id": "2",
      "paroi_ancienne": 1,
      "enum_type_doublage_id": "2",
      "enum_type_isolation_id": "2",
      "enum_methode_saisie_u_id": "1"
    },
    "donnee_intermediaire": {
      "b": 1,
      "umur": 1.9,
      "umur0": 1.9
    }
  }

To Reproduce
image
image

Umur inconnu
Type de mur “Murs en pierre de taille et moellons avec remplissage tout venant"
Umur0 = 1.9 (l'épaisseur du mur n'étant pas indiqué, on prends la valeur la plus défavorable)
Umur_nu=Min(Umur0 ; 2,5)=1.9
Pas d’isolation (type d’isolation = non isolé)
Umur = Umur_nu = 1.9

Expected behavior
La valeur de uMur et de uMur0 devrait être 1.9

Additional context

  • NodeJS version: 18.16.0

Erreur dans le calcul des apports gratuit

Describe the bug
Le calcul des apports gratuit (solaire et interne) retourne des valeurs erronées.
Exemple avec l'apport solaire :

Expected: 1551436.4819200002
Received: 1551.4364819200002

Avec l'apport interne :

Expected: 1459229.75
Received: 1459.22975

Ce sont les bonnes valeurs, mais un coefficient de 1000 est manquant.
D'après le document "Annexe 1 - Méthode de calcul 3CL-DPE 2021 – juin 2021" pages 43 et 44 les formules de calcul sont :
image
et
image

To Reproduce
Tous les DPE.

Expected behavior
On devrait retrouver la même valeur que le DPE d'origine (valeur retournée divisée par 1000).

Additional context

  • NodeJS version: 18.16.0

DPE erroné 2287E1327399F

Describe the bug
Une différence sur les données intermédiaire est présente sur le DPE 2287E1327399F.
Cela concerne le mur "Mur 1 Nord - ", premier de la collection.

{
            "donnee_entree": {
              "description": "Mur  1 Nord - Mur en pierre de taille et moellons avec remplissage tout venant d'épaisseur 60 cm avec isolation intérieure (R=3,7m².K/W) donnant sur un bâtiment ou local à usage autre que d'habitation",
              "reference": "2022_06_15_14_48_45_6578917004465132",
              "tv_coef_reduction_deperdition_id": 4,
              "enum_type_adjacence_id": "4",
              "enum_orientation_id": "2",
              "surface_paroi_totale": 48.39,
              "surface_paroi_opaque": 48.39,
              "tv_umur0_id": 17,
              "epaisseur_structure": 60,
              "enum_materiaux_structure_mur_id": "3",
              "enum_methode_saisie_u0_id": "2",
              "paroi_ancienne": 1,
              "enum_type_doublage_id": "2",
              "enum_type_isolation_id": "3",
              "resistance_isolation": 3.7,
              "enum_methode_saisie_u_id": "6"
            },
            "donnee_intermediaire": {
              "b": 0.2,
              "umur": 0.19900518501955455,
              "umur0": 0.7547200000000001
            }
          }

En sortie de calcul on obtient :

{
       "donnee_entree": {
              "description": "Mur  1 Nord - Mur en pierre de taille et moellons avec remplissage tout venant d'épaisseur 60 cm avec isolation intérieure (R=3,7m².K/W) donnant sur un bâtiment ou local à usage autre que d'habitation",
              "reference": "2022_06_15_14_48_45_6578917004465132",
              "tv_coef_reduction_deperdition_id": 4,
              "enum_type_adjacence_id": "4",
              "enum_orientation_id": "2",
              "surface_paroi_totale": 48.39,
              "surface_paroi_opaque": 48.39,
              "tv_umur0_id": 17,
              "epaisseur_structure": 60,
              "enum_materiaux_structure_mur_id": "3",
              "enum_methode_saisie_u0_id": "2",
              "paroi_ancienne": 1,
              "enum_type_doublage_id": "2",
              "enum_type_isolation_id": "3",
              "resistance_isolation": 3.7,
              "enum_methode_saisie_u_id": "6"
            },
            "donnee_intermediaire": {
              "umur0": 1.6,
              "b": 0.2,
              "umur": 0.23121387283236994
            }
      }

To Reproduce
image
image

uMur0 = 1.6
umur_nu = Min(uMur0; 2.5) = 1.6
umur = 1 / ((1/umur_nu)+Risolant) = 1 / ((1 / 1.6) + 3.7) = 0,231213873

Expected behavior
La valeur de uMur devrait être 0,231213873 et uMur0 1.6

Additional context

  • NodeJS version: 18.16.0

Erreur calcul de l'intermittence sur les immeubles (valeur i0)

Describe the bug
Pour calculer l'intermittence, la valeur tv_intermittence_id est détectée dans le fichier de table de valeurs (onglet intermittence).
Pour enum_methode_application_dpe_log_id différentes de 1 (maison individuelle), la colonne enum_classe_inertie_id n'est pas renseignée.
Or dans le code on recherche systématiquement une correspondance avec une classe d'inertie pour trouver un identifiant d'intermittence.

const matcher = {
    enum_methode_application_dpe_log_id: map_id,
    enum_type_installation_id: inst_ch_de.enum_type_installation_id,
    enum_type_chauffage_id: de.enum_type_chauffage_id,
    enum_equipement_intermittence_id: de.enum_equipement_intermittence_id,
    enum_type_regulation_id: de.enum_type_regulation_id,
    enum_type_emission_distribution_id: de.enum_type_emission_distribution_id,
    enum_classe_inertie_id: inertie_id,
    /* TODO */
    comptage_individuel: 'Absence'
  };

Du coup on trouve un mauvais type d'intermittence et donc un mauvais u0, je pense qu'il faut conditionner le fait de chercher par enum_classe_inertie_id au logements individuels ?
To Reproduce
2344E0308327N

Expected behavior
Le bon i0 est calculé pour un logement de type "immeuble"

Additional context

  • NodeJS version: 20.12.0
    Add any other context about the problem here.

Erreur dans la sélection du uJn

Describe the bug
Dans la recherche des données intermédiaire des baies vitrées, la valeur ujn utilisée n'est pas la bonne si la valeur de uw est un entier.
Cela vient de la structuration du fichier tv.js et de la manière dont on recherche dedans.

To Reproduce
Exemple avec les baies vitrées 2, 3, 4 et 5 du fichier ademe 2187E0982013C.

Expected behavior
Si la valeur de uw est 3, il ne faut pas chercher "3.0" mais "3".

Additional context

  • NodeJS version: 18.16.0

DPE erroné 2387E0045247S

Describe the bug
Le DPE 2387E0045247S comporte des erreurs sur les valeurs de uMur et de uMur0.

{
        donnee_entree: {
          description:
            "Mur  2 Est - Mur en pierre de taille et moellons avec remplissage tout venant d'épaisseur 50 cm avec un doublage rapporté non isolé donnant sur un garage",
          reference: '2023_01_05_11_43_33_3939838001416257',
          reference_lnc: 'LNC2023_01_05_11_43_33_3939838001416257',
          tv_coef_reduction_deperdition_id: 105,
          surface_aiu: 29,
          surface_aue: 120,
          enum_cfg_isolation_lnc_id: '2', // lc non isolé + lnc non isolé
          enum_type_adjacence_id: '8', // Garage
          enum_orientation_id: '3', // Est
          surface_paroi_totale: 29,
          surface_paroi_opaque: 29,
          tv_umur0_id: 15,
          epaisseur_structure: 50,
          enum_materiaux_structure_mur_id: '3', // Mur en pierre de taille et moellons avec remplissage tout venant
          enum_methode_saisie_u0_id: '2', // déterminé selon le matériau et épaisseur à partir de la table de valeur forfaitaire
          paroi_ancienne: 1,
          enum_type_doublage_id: '4', // doublage indéterminé avec lame d'air sup 15 mm
          enum_type_isolation_id: '2', // Non isolé
          enum_methode_saisie_u_id: '1' // Non isolé
        },
        donnee_intermediaire: {
          b: 0.9,
          umur: 0.6962300000000001,
          umur0: 0.69623
        }
      }

En sortie de calcul on obtient :

{
        donnee_entree: {
          description:
            "Mur  2 Est - Mur en pierre de taille et moellons avec remplissage tout venant d'épaisseur 50 cm avec un doublage rapporté non isolé donnant sur un garage",
          reference: '2023_01_05_11_43_33_3939838001416257',
          reference_lnc: 'LNC2023_01_05_11_43_33_3939838001416257',
          tv_coef_reduction_deperdition_id: 105,
          surface_aiu: 29,
          surface_aue: 120,
          enum_cfg_isolation_lnc_id: '2', // lc non isolé + lnc non isolé
          enum_type_adjacence_id: '8', // Garage
          enum_orientation_id: '3', // Est
          surface_paroi_totale: 29,
          surface_paroi_opaque: 29,
          tv_umur0_id: 15,
          epaisseur_structure: 50,
          enum_materiaux_structure_mur_id: '3', // Mur en pierre de taille et moellons avec remplissage tout venant
          enum_methode_saisie_u0_id: '2', // déterminé selon le matériau et épaisseur à partir de la table de valeur forfaitaire
          paroi_ancienne: 1,
          enum_type_doublage_id: '4', // doublage indéterminé avec lame d'air sup 15 mm
          enum_type_isolation_id: '2', // Non isolé
          enum_methode_saisie_u_id: '1' // Non isolé
        },
        donnee_intermediaire: {
          b: 0.9,
          umur: 1.3581129378127235,
          umur0: 1.3581129378127235
        }
      }

To Reproduce
image
image

Ajouter la correction liée au doublage :

Pour un mur avec un doublage rapporté avec une lame d’air de plus de 15 mm ou avec un matériau de doublage
connu (plâtre, brique, bois) : Rdoublage = 0,21 m2.K/W

umur0_corrige = 1 / ((1 / 1.9) + 0.21) = 1,358112938

Expected behavior
La valeur de uMur et de uMur0 devrait être 1,358112938

Additional context

  • NodeJS version: 18.16.0

DPE erroné 2287E2336469P

Describe the bug
Le DPE 2287E2336469P comporte des erreurs sur les valeurs de uMur et de uMur0.

{
        donnee_entree: {
          description:
            "Mur  1 Est - Mur en pierre de taille et moellons avec remplissage tout venant d'épaisseur 50 cm non isolé donnant sur l'extérieur",
          reference: '2022_10_09_17_17_06_68960810009669888',
          reference_lnc: '',
          tv_coef_reduction_deperdition_id: 1,
          enum_type_adjacence_id: '1', // Exterieur
          enum_orientation_id: '3', // Est
          surface_paroi_totale: 44.22,
          surface_paroi_opaque: 44.22,
          tv_umur0_id: 15,
          epaisseur_structure: 50,
          enum_materiaux_structure_mur_id: '3', // Mur en pierre de taille et moellons avec remplissage tout venant
          enum_methode_saisie_u0_id: '2', // déterminé selon le matériau et épaisseur à partir de la table de valeur forfaitaire
          paroi_ancienne: 1,
          enum_type_doublage_id: '2', // absence de doublage
          enum_type_isolation_id: '2', // Non isolé
          enum_methode_saisie_u_id: '1' // non isolé
        },
        donnee_intermediaire: {
          b: 1,
          umur: 0.81545,
          umur0: 0.81545
        }
      }

En sortie de calcul on obtient :

{
        donnee_entree: {
          description:
            "Mur  1 Est - Mur en pierre de taille et moellons avec remplissage tout venant d'épaisseur 50 cm non isolé donnant sur l'extérieur",
          reference: '2022_10_09_17_17_06_68960810009669888',
          reference_lnc: '',
          tv_coef_reduction_deperdition_id: 1,
          enum_type_adjacence_id: '1', // Exterieur
          enum_orientation_id: '3', // Est
          surface_paroi_totale: 44.22,
          surface_paroi_opaque: 44.22,
          tv_umur0_id: 15,
          epaisseur_structure: 50,
          enum_materiaux_structure_mur_id: '3', // Mur en pierre de taille et moellons avec remplissage tout venant
          enum_methode_saisie_u0_id: '2', // déterminé selon le matériau et épaisseur à partir de la table de valeur forfaitaire
          paroi_ancienne: 1,
          enum_type_doublage_id: '2', // absence de doublage
          enum_type_isolation_id: '2', // Non isolé
          enum_methode_saisie_u_id: '1' // non isolé
        },
        donnee_intermediaire: {
          b: 1,
          umur: 1.9,
          umur0: 1.9
        }
      }

To Reproduce
image
image

Expected behavior
La valeur de uMur et de uMur0 devrait être 1,9

Additional context

  • NodeJS version: 18.16.0

Échec de comparaison dans les tableaux

Description du bug
Certaines comparaisons échoues dans les tableaux de valeurs car le type est différent.

To Reproduce
Exemple dans le fichier 3.2.1_mur.js :

if (!['1', '20'].includes(de.enum_materiaux_structure_mur_id)) {

1 et 20 sont des valeurs string mais de.enum_materiaux_structure_mur_id est une valeur numérique.
Exemple : https://jsfiddle.net/8h03L2bc/1/

Comportement attendu
Que la valeur soit numérique ou chaîne de caractère on devrait la trouver dans le tableau si elle existe.

Contexte technique

  • NodeJS version: 20.11.1
  • Linux Ubuntu 22.04.4 LTS

Calcul de la déperdition des planchers bas non conforme avec 2287E1043883T

Describe the bug
Dans le DPE 2287E1043883T, la déperdition des planchers bas n'est pas cohérente entre le résultat de la lib et la valeur du DPE d'origine.
Les données intermédiaires ne sont pas les mêmes.

Dans le DPE d'origine

{
            "donnee_entree": {
              "description": "Plancher  2 - Dalle béton donnant sur un terre-plein",
              "reference": "2022_05_11_17_10_51_2415353009491032",
              "tv_coef_reduction_deperdition_id": 5,
              "enum_type_adjacence_id": "5",
              "surface_paroi_opaque": 24.34,
              "tv_upb0_id": 9,
              "enum_type_plancher_bas_id": "9",
              "enum_methode_saisie_u0_id": "2",
              "enum_type_isolation_id": "1",
              "enum_periode_isolation_id": "1",
              "tv_upb_id": 2,
              "enum_methode_saisie_u_id": "8",
              "calcul_ue": 1,
              "perimetre_ue": 22,
              "surface_ue": 24.34,
              "ue": 0.61789474
            },
            "donnee_intermediaire": {
              "b": 1,
              "upb": 2,
              "upb_final": 0.61789474,
              "upb0": 2
            }
          }

En sortie de calcul on obtient :

{
            "donnee_entree": {
              "description": "Plancher  2 - Dalle béton donnant sur un terre-plein",
              "reference": "2022_05_11_17_10_51_2415353009491032",
              "tv_coef_reduction_deperdition_id": 5,
              "enum_type_adjacence_id": "5",
              "surface_paroi_opaque": 24.34,
              "tv_upb0_id": 9,
              "enum_type_plancher_bas_id": "9",
              "enum_methode_saisie_u0_id": "2",
              "enum_type_isolation_id": "1",
              "enum_periode_isolation_id": "1",
              "tv_upb_id": 8,
              "enum_methode_saisie_u_id": "8",
              "calcul_ue": 1,
              "perimetre_ue": 22,
              "surface_ue": 24.34,
              "ue": 0.44
            },
            "donnee_intermediaire": {
              "b": 1,
              "upb0": 2,
              "upb": 0.9,
              "upb_final": 0.44
            }

To Reproduce
image
image
Capture d’écran du 2024-06-07 11-21-00

P = 22
S = 24.34
2S/P = (2 * 24.34) / 22 = 2,212727273 = 2 (arrondi à l'entier le plus proche)
upb0 = 2
upb = Min(upb0; upbtab) = Min(2; 2) = 2
ue = Umoyen pour tous les planchers du batiment
upb_final = ue

Expected behavior
Les valeurs du DPE d'origine sont bonnes et devraient correspondre au résultat de la lib.

Additional context

  • NodeJS version: 18.16.0

Erreur de détection du type de pont thermique

Describe the bug
Pour identifier un pont thermique on utilise isolation_mur. Or si la valeur contient un + (ex: ^iti+ite$) alors la regex ne passe pas et un mauvais tv_pont_thermique_id est retenu (K= 0.47 au lieu de 0.08)

To Reproduce
2302E4043473J

Expected behavior
Le bon tv_pont_thermique_id est retenu. K=0.08

Additional context

  • NodeJS version: 20.12.0

Erreur dans le choix de la date d'isolation

Describe the bug
Je pense qu'il y a une erreur dans le choix de prendre ou pas la date de construction comme date d'isolation.
Dans mon cas de figure j'ai la date d'isolation qui est renseignée et elle est remplacée par la date de construction alors qu'elle ne devrait pas il me semble.

To Reproduce
Fichier ademe : 2213E0696993Z
Test unitaire

Expected behavior
La date d'isolation renseignée enum_periode_isolation_id: '2', // 1948-1974 ne devrait pas être remplacée par la date par défaut "75-77" car l'année d'isolation est connue.
image

Mauvaise valeur ujn pour un uw_saisi avec deux chiffres apres la virgule

Describe the bug
Dans le cas d'une valeur uw_saisi qui contient deux chiffres après la virgule (ex: 2.35), la correspondance dans le fichier tv.js n'est pas la bonne car les valeurs possibles sont: 2.3 ou 2.4. Le tv_ujn_id sélectionné n'est pas le bon.

Avant d'appeler tv('ujn', matcher), il faut forcer la précision de uw à un chiffre apres la virgule : 2.35 => 2.4, 2.28 => 2.3, etc..

To Reproduce
2302E4043473J

Expected behavior
La valeur tv_ujn_id sélectionné est la bonne.

  • NodeJS version: 20.12.0

DPE 2387E2058698D en erreur

Description du bug
Lorsque je veux utiliser le DPE 2387E2058698D comme entrée du moteur de calcul, une erreur est retournée.

Pour reproduire

./test.sh _download_one 2387E2058698D
./test.sh _run_one 2387E2058698D
./test.sh _diff_one 2387E2058698D

Le fichier /tmp/dpe/2387E2058698D.open3cl.json est vide. Le fichier /tmp/dpe/2387E2058698D.err.log contient :

q4pa_env: 412.50000000000006  q4pa: 515.1 n50: 17.383291178499736 qvinf: 159.16950791423542 e: 0.07 f: 15 Sh: 76
94 |   }
95 | 
96 |   let coef = 1;
97 |   if (th === 'maison') {
98 |     if (hybride) coef = 14 / (24 * 7);
99 |     di.pvent_moy = pvent_moy_maison[type][post_2012] * coef;
                        ^
TypeError: undefined is not an object (evaluating 'pvent_moy_maison[type][post_2012]')
      at calc_pvent (/home/florent/dev/redfroggy/open3cl/src/5_conso_ventilation.js:99:20)
      at calc_ventilation (/home/florent/dev/redfroggy/open3cl/src/4_ventilation.js:131:3)
      at /home/florent/dev/redfroggy/open3cl/src/3_deperdition.js:83:5
      at forEach (:1:21)
      at calc_deperdition (/home/florent/dev/redfroggy/open3cl/src/3_deperdition.js:82:3)
      at calcul_3cl (/home/florent/dev/redfroggy/open3cl/src/engine.js:60:23)
      at /home/florent/dev/redfroggy/open3cl/test/run_one_dpe.js:31:19

Comportement attendu
Le fichier /tmp/dpe/2387E2058698D.open3cl.json devrait contenir le format JSON du fichier XML de l'ADEME.

Additional context

  • NodeJS version: 20.11.1
  • Linux Ubuntu 22.04.4 LTS

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.