Éjecteur & Tour de refroidissement
Ce chapitre documente deux composants du package ThermodynamicCycles :
l”éjecteur (Ejector), organe de recompression sans pièce mobile, et la
tour de refroidissement humide (CoolingTower) à contre-courant selon la
méthode de Merkel.
Éjecteur (Ejector)
Rôle
L’éjecteur recomprime un flux secondaire basse pression en détendant un flux
primaire haute pression, sans pièce mobile. Le module Ejector est un
composant composite qui chaîne trois sous-composants :
Nozzle— la tuyère détend le flux primaire (port_a, HP) jusqu’à la pression intermédiaire (= pression du secondaire) et l’accélère ;Mixing_Chamber— la chambre de mélange entraîne le flux secondaire (port_b, BP, au repos) dans le jet primaire ;Diffuser— le diffuseur convertit l’énergie cinétique du mélange en pression et le refoule (port_c, sortie recomprimée).
port_a (HP primaire) ---> Nozzle ---> Mixing_Chamber.primary
port_b (BP secondaire) -----------> Mixing_Chamber.secondary
Mixing_Chamber.outlet ---> Diffuser ---> port_c (sortie recomprimée)
Connecteurs
Connecteur |
Type |
Description |
|---|---|---|
|
FluidPort |
port_a — entrée haute pression (ex. détente du condenseur) |
|
FluidPort |
port_b — entrée basse pression (ex. évaporateur) ; sa pression fixe la pression intermédiaire |
|
FluidPort |
port_c — sortie recomprimée (vers le condenseur) |
Équations réelles
Tuyère (Nozzle) — détente isentropique corrigée par le rendement
epsilon_s ; le fluide primaire est supposé au repos à l’entrée :
Chambre de mélange (Mixing_Chamber) — conservation de la quantité de
mouvement (pondérée par epsilon_m) et de l’énergie, à la pression du
secondaire :
Le modèle prend v_3 = v_2 et h_3 = h_2 (pas de choc explicite, pertes
portées par epsilon_m ; récupération de l’énergie cinétique au diffuseur).
Diffuseur (Diffuser) — recompression, sortie supposée au repos :
La pression de refoulement P_out est la racine de
\(h(P_{out}, S_a) = h_{es}\) (résolue par brentq).
Indicateurs de l’éjecteur — taux d’entraînement et taux de compression :
Paramètres
Paramètre |
Description |
Unité / défaut |
|---|---|---|
|
Rendement isentropique de la tuyère |
0.7 |
|
Rendement de la chambre de mélange |
0.8 |
|
Rendement du diffuseur |
0.7 |
|
Section de la tuyère |
m², 1e-3 |
Exemple
from ThermodynamicCycles.Ejector.Ejector import Object as Ejector
from CoolProp.CoolProp import PropsSI
fluid = 'R134a'
ej = Ejector()
# Flux primaire haute pression (ex. sortie condenseur)
ej.Inlet_primary.fluid = fluid
ej.Inlet_primary.P = 10e5 # Pa
ej.Inlet_primary.h = PropsSI('H', 'P', 10e5, 'Q', 0, fluid) # liquide saturé
# Flux secondaire basse pression (ex. sortie évaporateur)
ej.Inlet_secondary.fluid = fluid
ej.Inlet_secondary.P = 3e5 # Pa (= pression intermédiaire)
ej.Inlet_secondary.h = PropsSI('H', 'P', 3e5, 'Q', 1, fluid) # vapeur saturée
ej.Inlet_secondary.F = 0.05 # kg/s (débit secondaire)
# Paramètres
ej.epsilon_s = 0.7
ej.epsilon_m = 0.8
ej.epsilon_d = 0.7
ej.A_nozzle = 1e-3
ej.calculate()
print(ej.df)
print("Taux d'entraînement :", ej.entrainment_ratio)
print("Taux de compression :", ej.compression_ratio)
Sortie ej.df (index) :
Index ( |
Description |
Unité |
|---|---|---|
|
Fluide primaire |
|
|
Débit primaire (calculé par la tuyère) |
kg/s |
|
Débit secondaire (= |
kg/s |
|
Débit total refoulé |
kg/s |
|
Pressions primaire / secondaire / sortie |
bar |
|
Taux d’entraînement |
|
|
Taux de compression |
Tour de refroidissement (CoolingTower)
Rôle
Tour de refroidissement humide à contre-courant modélisée par la méthode de
Merkel (ASHRAE Handbook — HVAC Systems and Equipment 2008, ch. 39).
L’intégrale de demande est évaluée par quadrature de Chebyshev à 4 points
(pratique CTI/ASHRAE). La psychrométrie réutilise la bibliothèque maison
AHU.air_humide (pression de vapeur saturante Hyland-Wexler) ; les propriétés
de l’eau viennent de CoolProp.
Hypothèses de Merkel : nombre de Lewis = 1, résistance de film négligée, perte par évaporation négligée dans le bilan enthalpique (\(G\,dh = c_{p,eau}\,L\,dt\)).
Deux modes de calcul :
DEMANDE (dimensionnement) :
To_degC(eau froide cible) imposé → calcule leKaV/Lrequis ;RATING (hors-conception) :
tower_Cimposé (caractéristique disponible) → résoutTo_degCpar bissection.
Connecteurs
Connecteur |
Type |
Description |
|---|---|---|
|
FluidPort |
Eau chaude (port_a, |
|
FluidPort |
Eau froide ( |
|
FluidPort |
Air humide entrant (état + débit d’air sec optionnels) |
|
FluidPort |
Air humide sortant (saturé, |
Équations réelles
Caractéristique de demande (KaV/L) — nombre d’unités de transfert requis :
où \(h'(t)\) est l’enthalpie de l’air saturé à la température d’eau \(t\), et le bilan de Merkel donne :
L’intégrale est approchée par les 4 points de Chebyshev \(f \in \{0.1, 0.4, 0.6, 0.9\}\) du range :
Caractéristique disponible (mode RATING) :
Range et approche — les deux indicateurs clés de performance :
Bilan côté air (sortie supposée saturée) :
Bilan côté eau — chaleur rejetée et évaporation :
L’évaporation vaut \(G\,(w_{sortie} - w_{entrée})\) si le débit d’air sec est connu, sinon \(\dot Q / h_{fg}\). Le débit d’eau froide est \(\dot m_{Outlet} = \dot m_{Inlet} - \dot m_{évaporation}\).
Paramètres
Paramètre |
Description |
Unité / défaut |
|---|---|---|
|
Air entrant, bulbe sec (repli si |
degC, 25.0 |
|
Humidité relative (FRACTION 0..1) |
-, 0.5 |
|
Bulbe humide imposé (prioritaire si fourni) |
degC, None |
|
Ratio L/G (kg eau / kg air sec), si pas de débit d’air |
-, 1.0 |
|
Débit d’air sec G (alternative à |
kg/s, None |
|
Mode DEMANDE : eau froide cible |
degC, None |
|
Mode RATING : constante de caractéristique disponible |
-, None |
|
Mode RATING : exposant L/G (ASHRAE −0.55..−0.65) |
-, -0.6 |
Exemple
from ThermodynamicCycles.CoolingTower.CoolingTower import Object as CoolingTower
ct = CoolingTower()
# Eau chaude entrante
ct.Inlet.fluid = 'water'
ct.Inlet.T = 35 + 273.15 # K
ct.Inlet.P = 101325.0 # Pa
ct.Inlet.F = 10.0 # kg/s
# Air d'entrée
ct.T_air_in_degC = 25.0
ct.RH_in = 0.5 # 50 %
ct.LG = 1.2 # L/G
# Mode DEMANDE : eau froide cible
ct.To_degC = 29.0
ct.calculate()
print(ct.df)
Pour le mode RATING (caractéristique de tour imposée), remplacer
ct.To_degC par :
ct.To_degC = None
ct.tower_C = 1.5
ct.tower_n = -0.6
ct.calculate() # résout To_degC par bissection
Sortie ct.df (index) :
Index ( |
Description |
Unité |
|---|---|---|
|
Températures d’eau entrée / sortie |
degC |
|
Bulbe humide de l’air entrant |
degC |
|
Range (t_chaud − t_froid) |
K |
|
Approche (t_froid − t_bulbe humide) |
K |
|
Nombre d’unités de transfert |
|
|
Ratio L/G effectif |
|
|
Chaleur rejetée par l’eau |
kW |
|
Débit d’évaporation |
kg/h |
|
Air sortant (saturé) |
degC |
|
Humidité absolue de l’air sortant |
g/kg air sec |