{ "cells": [ { "cell_type": "markdown", "id": "577b82e3", "metadata": {}, "source": [ "# Correction TD : cycle thermodynamique du palier N4" ] }, { "cell_type": "markdown", "id": "ead54758", "metadata": {}, "source": [ "On va utiliser la bibliothèque [coolprop](http://www.coolprop.org/coolprop/wrappers/Python/index.html#python)" ] }, { "cell_type": "code", "execution_count": 1, "id": "c9eabfeb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: CoolProp in /home/florent/anaconda3/lib/python3.8/site-packages (6.4.1)\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ "pip install CoolProp" ] }, { "cell_type": "code", "execution_count": 2, "id": "4596f769", "metadata": {}, "outputs": [], "source": [ "import CoolProp.CoolProp as CP\n", "fluid = 'Water'\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "id": "329d6165", "metadata": {}, "source": [ "## Cycle de Carnot (2 pts)" ] }, { "cell_type": "markdown", "id": "61dcb194", "metadata": {}, "source": [ "Le rendement d'un cycle de Carnot qui fonctionne entre les températures $T_c$ et $T_f$ est:\n", "\n", "$\\eta = 1 - \\frac{T_f}{Tc}$.\n", "\n", "Attention, les températures doivent être en $K$.\n", "\n", "On cherche la température d'ébullition de l'eau à $72$ bars." ] }, { "cell_type": "code", "execution_count": 3, "id": "2e1e7e3f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Le rendement du cycle de Carnot équivalent est eta=45.95%\n" ] } ], "source": [ "Tc = CP.PropsSI('T','P',72e5,'Q',1,fluid) #K\n", "Tf = 273.15+30 #K\n", "eta = 1-Tf/Tc\n", "print(\"Le rendement du cycle de Carnot équivalent est eta={:.2%}\".format(eta))" ] }, { "cell_type": "markdown", "id": "048f5305", "metadata": {}, "source": [ "## Cycle de Rankine avec machines idéales (7 pts)" ] }, { "cell_type": "code", "execution_count": 4, "id": "831065b5", "metadata": {}, "outputs": [], "source": [ "T1 = Tf\n", "P1 = CP.PropsSI('P','T',T1,'Q',0,fluid) #liquide saturé\n", "H1 = CP.PropsSI('H','T',T1,'Q',0,fluid)\n", "S1 = CP.PropsSI('S','T',T1,'Q',0,fluid)" ] }, { "cell_type": "code", "execution_count": 5, "id": "b5fa02b1", "metadata": {}, "outputs": [], "source": [ "P3 = 72e5 #Pa\n", "T3 = CP.PropsSI('T','P',P3,'Q',1,fluid) #vapeur saturée\n", "H3 = CP.PropsSI('H','P',P3,'Q',1,fluid)\n", "S3 = CP.PropsSI('S','P',P3,'Q',1,fluid)" ] }, { "cell_type": "code", "execution_count": 6, "id": "a6cfd734", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "La pression en 1 vaut P1=0.042 bars\n", "L'enthalpie massique en 1 vaut H1=125.734 kJ/kg\n", "L'entropie massique en 1 vaut S1=0.437 kJ/kg\n", "La température en 3 vaut T3=287.7 °C\n", "L'enthalpie massique en 3 vaut H3=2769.991 kJ/kg\n", "L'entropie massique en 3 vaut S3=5.800 kJ/kg\n" ] } ], "source": [ "print(\"La pression en 1 vaut P1=%.3f bars\" %(P1/1e5))\n", "print(\"L\\'enthalpie massique en 1 vaut H1=%.3f kJ/kg\" %(H1/1e3))\n", "print(\"L\\'entropie massique en 1 vaut S1=%.3f kJ/kg\" %(S1/1e3))\n", "print(\"La température en 3 vaut T3=%.1f °C\" %(T3-273.15))\n", "print(\"L\\'enthalpie massique en 3 vaut H3=%.3f kJ/kg\" %(H3/1e3))\n", "print(\"L\\'entropie massique en 3 vaut S3=%.3f kJ/kg\" %(S3/1e3))" ] }, { "cell_type": "code", "execution_count": 7, "id": "9f1d73d2", "metadata": {}, "outputs": [], "source": [ "P2=P3\n", "P4=P1" ] }, { "cell_type": "markdown", "id": "9badc569", "metadata": {}, "source": [ "Transformation $1 \\rightarrow 2$: compression *isentropique*.\n", "\n", "On cherche l'enthalpie massique en $2$ $h_{2s}$ telle que $P_2=72$ bars *et* $s_2=s_1$\n", "\n", "Le travail de compression par unité de masse est $w_{1,2s} = h_{2s}-h_1$" ] }, { "cell_type": "code", "execution_count": 8, "id": "b559a6fb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Le travail de compression massique vaut 7.216 kJ/kg\n" ] } ], "source": [ "S2 = S1\n", "H2s = CP.PropsSI('H','P',P2,'S',S2,fluid)\n", "T2 = CP.PropsSI('T','P',P2,'S',S2,fluid)\n", "w12s = H2s - H1\n", "print(\"Le travail de compression massique vaut %.3f kJ/kg\" %(w12s/1e3))" ] }, { "cell_type": "markdown", "id": "a1487c2d", "metadata": {}, "source": [ "Transformation $2 \\rightarrow 3$: apport de chaleur. \n", "L'apport de chaleur par unité de masse est $q_{2s,3} = h_{3}-h_{2s}$" ] }, { "cell_type": "code", "execution_count": 9, "id": "afd967be", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "L'apport de chaleur massique vaut 2637.041 kJ/kg\n" ] } ], "source": [ "q2s3 = H3 - H2s\n", "print(\"L\\'apport de chaleur massique vaut %.3f kJ/kg\" %(q2s3/1e3))" ] }, { "cell_type": "markdown", "id": "57d2560b", "metadata": {}, "source": [ "Transformation $3 \\rightarrow 4$: détente *isentropique*.\n", "\n", "On cherche l'enthalpie massique en $4$ $h_{4s}$ telle que $P_4=0.042$ bars *et* $s_4=s_3$\n", "\n", "Le travail de détente par unité de masse est $w_{3,4s} = h_{4s}-h_3$" ] }, { "cell_type": "code", "execution_count": 10, "id": "f0bdea4e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Le travail de détente massique vaut -1018.264 kJ/kg\n", "Le titre en fin de détente isentropique vaut x4s=66.9%\n", "La chaleur massique cédée à la source froide vaut -1625.993 kJ/kg\n" ] } ], "source": [ "S4 = S3\n", "H4s = CP.PropsSI('H','P',P4,'S',S4,fluid)\n", "T4 = CP.PropsSI('T','P',P4,'S',S4,fluid)\n", "w34s = H4s - H3\n", "print(\"Le travail de détente massique vaut %.3f kJ/kg\" %(w34s/1e3))\n", "X4s = CP.PropsSI('Q','P',P4,'S',S4,fluid)\n", "print(\"Le titre en fin de détente isentropique vaut x4s={:.1%}\".format(X4s))\n", "q4s1 = H1 - H4s\n", "print(\"La chaleur massique cédée à la source froide vaut %.3f kJ/kg\" %(q4s1/1e3))" ] }, { "cell_type": "markdown", "id": "8eb17809", "metadata": {}, "source": [ "La définition du rendement est :\n", "\n", "$\\eta = \\frac{|w_{3,4s} + w_{1,2s}|}{q_{2s,3}}$" ] }, { "cell_type": "code", "execution_count": 11, "id": "34c74624", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Le rendement du cycle de Rankine isentropique vaut etas=38.3%\n" ] } ], "source": [ "etarankines=abs(w34s+w12s)/q2s3\n", "print(\"Le rendement du cycle de Rankine isentropique vaut etas={:.1%}\".format(etarankines))" ] }, { "cell_type": "code", "execution_count": 12, "id": "799db2b6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[<matplotlib.lines.Line2D at 0x7ff7b8487760>]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot([T1,T2,T3,T4,T1],[S1,S2,S3,S4,S1])" ] }, { "cell_type": "markdown", "id": "85279cb3", "metadata": {}, "source": [ "## Cycle de Rankine avec rendement des machines (3 pts)" ] }, { "cell_type": "markdown", "id": "8915a756", "metadata": {}, "source": [ "Pour une pompe, la définition du rendement isentropique est le rapport entre le travail de compression isentropique et le travail de compression réel, c'est-à -dire:\n", "\n", "$\\eta_{pump} = \\frac{w_s}{w} = \\frac{h_{2s}-h_1}{h_2-h_1}$\n", "\n", "On raisonne donc sur le $\\Delta h$ isentropique auquel on applique le rendement pour trouver le $\\Delta h$ réel et donc la valeur de l'enthalpie massique au point $2$" ] }, { "cell_type": "code", "execution_count": 13, "id": "0ddc5618", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Le travail de compression massique vaut 8.018 kJ/kg\n" ] } ], "source": [ "etap=0.9\n", "w12=w12s/etap\n", "H2 = H1 + w12\n", "print(\"Le travail de compression massique vaut %.3f kJ/kg\" %(w12/1e3))" ] }, { "cell_type": "markdown", "id": "eada77b2", "metadata": {}, "source": [ "Pour une turbine, la définition du rendement isentropique est le rapport entre le travail de détente réel et le travail de détente isentropique, c'est-à -dire:\n", "\n", "$\\eta_{turbine} = \\frac{w}{w_s} = \\frac{h_{4}-h_3}{h_{4s}-h_3}$\n", "\n", "On raisonne donc sur le $\\Delta h$ isentropique auquel on applique le rendement pour trouver le $\\Delta h$ réel et donc la valeur de l'enthalpie massique au point $4$" ] }, { "cell_type": "code", "execution_count": 14, "id": "f3738a7f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Le travail de détente massique vaut -814.611 kJ/kg\n", "Le titre en fin de détente réelle vaut x4=75.3%\n", "Le rendement du cycle de Rankine réel vaut eta=30.6%\n" ] } ], "source": [ "etat=0.8\n", "w34=w34s*etat\n", "H4 = H3 + w34\n", "print(\"Le travail de détente massique vaut %.3f kJ/kg\" %(w34/1e3))\n", "X4 = CP.PropsSI('Q','P',P4,'H',H4,fluid)\n", "print(\"Le titre en fin de détente réelle vaut x4={:.1%}\".format(X4))\n", "q23 = H3 - H2\n", "etarankine=abs(w34+w12)/q23\n", "print(\"Le rendement du cycle de Rankine réel vaut eta={:.1%}\".format(etarankine))" ] }, { "cell_type": "markdown", "id": "77dee604", "metadata": {}, "source": [ "## Cycle avec détente en deux phases, machines idéales (5 pts)" ] }, { "cell_type": "markdown", "id": "c479adbb", "metadata": {}, "source": [ "" ] }, { "cell_type": "code", "execution_count": 15, "id": "627ae47c", "metadata": {}, "outputs": [], "source": [ "P1 = 72e5\n", "P2 = P1\n", "P2p = P1\n", "P3p = P1\n", "P10 = P1\n", "P3 = 11e5\n", "P4 = P3\n", "P4p = P3\n", "P4pp = P3\n", "P5 = P3\n", "P8 = P3\n", "P9 = P3\n", "T7 = 30+273.15\n", "P7 = CP.PropsSI('P','T',T7,'Q',0,fluid) #liquide saturé\n", "P6 = P7" ] }, { "cell_type": "code", "execution_count": 16, "id": "97ded935", "metadata": {}, "outputs": [], "source": [ "M1 = 1 #En noir\n", "M2 = 0.95 #En vert\n", "M2p = M1-M2 #En rose\n", "M3 = M2 #En vert\n", "M3p = M2p #En rose\n", "M4p = M2p #En rose\n", "M9 = M1 #En noir\n", "M10 = M1 #En noir" ] }, { "cell_type": "markdown", "id": "5bdda12f", "metadata": {}, "source": [ "Première détente, comme pour le Rankine, transformation $2 \\rightarrow 3s$ isentropique" ] }, { "cell_type": "code", "execution_count": 17, "id": "cb16da7b", "metadata": {}, "outputs": [], "source": [ "H1 = CP.PropsSI('H','P',P1,'Q',1,fluid)\n", "S1 = CP.PropsSI('S','P',P1,'Q',1,fluid)\n", "H2 = H1\n", "H2p = H2\n", "S3s = S1\n", "H3s = CP.PropsSI('H','P',P3,'S',S3s,fluid)\n", "X3s = CP.PropsSI('Q','P',P3,'S',S3s,fluid)" ] }, { "cell_type": "markdown", "id": "8094a7a4", "metadata": {}, "source": [ "Séparateur: on recueille sur la branche principale la vapeur, sur la branche \" le liquide" ] }, { "cell_type": "code", "execution_count": 18, "id": "f0cee956", "metadata": {}, "outputs": [], "source": [ "H4 = CP.PropsSI('H','P',P4,'Q',1,fluid)\n", "M4s = M3*X3s #En jaune\n", "H4pp = CP.PropsSI('H','P',P4,'Q',0,fluid)\n", "M4pps = M3*(1-X3s) #En bleu" ] }, { "cell_type": "markdown", "id": "3c978b44", "metadata": {}, "source": [ "Surchauffeur: on suppose que toute la chaleur cédée par la vapeur vive prélevée au GV est cédée à la branche principale. C'est-à -dire que:\n", "\n", "$\\dot{m_{4,5}} \\left(h_5 - h_4\\right) + \\dot{m_{2',3'}} \\left(h_{3'} - h_{2'}\\right)$\n", "\n", "Il faut fixer une des conditions: on fixe $h_{3'}$ telle qu'on ait le liquide saturé." ] }, { "cell_type": "code", "execution_count": 19, "id": "237d6de6", "metadata": {}, "outputs": [], "source": [ "H3p = CP.PropsSI('H','P',P3p,'Q',0,fluid) #condition sortie surchauffeur imposée\n", "H5s = (-M3p * (H3p-H2p)/M4s + H4) #surchauffe" ] }, { "cell_type": "code", "execution_count": 20, "id": "8b661b8c", "metadata": {}, "outputs": [], "source": [ "H4p = H3p #laminage isenthalpe\n", "S5s = CP.PropsSI('S','P',P5,'H',H5s,fluid)\n", "M5s = M4s #En jaune\n", "S6s = S5s #détente isentropique\n", "M6s = M5s #En jaune\n", "H6s = CP.PropsSI('H','P',P6,'S',S6s,fluid)\n", "X6s = CP.PropsSI('Q','P',P6,'S',S6s,fluid)\n", "H7 = CP.PropsSI('H','P',P7,'Q',0,fluid) #condenseur\n", "M7s = M6s #En jaune\n", "S7 = CP.PropsSI('S','P',P7,'Q',0,fluid)\n", "S8s = S7 #compression isentropique\n", "H8s = CP.PropsSI('H','P',P8,'S',S8s,fluid)\n", "M8s = M7s #En jaune" ] }, { "cell_type": "markdown", "id": "13789b62", "metadata": {}, "source": [ "Pour le mélange dans la bâche: il faut tenir compte des débits.\n", "\n", "$m_9 h_9 = m_{4\"} h_{4\"} + m_{4'} h_{4'} + m_8 h_8$" ] }, { "cell_type": "code", "execution_count": 21, "id": "f25b6aa3", "metadata": {}, "outputs": [], "source": [ "H9 = 1/M9 * (M4pps * H4pp + M4p * H4p + M8s * H8s)" ] }, { "cell_type": "code", "execution_count": 22, "id": "14027777", "metadata": {}, "outputs": [], "source": [ "S9 = CP.PropsSI('S','P',P9,'H',H9,fluid)\n", "S10s = S9 #compression isentropique\n", "H10s = CP.PropsSI('H','P',P10,'S',S10s,fluid)" ] }, { "cell_type": "code", "execution_count": 23, "id": "f12970e8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Le titre en fin de détente HP isentropique vaut x3s=82.8%\n", "Le titre en fin de détente BP isentropique vaut x6s=78.8%\n" ] } ], "source": [ "qcs=H1-H10s\n", "wt1s=H3s-H2\n", "wt2s=H6s-H5s\n", "wp1s=H8s-H7\n", "wp2s=H10s-H9\n", "print(\"Le titre en fin de détente HP isentropique vaut x3s={:.1%}\".format(X3s))\n", "print(\"Le titre en fin de détente BP isentropique vaut x6s={:.1%}\".format(X6s))\n" ] }, { "cell_type": "markdown", "id": "438e8cf8", "metadata": {}, "source": [ "Pour le rendement du cycle, il faut tenir compte des débits." ] }, { "cell_type": "code", "execution_count": 24, "id": "83e203dd", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Le rendement du cycle isentropique vaut eta=39.1%\n" ] } ], "source": [ "etacycles=abs(M2*wt1s + M5s*wt2s + M7s*wp1s + M9*wp2s)/(M9*qcs)\n", "print(\"Le rendement du cycle isentropique vaut eta={:.1%}\".format(etacycles))" ] }, { "cell_type": "markdown", "id": "1d6cb60b", "metadata": {}, "source": [ "## Cycle avec détente en deux phases, machines réelles (3 pts)" ] }, { "cell_type": "code", "execution_count": 25, "id": "2a255b3f", "metadata": {}, "outputs": [], "source": [ "etap=0.9\n", "etat=0.85\n", "w23=wt1s*etat #détente HP réelle\n", "H3 = H2 + w23\n", "X3 = CP.PropsSI('Q','P',P3,'H',H3,fluid)" ] }, { "cell_type": "markdown", "id": "1e9657d9", "metadata": {}, "source": [ "Les débits dans les différentes branches sont à recalculer" ] }, { "cell_type": "code", "execution_count": 26, "id": "99687630", "metadata": {}, "outputs": [], "source": [ "M4 = M3*X3\n", "M4pp = M3*(1-X3)\n", "H5 = (-M3p * (H3p-H2p)/M4 + H4) #surchauffe\n", "S5 = CP.PropsSI('S','P',P5,'H',H5,fluid)\n", "M5 = M4\n", "S6 = S5 #détente isentropique\n", "M6 = M5\n", "H6ss = CP.PropsSI('H','P',P6,'S',S6,fluid)\n", "w56s = H6ss-H5\n", "w56 = w56s*etat #détente BP réelle\n", "H6 = H5 + w56\n", "X6 = CP.PropsSI('Q','P',P6,'H',H6,fluid)\n", "M7 = M6\n", "w78s = H8s-H7\n", "w78 = w78s/etap #compression BP réelle\n", "H8 = H7 + w78\n", "M8 = M7\n", "H9 = 1/M9 * (M4pp * H4pp + M4p * H4p + M8 * H8)\n", "S9 = CP.PropsSI('S','P',P9,'H',H9,fluid)\n", "S10ss = S9 #compression isentropique\n", "H10ss = CP.PropsSI('H','P',P10,'S',S10ss,fluid)\n", "w910s = H10ss-H9\n", "w910 = w910s/etap #compression HP réelle\n", "H10 = H9 + w910" ] }, { "cell_type": "code", "execution_count": 27, "id": "2ccb498f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Le titre en fin de détente HP réelle vaut x3s=85.3%\n", "Le titre en fin de détente BP réelle vaut x6s=83.9%\n" ] } ], "source": [ "qc=H1-H10\n", "wt1=H3-H2\n", "wt2=H6-H5\n", "wp1=H8-H7\n", "wp2=H10-H9\n", "print(\"Le titre en fin de détente HP réelle vaut x3s={:.1%}\".format(X3))\n", "print(\"Le titre en fin de détente BP réelle vaut x6s={:.1%}\".format(X6))" ] }, { "cell_type": "code", "execution_count": 28, "id": "fbd1a7cf", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Le rendement du cycle isentropique vaut eta=33.6%\n" ] } ], "source": [ "etacycle=abs(M2*wt1 + M5*wt2 + M7*wp1 + M9*wp2)/(M9*qc)\n", "print(\"Le rendement du cycle isentropique vaut eta={:.1%}\".format(etacycle))" ] }, { "cell_type": "code", "execution_count": null, "id": "096ab41a", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "cab6d1ec", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.8.11" } }, "nbformat": 4, "nbformat_minor": 5 }