File size: 4,155 Bytes
4df6bad
 
 
96e4e46
4df6bad
 
 
96e4e46
 
 
4df6bad
 
96e4e46
4df6bad
 
 
 
 
 
 
 
96e4e46
 
 
 
 
 
 
 
 
 
 
 
 
4df6bad
96e4e46
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4df6bad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96e4e46
4df6bad
 
 
 
 
 
 
 
 
96e4e46
4df6bad
96e4e46
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import numpy as np
import pandas as pd

# Chargement des facteurs d'émission depuis output2.txt
file_path = "output2.txt"
factors_df = pd.read_csv(file_path, delimiter=";", names=["Producer", "Emission Factor"], dtype=str, encoding="latin1")

# Nettoyage des données - suppression des espaces et normalisation
factors_df["Producer"] = factors_df["Producer"].str.strip()
factors_df["Emission Factor"] = factors_df["Emission Factor"].str.replace(",", ".").str.strip().astype(float)

# Définition des valeurs de Qh en fonction de Delta Uf établi à partir de lesosai
q_h_values = np.array([0.000, 0.250, 0.500, 0.750, 1.000, 1.250, 1.472, 1.722, 1.972, 2.222, 2.472, 2.722, 2.944])
delta_uf_values = np.array([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2])


# Fonction pour calculer les coefficients GES
def calculate_ges_coefficients(producer_name):
    """

    Calcule le coefficient GES (a) en imposant b = 0.

    """
    # Nettoyage du nom recherché
    producer_name_clean = producer_name.strip()

    # Recherche avec correspondance exacte
    factor = factors_df.loc[factors_df["Producer"] == producer_name_clean, "Emission Factor"].values

    # Si pas de correspondance exacte, essayer une recherche plus flexible
    if len(factor) == 0:
        # Recherche insensible à la casse
        factor = factors_df.loc[
            factors_df["Producer"].str.lower() == producer_name_clean.lower(), "Emission Factor"].values

    # Si toujours pas trouvé, utiliser une valeur par défaut basée sur le type
    if len(factor) == 0:
        # Dictionnaire de valeurs par défaut
        default_factors = {
            "Chauffage à distance": 0.066,
            "Pac COPA 2,7": 0.058,
            "Pac COPA 5,3": 0.035,
            "Pac COPA 4,4": 0.040,
            "Pac COPA 3,2": 0.048,
            "Chaudiere gaz naturel": 0.230,
            "Chaudiere biogaz": 0.127,
            "Chaudiere mazout": 0.324,
            "Chaudiere buche": 0.033,
            "Chaudiere pellet": 0.038
        }

        if producer_name_clean in default_factors:
            factor = [default_factors[producer_name_clean]]
        else:
            # Dernière tentative avec une recherche partielle
            for key, value in default_factors.items():
                if key.lower() in producer_name_clean.lower() or producer_name_clean.lower() in key.lower():
                    factor = [value]
                    break

            # Si toujours rien trouvé, lever une erreur avec plus d'informations
            if len(factor) == 0:
                available_producers = factors_df["Producer"].tolist()
                raise ValueError(
                    f"Facteur d'émission introuvable pour '{producer_name_clean}'. Producteurs disponibles : {available_producers}")

    factor = factor[0]
    ges_values = q_h_values * factor

    # Régression linéaire sans intercept (forcée à 0)
    a, _, _, _ = np.linalg.lstsq(delta_uf_values.reshape(-1, 1), ges_values, rcond=None)

    return a[0], 0  # b est forcé à 0


# Calcul des coefficients pour les systèmes de chauffage
coefficients = {
    "Pac COPA 2,7": calculate_ges_coefficients("Pac COPA 2,7"),
    "Pac COPA 5,3": calculate_ges_coefficients("Pac COPA 5,3"),
    "Chaudiere gaz naturel": calculate_ges_coefficients("Chaudiere gaz naturel"),
    "Chaudiere biogaz": calculate_ges_coefficients("Chaudiere biogaz"),
    "Pac COPA 4,4": calculate_ges_coefficients("Pac COPA 4,4"),
    "Pac COPA 3,2": calculate_ges_coefficients("Pac COPA 3,2"),
    "Chaudiere pellet": calculate_ges_coefficients("Chaudiere pellet"),
    "Chaudiere buche": calculate_ges_coefficients("Chaudiere buche"),
    "Chauffage à distance": calculate_ges_coefficients("Chauffage à distance"),
    "Cadre bois": (0.000, 0.041),
    "Cadre bois métal": (0.000, 0.074),
    "Cadre PVC": (0.000, 0.072),
    "Cadre alu": (0.000, 0.149),
}

# Données pour la régression Uf selon le type de cadre
data = {
    "Bois": [1.8, 0.9],
    "Bois-métal": [2, 1],
    "PVC": [1.8, 1.3],
    "Alu": [3.6, 0.8]
}