Raccords (Fittings)
Le module ThermodynamicCycles.Fittings fournit trois raccords de
répartition et de mélange de débit, transposés des modèles Modelica
Fittings.*. Contrairement aux singularités hydrauliques (coudes, tés, rétrécissements…), ces raccords ne
modélisent AUCUNE perte de charge : les ports partagent la même pression
(\(p_a = p_b = p_c\)). Il n’y a donc pas de coefficient \(\xi\)
ni de loi \(\Delta P\). Les raccords se limitent aux bilans de masse et
d’énergie (mélange enthalpique, séparation liquide/vapeur, division de débit).
Chaque raccord expose une classe Object avec une méthode calculate() et
alimente un DataFrame pandas .df pour le reporting. Les connecteurs sont
des FluidPort reliés par Fluid_connect.
Vue d’ensemble
Classe |
Ports |
Rôle |
|---|---|---|
|
2 entrées → 1 sortie |
Mélangeur : additionne deux débits et mélange leurs enthalpies. |
|
1 entrée → 2 sorties |
Répartiteur : divise un débit selon un ratio, propriétés inchangées. |
|
1 entrée → 2 sorties |
Séparateur liquide/vapeur statique : sépare selon le titre d’entrée. |
Mixer – mélangeur 2 entrées / 1 sortie
Mélange deux flux (Inlet_a, Inlet_b) en une sortie Outlet, sans
perte de charge.
Équations (d’après Fittings.Mixer Modelica) :
La pression de sortie est prise sur Inlet_a (les trois ports sont censés
avoir la même pression). Le fluide de sortie est Inlet_a.fluid (ou
Inlet_b.fluid à défaut). Cas dégénéré : si \(F_c \le 0\), la sortie
est propagée sans flux (Outlet.F = 0). La température T_degC est
recalculée à partir de \((P, h)\) de la sortie pour le reporting.
Connecteurs
Attribut |
Type |
Description |
|---|---|---|
|
|
Entrée A (port_a) |
|
|
Entrée B (port_b) |
|
|
Sortie mélangée (port_c) |
Paramètres / attributs (issus de __init__)
Attribut |
Défaut |
Description |
|---|---|---|
|
|
Horodatage optionnel pour le reporting. |
|
|
Sortie : température de mélange (°C), calculée. |
|
|
Sortie : |
Splitter – répartiteur 1 entrée / 2 sorties
Divise le débit d’entrée Inlet en deux sorties selon un Ratio (fraction
dirigée vers Outlet_b), sans perte de charge et sans changer les propriétés
thermodynamiques.
Équations (d’après Fittings.Splitter Modelica) :
Le Ratio est validé dans \([0,1]\) ; une valeur hors bornes lève une
ValueError. Fluide, pression et enthalpie sont propagés identiquement sur
les deux sorties.
Connecteurs
Attribut |
Type |
Description |
|---|---|---|
|
|
Entrée (port_a) |
|
|
Sortie 1, fraction |
|
|
Sortie 2, fraction |
Paramètres / attributs (issus de __init__)
Attribut |
Défaut |
Description |
|---|---|---|
|
|
Horodatage optionnel. |
|
|
Entrée : fraction du débit dirigée vers |
|
|
Sortie : débit vers |
|
|
Sortie : débit vers |
|
|
Sortie : |
Separator_Simple – séparateur liquide/vapeur statique
Sépare un flux diphasique d’entrée Inlet en une sortie liquide saturée
Outlet_liquid et une sortie vapeur saturée Outlet_vapor, à la pression
d’entrée (pas de perte de charge).
Équations (d’après Fittings.Separator_Simple Modelica) :
Le titre vapeur \(x\) est calculé à partir de l’enthalpie d’entrée et des
enthalpies de saturation (ThermoPropsSI avec Q=0 et Q=1), puis
écrêté dans \([0,1]\). Les deux sorties portent respectivement le liquide
saturé et la vapeur saturée à la pression d’entrée. T_sat_degC est la
température de saturation à cette pression.
Connecteurs
Attribut |
Type |
Description |
|---|---|---|
|
|
Entrée diphasique (port_a) |
|
|
Liquide saturé (port_b) |
|
|
Vapeur saturée (port_c) |
Paramètres / attributs (issus de __init__)
Attribut |
Défaut |
Description |
|---|---|---|
|
|
Horodatage optionnel. |
|
|
Sortie : titre vapeur à l’entrée (0..1). |
|
|
Sortie : enthalpie du liquide saturé (J/kg). |
|
|
Sortie : enthalpie de la vapeur saturée (J/kg). |
|
|
Sortie : température de saturation (°C). |
|
|
Sortie : |
Exemple (mélangeur)
from ThermodynamicCycles.Source import Source
from ThermodynamicCycles.Fittings import Mixer
from ThermodynamicCycles.Connect import Fluid_connect
# Deux sources d'eau à la même pression
src_a = Source.Object(); src_a.fluid = "water"; src_a.Ti_degC = 80
src_a.Pi_bar = 3.0; src_a.F = 2.0; src_a.calculate()
src_b = Source.Object(); src_b.fluid = "water"; src_b.Ti_degC = 20
src_b.Pi_bar = 3.0; src_b.F = 1.0; src_b.calculate()
mix = Mixer.Object()
Fluid_connect(mix.Inlet_a, src_a.Outlet)
Fluid_connect(mix.Inlet_b, src_b.Outlet)
mix.calculate()
print("F_c = %.2f kg/s" % mix.Outlet.F) # 3.00
print("T_c = %.1f °C" % mix.T_degC) # ~60 °C (mélange 2:1)
Exemple (répartiteur)
from ThermodynamicCycles.Source import Source
from ThermodynamicCycles.Fittings import Splitter
from ThermodynamicCycles.Connect import Fluid_connect
src = Source.Object(); src.fluid = "water"; src.Ti_degC = 15
src.Pi_bar = 3.0; src.F = 4.0; src.calculate()
split = Splitter.Object()
split.Ratio = 0.25 # 25 % vers Outlet_b
Fluid_connect(split.Inlet, src.Outlet)
split.calculate()
print("F_b = %.2f kg/s" % split.F_b) # 1.00
print("F_c = %.2f kg/s" % split.F_c) # 3.00