API Reference
Cette section présente la référence complète de l’API de la bibliothèque EnergySystemModels.
Vue d’ensemble de l’API
EnergySystemModels est organisé en modules thématiques. Chaque module contient des classes représentant des composants ou des systèmes énergétiques.
Module HeatTransfer
CompositeWall
Calcul de transfert thermique à travers des murs multicouches.
from HeatTransfer.CompositeWall import CompositeWall
wall = CompositeWall.Object()
wall.add_layer(thickness, conductivity)
wall.calculate()
Attributs principaux :
T_interior(float) : Température intérieure [°C]T_exterior(float) : Température extérieure [°C]h_interior(float) : Coefficient d’échange intérieur [W/m².K]h_exterior(float) : Coefficient d’échange extérieur [W/m².K]U(float) : Coefficient de transmission thermique [W/m².K]heat_flux(float) : Flux thermique [W/m²]
Méthodes :
add_layer(thickness, conductivity): Ajoute une couche de matériaucalculate(): Effectue le calcul thermiqueget_temperature_profile(): Retourne le profil de température
PipeInsulation
Analyse de l’isolation de tuyauteries cylindriques.
from HeatTransfer.PipeInsulation import PipeInsulation
pipe = PipeInsulation.Object()
pipe.D_inner = 0.05 # Diamètre intérieur [m]
pipe.D_outer = 0.06 # Diamètre extérieur [m]
pipe.k_insulation = 0.04 # Conductivité [W/m.K]
pipe.T_fluid = 90 # Température fluide [°C]
pipe.T_ambient = 20 # Température ambiante [°C]
pipe.calculate()
Résultats :
Q_loss: Pertes thermiques [W/m]R_thermal: Résistance thermique [m.K/W]
Module ThermodynamicCycles
Source
Modélisation d’une source de fluide avec propriétés thermodynamiques.
from ThermodynamicCycles.Source import Source
source = Source.Object()
source.Pi_bar = 5.0 # Pression [bar]
source.Ti_C = 20 # Température [°C]
source.fluid = "R134a" # Fluide
source.F = 0.5 # Débit massique [kg/s]
source.calculate()
Paramètres de débit disponibles :
F: Débit massique [kg/s]F_kgh: Débit massique [kg/h]F_m3s: Débit volumique [m³/s]F_m3h: Débit volumique [m³/h]F_Sm3s: Débit volumique standard [Sm³/s]F_Sm3h: Débit volumique standard [Sm³/h]
Fluides supportés : Voir Fluid Source
Sink
Puits de fluide pour fermer les cycles thermodynamiques.
from ThermodynamicCycles.Sink import Sink
sink = Sink.Object()
sink.inlet_source = source # Source en entrée
sink.Po_bar = 1.0 # Pression de sortie [bar]
sink.calculate()
Compressor
Modélisation de compresseurs (isentropique, volumétrique).
from ThermodynamicCycles.Compressor import Compressor
compressor = Compressor.Object()
compressor.inlet_source = source
compressor.Po_bar = 10.0 # Pression de refoulement [bar]
compressor.eta_isentropic = 0.75 # Rendement isentropique
compressor.calculate()
Résultats :
W_compressor: Puissance consommée [kW]outlet_T: Température de refoulement [°C]outlet_h: Enthalpie de sortie [J/kg]
HEX
Échangeurs de chaleur (NTU, DTLM, air-cooled).
from ThermodynamicCycles.HEX import HEX
hex = HEX.Object()
hex.hot_inlet = source_hot
hex.cold_inlet = source_cold
hex.method = "NTU"
hex.UA = 5.0 # Coefficient global [kW/K]
hex.calculate()
Méthodes de calcul :
"NTU": Méthode NTU-efficacité"DTLM": Différence de température logarithmique moyenne"epsilon_NTU": Calcul d’efficacité
Module AHU (Centrales de Traitement d’Air)
FreshAir
Modélisation de l’air neuf avec propriétés psychrométriques.
from AHU.FreshAir import FreshAir
air = FreshAir.Object()
air.T_C = 5 # Température [°C]
air.RH = 0.80 # Humidité relative [0-1]
air.F_dry = 1.0 # Débit d'air sec [kg/s]
air.P_bar = 1.01325 # Pression [bar]
air.calculate()
Propriétés calculées :
h: Enthalpie [kJ/kg]w: Humidité absolue [kg/kg]rho: Masse volumique [kg/m³]v: Volume spécifique [m³/kg]
HeatingCoil
Batterie de chauffage pour CTA.
from AHU.HeatingCoil import HeatingCoil
heating = HeatingCoil.Object()
heating.inlet_air = fresh_air
heating.outlet_T_C = 18 # Température de consigne [°C]
heating.calculate()
Résultats :
Q_th: Puissance thermique [kW]outlet_T_C: Température de sortie [°C]outlet_RH: Humidité relative de sortie
CoolingCoil
Batterie de refroidissement avec déshumidification.
from AHU.CoolingCoil import CoolingCoil
cooling = CoolingCoil.Object()
cooling.inlet_air = air
cooling.outlet_T_C = 12
cooling.outlet_RH = 0.90
cooling.calculate()
Humidifier
Humidification (vapeur ou adiabatique).
from AHU.Humidifier import Humidifier
humidifier = Humidifier.Object()
humidifier.inlet_air = air
humidifier.type = "steam" # ou "adiabatic"
humidifier.outlet_RH = 0.50
humidifier.calculate()
GenericAHU
Simulation complète de CTA paramétrable via Excel.
from AHU.GenericAHU import GenericAHU
ahu = GenericAHU()
results = ahu.run_simulation(
file_path='config.xlsx',
sheet_name='1. Air Recycling AHU Input',
output_file='resultats.xlsx'
)
Voir GenericAHU - Simulation Complète de CTA pour plus de détails.
Module Hydraulic
StraightPipe
Calcul de pertes de charge en conduite droite (Darcy-Weisbach).
from Hydraulic.StraightPipe import StraightPipe
pipe = StraightPipe.Object()
pipe.D = 0.05 # Diamètre [m]
pipe.L = 100 # Longueur [m]
pipe.flow_rate = 0.001 # Débit [m³/s]
pipe.roughness = 0.00005 # Rugosité [m]
pipe.calculate()
Résultats :
pressure_drop: Perte de charge [Pa]Reynolds: Nombre de Reynoldsf: Coefficient de friction
TA_Valve
Vannes d’équilibrage IMI TA (120+ références avec interpolation Kv).
from Hydraulic.TA_Valve import TA_Valve
valve = TA_Valve.Object()
valve.model = "TA-COMPACT-P"
valve.DN = 20
valve.flow_rate = 0.0005 # [m³/s]
valve.calculate()
Résultats :
Kv: Coefficient Kv [m³/h]pressure_drop: Perte de charge [Pa]opening: Ouverture de la vanne
Module PinchAnalysis
PinchAnalysis
Analyse Pinch pour optimisation d’intégration thermique.
from PinchAnalysis import PinchAnalysis
import pandas as pd
df = pd.DataFrame({
'Ti': [200, 125, 50, 45],
'To': [50, 45, 250, 195],
'mCp': [3.0, 2.5, 2.0, 4.0],
'dTmin2': [5, 5, 5, 5],
'integration': [True, True, True, True]
})
pinch = PinchAnalysis.Object(df)
Résultats :
T_pinch: Température du point Pinch [°C]Qh_min: Utilité chaude minimale [kW]Qc_min: Utilité froide minimale [kW]df_intervals: DataFrame des intervalles de températuredf_composite_curve: Données pour courbes composites
Méthodes de visualisation :
plot_composites_curves(): Courbes composites chaude et froideplot_GCC(): Grande Courbe Compositeplot_streams_and_temperature_intervals(): Flux et intervallesgraphical_hen_design(): Réseau d’échangeurs optimal
Module IPMVP
IPMVP
Protocole international de mesure et vérification des performances.
from IPMVP.IPMVP import IPMVP
ipmvp = IPMVP.Object()
ipmvp.baseline_data = baseline_consumption
ipmvp.reporting_data = actual_consumption
ipmvp.method = "Option C"
ipmvp.calculate_savings()
Méthodes disponibles :
Option A: Mesure clé retrofit isolationOption B: Mesure de tout l’équipementOption C: Analyse de l’installation complèteOption D: Étalonnage simulation
Module OpenWeatherMap
WeatherData
Récupération de données météo en temps réel.
from OpenWeatherMap.OpenWeatherMap import WeatherData
weather = WeatherData(api_key="VOTRE_CLE_API")
data = weather.get_current_weather(city="Paris")
Données retournées :
temperature: Température [°C]humidity: Humidité relative [%]pressure: Pression [hPa]wind_speed: Vitesse du vent [m/s]description: Description textuelle
Module MeteoCiel
MeteoCiel
Scraping de données météo historiques avec calcul de degrés-jours.
from MeteoCiel.MeteoCiel import MeteoCiel
meteo = MeteoCiel.Object()
data = meteo.get_historical_data(
location="Paris",
start_date="2024-01-01",
end_date="2024-12-31"
)
Calculs disponibles :
Degrés-jours de chauffage (DJU)
Degrés-jours de refroidissement
Statistiques climatiques
Module PV
PVSystem
Simulation de production photovoltaïque (basé sur pvlib).
from PV.PV import PVSystem
pv = PVSystem()
pv.latitude = 48.8566
pv.longitude = 2.3522
pv.capacity_kWp = 10.0
pv.tilt = 30
pv.azimuth = 180
pv.calculate_production(weather_data)
Résultats :
production_kWh: Production électrique [kWh]performance_ratio: Ratio de performance [%]specific_yield: Productible spécifique [kWh/kWp]
Module Facture
TURPE
Calcul du Tarif d’Utilisation des Réseaux Publics d’Électricité.
from Facture.TURPE import TURPE
turpe = TURPE.Object()
turpe.voltage_level = "BT" # ou "HTA"
turpe.tariff_option = "CU4"
turpe.subscribed_power_kW = 36
turpe.consumption_data = monthly_consumption
turpe.calculate()
Options tarifaires supportées :
BT : CU, MU, CU4, MU4
HTA : CU, MU, LU, PF, PM
Module CEE
CEE
Calcul de Certificats d’Économies d’Énergie.
from CEE.CEE import CEE
cee = CEE.Object()
cee.operation = "BAT-TH-116" # Isolation de combles
cee.surface = 100 # m²
cee.zone_climatique = "H1"
cee.calculate()
Résultats :
kWh_cumac: Économies en kWh cumacprime_euro: Prime estimée [€]
Types et conventions
Températures :
Toujours en °C (Celsius)
Conversion K ↔ °C gérée en interne
Pressions :
Par défaut en bar
Conversion bar ↔ Pa disponible
Débits :
Massiques : kg/s, kg/h
Volumiques : m³/s, m³/h, Sm³/h
Énergies et puissances :
Puissance : kW
Énergie : kWh
Flux thermique : W/m²
Exemples d’utilisation avancée
Chaînage de composants
# Créer un cycle frigorifique complet
from ThermodynamicCycles.Source import Source
from ThermodynamicCycles.Compressor import Compressor
from ThermodynamicCycles.HEX import HEX
# Évaporateur
evap_inlet = Source.Object()
evap_inlet.fluid = "R134a"
evap_inlet.Pi_bar = 2.0
evap_inlet.quality = 1.0 # Vapeur saturée
evap_inlet.F = 0.1
evap_inlet.calculate()
# Compresseur
comp = Compressor.Object()
comp.inlet_source = evap_inlet
comp.Po_bar = 8.0
comp.eta_isentropic = 0.75
comp.calculate()
print(f"Puissance compresseur : {comp.W_compressor:.2f} kW")
print(f"COP : {comp.COP:.2f}")
Analyse temporelle
import pandas as pd
from AHU.HeatingCoil import HeatingCoil
# Données horaires sur 24h
temps = pd.date_range('2024-01-01', periods=24, freq='h')
temperatures = [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6,
5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5, -6]
resultats = []
for t in temperatures:
air = FreshAir.Object()
air.T_C = t
air.RH = 0.80
air.F_dry = 1.0
air.calculate()
heating = HeatingCoil.Object()
heating.inlet_air = air
heating.outlet_T_C = 18
heating.calculate()
resultats.append(heating.Q_th)
df_results = pd.DataFrame({
'timestamp': temps,
'T_ext': temperatures,
'Q_heating': resultats
})
print(f"Consommation totale : {df_results['Q_heating'].sum():.2f} kWh")
Pour plus d’exemples, consultez les sections thématiques de la documentation.