619 lines
24 KiB
Plaintext
619 lines
24 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Entropyk — Système Thermodynamique Complet avec Vraies Équations\n",
|
||
"\n",
|
||
"Ce notebook présente un **système frigorifique réaliste** avec:\n",
|
||
"\n",
|
||
"- **Vrais composants thermodynamiques** utilisant CoolProp\n",
|
||
"- **Circuit frigorigène** complet\n",
|
||
"- **Circuits eau** côté condenseur et évaporateur\n",
|
||
"- **Contrôle inverse** pour surchauffe/sous-refroidissement"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import entropyk\n",
|
||
"import numpy as np\n",
|
||
"\n",
|
||
"print(\"=== ENTROPYK - SYSTÈME THERMODYNAMIQUE AVEC VRAIES ÉQUATIONS ===\\n\")\n",
|
||
"print(\"Composants disponibles:\")\n",
|
||
"print([x for x in dir(entropyk) if not x.startswith('_')])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"---\n",
|
||
"# 1. CRÉATION DES COMPOSANTS AVEC PARAMÈTRES RÉELS"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# === Paramètres du système ===\n",
|
||
"\n",
|
||
"FLUID = \"R134a\"\n",
|
||
"\n",
|
||
"# Condenseur: eau à 30°C, débit 0.5 kg/s\n",
|
||
"COND_WATER_TEMP = 30.0 # °C\n",
|
||
"COND_WATER_FLOW = 0.5 # kg/s\n",
|
||
"COND_UA = 8000.0 # W/K\n",
|
||
"\n",
|
||
"# Évaporateur: eau à 12°C, débit 0.4 kg/s\n",
|
||
"EVAP_WATER_TEMP = 12.0 # °C\n",
|
||
"EVAP_WATER_FLOW = 0.4 # kg/s\n",
|
||
"EVAP_UA = 6000.0 # W/K\n",
|
||
"\n",
|
||
"# Compresseur\n",
|
||
"COMP_SPEED = 3000.0 # RPM\n",
|
||
"COMP_DISP = 0.0001 # m³/rev (100 cc)\n",
|
||
"COMP_EFF = 0.85 # Rendement\n",
|
||
"\n",
|
||
"print(\"Paramètres définis:\")\n",
|
||
"print(f\" Fluide: {FLUID}\")\n",
|
||
"print(f\" Condenseur: UA={COND_UA} W/K, eau={COND_WATER_TEMP}°C @ {COND_WATER_FLOW} kg/s\")\n",
|
||
"print(f\" Évaporateur: UA={EVAP_UA} W/K, eau={EVAP_WATER_TEMP}°C @ {EVAP_WATER_FLOW} kg/s\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"---\n",
|
||
"# 2. CIRCUIT FRIGORIGÈNE\n",
|
||
"\n",
|
||
"```\n",
|
||
" ┌─────────────────────────────────────────────────────────┐\n",
|
||
" │ CIRCUIT R134a │\n",
|
||
" │ │\n",
|
||
" │ [COMP] ──→ [COND] ──→ [EXV] ──→ [EVAP] ──→ [COMP] │\n",
|
||
" │ │\n",
|
||
" └─────────────────────────────────────────────────────────┘\n",
|
||
"```"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"print(\"=== CIRCUIT FRIGORIGÈNE ===\\n\")\n",
|
||
"\n",
|
||
"# Créer le système\n",
|
||
"system = entropyk.System()\n",
|
||
"\n",
|
||
"# Compresseur avec coefficients AHRI 540\n",
|
||
"comp = entropyk.Compressor(\n",
|
||
" m1=0.85, m2=2.5, # Flow coefficients\n",
|
||
" m3=500.0, m4=1500.0, m5=-2.5, m6=1.8, # Power (cooling)\n",
|
||
" m7=600.0, m8=1600.0, m9=-3.0, m10=2.0, # Power (heating)\n",
|
||
" speed_rpm=COMP_SPEED,\n",
|
||
" displacement=COMP_DISP,\n",
|
||
" efficiency=COMP_EFF,\n",
|
||
" fluid=FLUID\n",
|
||
")\n",
|
||
"comp_idx = system.add_component(comp)\n",
|
||
"print(f\"1. Compresseur: {comp}\")\n",
|
||
"\n",
|
||
"# Condenseur avec eau côté tube\n",
|
||
"cond = entropyk.Condenser(\n",
|
||
" ua=COND_UA,\n",
|
||
" fluid=FLUID,\n",
|
||
" water_temp=COND_WATER_TEMP,\n",
|
||
" water_flow=COND_WATER_FLOW\n",
|
||
")\n",
|
||
"cond_idx = system.add_component(cond)\n",
|
||
"print(f\"2. Condenseur: {cond}\")\n",
|
||
"\n",
|
||
"# Vanne d'expansion\n",
|
||
"exv = entropyk.ExpansionValve(\n",
|
||
" fluid=FLUID,\n",
|
||
" opening=0.6\n",
|
||
")\n",
|
||
"exv_idx = system.add_component(exv)\n",
|
||
"print(f\"3. EXV: {exv}\")\n",
|
||
"\n",
|
||
"# Évaporateur avec eau côté tube\n",
|
||
"evap = entropyk.Evaporator(\n",
|
||
" ua=EVAP_UA,\n",
|
||
" fluid=FLUID,\n",
|
||
" water_temp=EVAP_WATER_TEMP,\n",
|
||
" water_flow=EVAP_WATER_FLOW\n",
|
||
")\n",
|
||
"evap_idx = system.add_component(evap)\n",
|
||
"print(f\"4. Évaporateur: {evap}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"print(\"=== CONNEXIONS CYCLE FRIGO ===\\n\")\n",
|
||
"\n",
|
||
"# Connecter le cycle frigorigène\n",
|
||
"system.add_edge(comp_idx, cond_idx) # Comp → Cond (HP)\n",
|
||
"system.add_edge(cond_idx, exv_idx) # Cond → EXV\n",
|
||
"system.add_edge(exv_idx, evap_idx) # EXV → Evap (BP)\n",
|
||
"system.add_edge(evap_idx, comp_idx) # Evap → Comp\n",
|
||
"\n",
|
||
"print(\"Cycle frigorigène connecté: Comp → Cond → EXV → Evap → Comp\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"---\n",
|
||
"# 3. CIRCUITS EAU"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"print(\"=== CIRCUIT EAU CONDENSEUR ===\\n\")\n",
|
||
"\n",
|
||
"# Source eau condenseur (30°C, 1 bar)\n",
|
||
"cond_water_in = entropyk.FlowSource(\n",
|
||
" pressure_pa=100000.0,\n",
|
||
" temperature_k=273.15 + COND_WATER_TEMP,\n",
|
||
" fluid=\"Water\"\n",
|
||
")\n",
|
||
"cond_in_idx = system.add_component(cond_water_in)\n",
|
||
"print(f\"Source eau cond: {cond_water_in}\")\n",
|
||
"\n",
|
||
"# Sink eau condenseur\n",
|
||
"cond_water_out = entropyk.FlowSink()\n",
|
||
"cond_out_idx = system.add_component(cond_water_out)\n",
|
||
"print(f\"Sink eau cond: {cond_water_out}\")\n",
|
||
"\n",
|
||
"# Connexions\n",
|
||
"system.add_edge(cond_in_idx, cond_idx)\n",
|
||
"system.add_edge(cond_idx, cond_out_idx)\n",
|
||
"\n",
|
||
"print(f\"\\nCircuit eau cond: Source({COND_WATER_TEMP}°C) → Condenseur → Sink\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"print(\"=== CIRCUIT EAU ÉVAPORATEUR ===\\n\")\n",
|
||
"\n",
|
||
"# Source eau évaporateur (12°C, 1 bar)\n",
|
||
"evap_water_in = entropyk.FlowSource(\n",
|
||
" pressure_pa=100000.0,\n",
|
||
" temperature_k=273.15 + EVAP_WATER_TEMP,\n",
|
||
" fluid=\"Water\"\n",
|
||
")\n",
|
||
"evap_in_idx = system.add_component(evap_water_in)\n",
|
||
"print(f\"Source eau evap: {evap_water_in}\")\n",
|
||
"\n",
|
||
"# Sink eau évaporateur\n",
|
||
"evap_water_out = entropyk.FlowSink()\n",
|
||
"evap_out_idx = system.add_component(evap_water_out)\n",
|
||
"print(f\"Sink eau evap: {evap_water_out}\")\n",
|
||
"\n",
|
||
"# Connexions\n",
|
||
"system.add_edge(evap_in_idx, evap_idx)\n",
|
||
"system.add_edge(evap_idx, evap_out_idx)\n",
|
||
"\n",
|
||
"print(f\"\\nCircuit eau evap: Source({EVAP_WATER_TEMP}°C) → Évaporateur → Sink\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"---\n",
|
||
"# 4. CONTRÔLE INVERSE"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"print(\"=== ENREGISTREMENT NOMS ===\\n\")\n",
|
||
"\n",
|
||
"system.register_component_name(\"compressor\", comp_idx)\n",
|
||
"system.register_component_name(\"condenser\", cond_idx)\n",
|
||
"system.register_component_name(\"evaporator\", evap_idx)\n",
|
||
"system.register_component_name(\"exv\", exv_idx)\n",
|
||
"\n",
|
||
"print(\"Noms enregistrés: compressor, condenser, evaporator, exv\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"print(\"=== CONTRAINTES DE CONTRÔLE ===\\n\")\n",
|
||
"\n",
|
||
"# Contrainte: Superheat = 5K\n",
|
||
"sh_constraint = entropyk.Constraint.superheat(\n",
|
||
" id=\"sh_5k\",\n",
|
||
" component_id=\"evaporator\",\n",
|
||
" target_value=5.0,\n",
|
||
" tolerance=1e-4\n",
|
||
")\n",
|
||
"system.add_constraint(sh_constraint)\n",
|
||
"print(f\"1. Surchauffe: {sh_constraint}\")\n",
|
||
"\n",
|
||
"# Contrainte: Subcooling = 3K\n",
|
||
"sc_constraint = entropyk.Constraint.subcooling(\n",
|
||
" id=\"sc_3k\",\n",
|
||
" component_id=\"condenser\",\n",
|
||
" target_value=3.0,\n",
|
||
" tolerance=1e-4\n",
|
||
")\n",
|
||
"system.add_constraint(sc_constraint)\n",
|
||
"print(f\"2. Sous-refroidissement: {sc_constraint}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"print(\"=== VARIABLES DE CONTRÔLE ===\\n\")\n",
|
||
"\n",
|
||
"# EXV opening (10% - 100%)\n",
|
||
"exv_var = entropyk.BoundedVariable(\n",
|
||
" id=\"exv_opening\",\n",
|
||
" value=0.6,\n",
|
||
" min=0.1,\n",
|
||
" max=1.0,\n",
|
||
" component_id=\"exv\"\n",
|
||
")\n",
|
||
"system.add_bounded_variable(exv_var)\n",
|
||
"print(f\"1. EXV: {exv_var}\")\n",
|
||
"\n",
|
||
"# Compressor speed (1500 - 6000 RPM)\n",
|
||
"speed_var = entropyk.BoundedVariable(\n",
|
||
" id=\"comp_speed\",\n",
|
||
" value=3000.0,\n",
|
||
" min=1500.0,\n",
|
||
" max=6000.0,\n",
|
||
" component_id=\"compressor\"\n",
|
||
")\n",
|
||
"system.add_bounded_variable(speed_var)\n",
|
||
"print(f\"2. Vitesse: {speed_var}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"print(\"=== LIENS CONTRAINTES → VARIABLES ===\\n\")\n",
|
||
"\n",
|
||
"system.link_constraint_to_control(\"sh_5k\", \"exv_opening\")\n",
|
||
"print(\"1. Superheat → EXV opening\")\n",
|
||
"\n",
|
||
"system.link_constraint_to_control(\"sc_3k\", \"comp_speed\")\n",
|
||
"print(\"2. Subcooling → Compressor speed\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"---\n",
|
||
"# 5. FINALISATION ET RÉSOLUTION"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"print(\"=== FINALISATION ===\\n\")\n",
|
||
"\n",
|
||
"system.finalize()\n",
|
||
"\n",
|
||
"print(f\"Système finalisé:\")\n",
|
||
"print(f\" Composants: {system.node_count}\")\n",
|
||
"print(f\" Connexions: {system.edge_count}\")\n",
|
||
"print(f\" Variables d'état: {system.state_vector_len}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"print(\"=== CONFIGURATION SOLVEUR ===\\n\")\n",
|
||
"\n",
|
||
"# Newton avec line search\n",
|
||
"newton = entropyk.NewtonConfig(\n",
|
||
" max_iterations=500,\n",
|
||
" tolerance=1e-8,\n",
|
||
" line_search=True,\n",
|
||
" timeout_ms=60000\n",
|
||
")\n",
|
||
"print(f\"Newton: {newton}\")\n",
|
||
"\n",
|
||
"# Picard en backup\n",
|
||
"picard = entropyk.PicardConfig(\n",
|
||
" max_iterations=1000,\n",
|
||
" tolerance=1e-6,\n",
|
||
" relaxation=0.3\n",
|
||
")\n",
|
||
"print(f\"Picard: {picard}\")\n",
|
||
"\n",
|
||
"# Fallback\n",
|
||
"solver = entropyk.FallbackConfig(newton=newton, picard=picard)\n",
|
||
"print(f\"\\nSolver: {solver}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"print(\"=== RÉSOLUTION ===\\n\")\n",
|
||
"\n",
|
||
"try:\n",
|
||
" result = solver.solve(system)\n",
|
||
" \n",
|
||
" print(f\"✅ RÉSULTAT:\")\n",
|
||
" print(f\" Itérations: {result.iterations}\")\n",
|
||
" print(f\" Résidu: {result.final_residual:.2e}\")\n",
|
||
" print(f\" Statut: {result.status}\")\n",
|
||
" print(f\" Convergé: {result.is_converged}\")\n",
|
||
" \n",
|
||
" # State vector\n",
|
||
" state = result.to_numpy()\n",
|
||
" print(f\"\\n State vector: {state.shape}\")\n",
|
||
" print(f\" Valeurs: min={state.min():.2f}, max={state.max():.2f}\")\n",
|
||
" \n",
|
||
" if result.status == \"ControlSaturation\":\n",
|
||
" print(\"\\n ⚠️ Saturation de contrôle - variable à la borne\")\n",
|
||
" \n",
|
||
"except entropyk.SolverError as e:\n",
|
||
" print(f\"❌ SolverError: {e}\")\n",
|
||
" \n",
|
||
"except entropyk.TimeoutError as e:\n",
|
||
" print(f\"⏱️ TimeoutError: {e}\")\n",
|
||
" \n",
|
||
"except Exception as e:\n",
|
||
" print(f\"❌ Erreur: {type(e).__name__}: {e}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"---\n",
|
||
"# 6. TESTS AVEC DIFFÉRENTS FLUIDES"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"print(\"=== TEST MULTI-FLUIDES ===\\n\")\n",
|
||
"\n",
|
||
"fluids = [\n",
|
||
" (\"R134a\", 12.0, 30.0), # T_cond_in, T_evap_in\n",
|
||
" (\"R32\", 12.0, 30.0),\n",
|
||
" (\"R290\", 12.0, 30.0), # Propane\n",
|
||
" (\"R744\", 12.0, 30.0), # CO2\n",
|
||
" (\"R1234yf\", 12.0, 30.0), # HFO\n",
|
||
"]\n",
|
||
"\n",
|
||
"for fluid, t_evap, t_cond in fluids:\n",
|
||
" try:\n",
|
||
" s = entropyk.System()\n",
|
||
" \n",
|
||
" c = s.add_component(entropyk.Compressor(\n",
|
||
" speed_rpm=3000, displacement=0.0001, efficiency=0.85, fluid=fluid\n",
|
||
" ))\n",
|
||
" cd = s.add_component(entropyk.Condenser(ua=8000, fluid=fluid, water_temp=t_cond, water_flow=0.5))\n",
|
||
" ex = s.add_component(entropyk.ExpansionValve(fluid=fluid, opening=0.5))\n",
|
||
" ev = s.add_component(entropyk.Evaporator(ua=6000, fluid=fluid, water_temp=t_evap, water_flow=0.4))\n",
|
||
" \n",
|
||
" s.add_edge(c, cd)\n",
|
||
" s.add_edge(cd, ex)\n",
|
||
" s.add_edge(ex, ev)\n",
|
||
" s.add_edge(ev, c)\n",
|
||
" \n",
|
||
" # Eau circuits\n",
|
||
" cd_in = s.add_component(entropyk.FlowSource(pressure_pa=100000, temperature_k=273.15+t_cond, fluid=\"Water\"))\n",
|
||
" cd_out = s.add_component(entropyk.FlowSink())\n",
|
||
" ev_in = s.add_component(entropyk.FlowSource(pressure_pa=100000, temperature_k=273.15+t_evap, fluid=\"Water\"))\n",
|
||
" ev_out = s.add_component(entropyk.FlowSink())\n",
|
||
" \n",
|
||
" s.add_edge(cd_in, cd)\n",
|
||
" s.add_edge(cd, cd_out)\n",
|
||
" s.add_edge(ev_in, ev)\n",
|
||
" s.add_edge(ev, ev_out)\n",
|
||
" \n",
|
||
" s.finalize()\n",
|
||
" \n",
|
||
" print(f\" {fluid:10s} → ✅ OK ({s.state_vector_len} vars)\")\n",
|
||
" \n",
|
||
" except Exception as e:\n",
|
||
" print(f\" {fluid:10s} → ❌ {e}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"---\n",
|
||
"# 7. TYPES PHYSIQUES"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"print(\"=== TYPES PHYSIQUES ===\\n\")\n",
|
||
"\n",
|
||
"# Pressions cycle R134a typique\n",
|
||
"p_hp = entropyk.Pressure(bar=12.0) # HP condensation\n",
|
||
"p_bp = entropyk.Pressure(bar=2.0) # BP évaporation\n",
|
||
"\n",
|
||
"print(f\"Pressions:\")\n",
|
||
"print(f\" HP: {p_hp} = {p_hp.to_kpa():.0f} kPa\")\n",
|
||
"print(f\" BP: {p_bp} = {p_bp.to_kpa():.0f} kPa\")\n",
|
||
"print(f\" Ratio: {p_hp.to_bar()/p_bp.to_bar():.1f}\")\n",
|
||
"\n",
|
||
"# Températures\n",
|
||
"t_cond = entropyk.Temperature(celsius=45.0)\n",
|
||
"t_evap = entropyk.Temperature(celsius=-5.0)\n",
|
||
"\n",
|
||
"print(f\"\\nTempératures:\")\n",
|
||
"print(f\" Condensation: {t_cond.to_celsius():.0f}°C = {t_cond.to_kelvin():.2f} K\")\n",
|
||
"print(f\" Évaporation: {t_evap.to_celsius():.0f}°C = {t_evap.to_kelvin():.2f} K\")\n",
|
||
"\n",
|
||
"# Enthalpies\n",
|
||
"h_liq = entropyk.Enthalpy(kj_per_kg=250.0)\n",
|
||
"h_vap = entropyk.Enthalpy(kj_per_kg=400.0)\n",
|
||
"\n",
|
||
"print(f\"\\nEnthalpies:\")\n",
|
||
"print(f\" Liquide: {h_liq.to_kj_per_kg():.0f} kJ/kg\")\n",
|
||
"print(f\" Vapeur: {h_vap.to_kj_per_kg():.0f} kJ/kg\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"---\n",
|
||
"# 8. SCHÉMA DU SYSTÈME COMPLET\n",
|
||
"\n",
|
||
"```\n",
|
||
"╔═══════════════════════════════════════════════════════════════════════════╗\n",
|
||
"║ SYSTÈME FRIGORIFIQUE COMPLET ║\n",
|
||
"╠═══════════════════════════════════════════════════════════════════════════╣\n",
|
||
"║ ║\n",
|
||
"║ CIRCUIT EAU CONDENSEUR ║\n",
|
||
"║ ┌─────────┐ ┌─────────┐ ║\n",
|
||
"║ │ SOURCE │───────[TUBE]────────→│ SINK │ ║\n",
|
||
"║ │ 30°C │ ╱╲ │ 35°C │ ║\n",
|
||
"║ └─────────┘ ╱ ╲ └─────────┘ ║\n",
|
||
"║ ╱COND╲ (Échange thermique) ║\n",
|
||
"║ HP, 45°C → ╲──────╱ ← Liquide, 40°C ║\n",
|
||
"║ ╲ ╱ ║\n",
|
||
"║ ╲──╱ ║\n",
|
||
"║ ║ ║\n",
|
||
"║ ┌─────────┐ ║ ┌─────────┐ ┌─────────┐ ║\n",
|
||
"║ │ COMP │──────║──────│ COND │──────│ EXV │ ║\n",
|
||
"║ │ R134a │ ║ │ │ │ │ ║\n",
|
||
"║ └─────────┘ ║ └─────────┘ └─────────┘ ║\n",
|
||
"║ ↑ ║ │ ║\n",
|
||
"║ │ ║ ↓ ║\n",
|
||
"║ │ ║ BP, 5°C ║\n",
|
||
"║ │ ║ │ ║\n",
|
||
"║ │ ║ ↓ ║\n",
|
||
"║ │ ╱╲╱╲ ┌─────────┐ ║\n",
|
||
"║ │ ╱ EVAP╲ │ │ ║\n",
|
||
"║ └────────╲──────╱←────────────────────────────────│ │ ║\n",
|
||
"║ Vapeur, 5°C ╲ ╱ Vapeur, -5°C (2-phase) └─────────┘ ║\n",
|
||
"║ ╲──╱ ║\n",
|
||
"║ ╱ ╲ (Échange thermique) ║\n",
|
||
"║ ╱ ╲ ║\n",
|
||
"║ CIRCUIT EAU ╱────────╲ ┌─────────┐ ║\n",
|
||
"║ ÉVAPORATEUR [TUBE]────→│ SINK │ ║\n",
|
||
"║ ┌─────────┐ 7°C │ │ ║\n",
|
||
"║ │ SOURCE │──────────→│ │ ║\n",
|
||
"║ │ 12°C │ └─────────┘ ║\n",
|
||
"║ └─────────┘ ║\n",
|
||
"║ ║\n",
|
||
"╚═══════════════════════════════════════════════════════════════════════════╝\n",
|
||
"```"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"print(\"\"\"\n",
|
||
"╔══════════════════════════════════════════════════════════════════════════════╗\n",
|
||
"║ RÉSUMÉ API ENTROPYK ║\n",
|
||
"╠══════════════════════════════════════════════════════════════════════════════╣\n",
|
||
"║ ║\n",
|
||
"║ COMPOSANTS (avec vraies équations CoolProp) ║\n",
|
||
"║ ───────────────────────────────────────────────────────────────────────── ║\n",
|
||
"║ Compressor(fluid, speed_rpm, displacement, efficiency, m1-m10) ║\n",
|
||
"║ Condenser(ua, fluid, water_temp, water_flow) ← avec circuit eau ║\n",
|
||
"║ Evaporator(ua, fluid, water_temp, water_flow) ← avec circuit eau ║\n",
|
||
"║ ExpansionValve(fluid, opening) ║\n",
|
||
"║ FlowSource(pressure_pa, temperature_k, fluid) ║\n",
|
||
"║ FlowSink() ║\n",
|
||
"║ ║\n",
|
||
"║ CIRCUITS ║\n",
|
||
"║ ───────────────────────────────────────────────────────────────────────── ║\n",
|
||
"║ system.add_edge(src_idx, tgt_idx) # Connecter composants ║\n",
|
||
"║ ║\n",
|
||
"║ FLUIDES DISPONIBLES (66+) ║\n",
|
||
"║ ───────────────────────────────────────────────────────────────────────── ║\n",
|
||
"║ HFC: R134a, R410A, R32, R407C, R125, R143a, R22, etc. ║\n",
|
||
"║ HFO: R1234yf, R1234ze(E), R1233zd(E), R1336mzz(E) ║\n",
|
||
"║ Naturels: R744 (CO2), R290 (Propane), R600a (Isobutane), R717 (Ammonia) ║\n",
|
||
"║ Mélanges: R513A, R454B, R452B, R507A ║\n",
|
||
"║ ║\n",
|
||
"╚══════════════════════════════════════════════════════════════════════════════╝\n",
|
||
"\"\"\")"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.11.0"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 4
|
||
}
|