Compresseur
Le module Compressor modélise une compression polytropique. L’état d’entrée
n’est pas saisi directement sur le compresseur : il provient d’un composant amont
(Source, échangeur…) connecté via Fluid_connect(COMP.Inlet, amont.Outlet).
La consigne haute pression est donnée par HP_bar (ou Tcond_degC).
Dans ce chapitre, les explications Source et Sink sont intégrées
directement avec les sections :
Source (entrée du compresseur)
Puits (sortie du compresseur)
Paramètres
Attribut |
Description |
Unité |
|---|---|---|
|
Port d’entrée (rempli par |
— |
|
Pression de refoulement imposée |
bar |
|
Alternative à |
°C |
|
Rendement isentropique (défaut 0,8) |
— |
|
Température de refoulement cible (compresseur refroidi ; ignorée sinon) |
°C |
Exemple
from ThermodynamicCycles.Source import Source
from ThermodynamicCycles.Compressor import Compressor
from ThermodynamicCycles.Connect import Fluid_connect
# État d'entrée fourni par une Source
SOURCE = Source.Object()
SOURCE.Pi_bar = 1.01325
SOURCE.Ti_degC = 25
SOURCE.fluid = "air"
SOURCE.F = 1 # kg/s
SOURCE.calculate()
# Compresseur alimenté par la Source
COMPRESSOR = Compressor.Object()
Fluid_connect(COMPRESSOR.Inlet, SOURCE.Outlet)
COMPRESSOR.HP_bar = 8 # pression de refoulement
COMPRESSOR.Tdischarge_target = 80 # °C (compresseur refroidi)
COMPRESSOR.calculate()
print(COMPRESSOR.df)
Sortie réelle (COMPRESSOR.df) :
Compressor
Timestamp None
comp_fluid air
comp_F_kgs 1
Q_comp(KW) 321.109431
Q_losses(KW) 266.775269
HeatLossesRatio 0.830792
Tis(°C) 261.805597
To_is(°C) 261.805597
H3is(kJ/kg) 665.268117
T3ref(°C) 338.431681
To(°C) 80.0
Ho(kJ/kg) 478.770206
So(J/kg-K) 3.454806
self.Outlet.P (bar) 8.0
Principaux résultats : puissance de compression Q_comp ≈ 321 kW, pertes
thermiques Q_losses ≈ 267 kW (compresseur refroidi, To ramenée à 80 °C),
et pression de refoulement Outlet.P = 8 bar.
Note
Le compresseur ne définit pas Pi_bar/Ti_degC/F : ces grandeurs
viennent du port Inlet connecté à l’amont. Sans Fluid_connect ni
consigne HP_bar/Tcond_degC, calculate() lève une erreur.
Exemple graphique avec PyqtSimulator
Le même modèle peut être utilisé dans l’interface graphique PyqtSimulator. Le lancement du module se fait simplement avec l’import suivant :
from PyqtSimulator import main
En pratique, cet import lance l’application et ouvre l’éditeur de schéma où
vous pouvez placer une Source, connecter un Compresseur puis visualiser
les résultats dans la fenêtre de configuration.
Note
Insérez ici la capture de la simulation PyqtSimulator lorsque l’image sera fournie. La page sera mise à jour avec la figure correspondante.
Source (entrée du compresseur)
En pratique, l’entrée du compresseur est fournie par un composant amont. Le cas
le plus courant est une Source qui calcule un état thermodynamique cohérent
(pression, température, enthalpie, débit) avant de l’envoyer vers
COMPRESSOR.Inlet via Fluid_connect.
Exemple détaillé de préparation d’entrée :
from ThermodynamicCycles.Source import Source
SOURCE = Source.Object()
SOURCE.Pi_bar = 1.01325
SOURCE.Ti_degC = 25 # température d'entrée obligatoire
SOURCE.fluid = "air"
SOURCE.F = 1 # débit massique [kg/s]
SOURCE.calculate()
print(SOURCE.df)
Sortie réelle (SOURCE.df) :
Source
Timestamp 2026-07-04 23:33:33
fluid air
Ti_degC 25.0
Pi_bar 1.01
F_Sm3h 2937.5
F_Nm3h 2784.081453
F_m3h 3039.7
F_kgh 3600
F_kgs 1
F_m3s 0.844
F_Sm3s 0.816
self.Outlet.h 424436.043917
Le DataFrame de préparation contient : Ti_degC [°C], Pi_bar [bar], les
débits (Sm³/h, Nm³/h, m³/h, kg/h, kg/s, m³/s, Sm³/s) et Outlet.h [J/kg].
Note
SOURCE.Ti_degC est obligatoire : sans elle, calculate() lève une
TypeError (température à None).
Paramètres de fluide et de débit utilisables en entrée
Fluides disponibles dans CoolProp
Fluides purs courants :
'Water'- Eau'Air'- Air'Ammonia'(ou'NH3') - Ammoniac'CO2'(ou'CarbonDioxide') - Dioxyde de carbone'Nitrogen'(ou'N2') - Azote'Oxygen'(ou'O2') - Oxygène'Hydrogen'(ou'H2') - Hydrogène'Methane'- Méthane'Propane'- Propane'n-Butane'- n-Butane'IsoButane'- Isobutane
Frigorigènes HFC :
'R134a'- 1,1,1,2-Tétrafluoroéthane'R32'- Difluorométhane'R125'- Pentafluoroéthane'R143a'- 1,1,1-Trifluoroéthane'R152a'- 1,1-Difluoroéthane'R404A'- Mélange (R125/143a/134a)'R407C'- Mélange (R32/125/134a)'R410A'- Mélange (R32/125)'R507A'- Mélange (R125/143a)
Frigorigènes naturels et autres :
'R290'(ou'Propane') - Propane'R600a'(ou'IsoButane') - Isobutane'R717'(ou'Ammonia') - Ammoniac'R744'(ou'CO2') - Dioxyde de carbone'R1234yf'- 2,3,3,3-Tétrafluoropropène'R1234ze(E)'- trans-1,3,3,3-Tétrafluoropropène
Fluides industriels :
'Toluene'- Toluène'Ethanol'- Éthanol'Acetone'- Acétone'Methanol'- Méthanol
Note
Liste complète des fluides : http://www.coolprop.org/fluid_properties/PurePseudoPure.html
Types de débits disponibles :
F: débit massique [kg/s]F_kgh: débit massique [kg/h]F_Sm3s/F_Sm3h: débit volumique standard [Sm³/s] / [Sm³/h]F_Nm3s/F_Nm3h: débit volumique normal [Nm³/s] / [Nm³/h]F_m3s/F_m3h: débit volumique aux conditions d’entrée [m³/s] / [m³/h]
Équations de préparation d’entrée
Le calcul d’entrée (source amont) repose sur CoolProp et convertit les débits vers un débit massique, puis calcule l’enthalpie de l’état transmis au compresseur.
Débit massique à partir de Sm³/h :
\[\dot{m} = \frac{F_{Sm3h}}{3600} \cdot \rho(P_{std}, T_{std})\]Débit massique à partir de Nm³/h :
\[\dot{m} = \frac{F_{Nm3h}}{3600} \cdot \rho(P_{std}, T_{norm})\]Débit massique à partir de m³/s :
\[\dot{m} = F_{m3s} \cdot \rho(P_{in}, T_{in})\]Enthalpie de l’état transmis :
\[h_{out} = \text{PropsSI}('H', 'P', P_{out}, 'T', T_{in}, \text{fluid})\]Qualité du fluide :
\[Q = 1 - \frac{H_v - h_{out}}{H_v - H_l}\]
avec : \(\rho\) densité, \(P_{std}/T_{std}\) conditions standards, \(P_{norm}/T_{norm}\) conditions normales, et \(P_{in}/T_{in}\) conditions d’entrée.
Puits (sortie du compresseur)
En aval du compresseur, un Sink termine la ligne de fluide. Il reçoit
l’état de sortie du compresseur via Fluid_connect et calcule les grandeurs
de bilan (débits, puissance enthalpique, état de phase, température).
Exemple :
from ThermodynamicCycles.Sink import Sink
# from ThermodynamicCycles.Connect import Fluid_connect
SINK = Sink.Object()
# État d'entrée (normalement : Fluid_connect(SINK.Inlet, COMPRESSOR.Outlet))
SINK.Inlet.fluid = "air"
SINK.Inlet.F = 0.334 # kg/s
SINK.Inlet.P = 101325 # Pa
SINK.Inlet.h = 420000 # J/kg
SINK.calculate()
print(SINK.df)
print(SINK.To_degC)
Sortie réelle :
Sink
Timestamp 2026-07-04 23:50:41
fluid air
F_kgs 0.334
Inlet.P(Pa) 101325
Inlet.P(bar) 1.0
Inlet.h(J/kg) 420000
H(W) 140280.0
fluid_quality vapor
Q 2.050715
D (kg/m3) 1.2
F_Sm3h 981.0
F_m3h 1000.0
F_kgh 1202.0
20.59143900300944
Le Sink calcule notamment :
la puissance enthalpique : \(H = \dot{m} \times h\),
la température de sortie
To_degC,les débits volumiques équivalents,
l’indicateur d’état
fluid_quality.
Pour l’air, fluid_quality vaut généralement vapor (Q > 1), ce qui
est normal pour un gaz permanent.