{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "ZyYxarWXICGB" }, "source": [ "\"Licencia
Python en ciencias e ingeniería: tutoriales basados en ejemplos por Sergio Gutiérrez Rodrigo y Adrián Navas Montilla se distribuye bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional." ] }, { "cell_type": "markdown", "metadata": { "id": "cU67irCkAoSz" }, "source": [ "---\n", "Programa de Recursos en Abierto en la UZ (2022)\n", "\n", "**Python en ciencias e ingeniería: tutoriales basados en ejemplos**\n", "---\n", "Universidad de Zaragoza\n", "---\n", "*PRAUZ-739*\n" ] }, { "cell_type": "markdown", "metadata": { "id": "aZ4I0EbyAqVW" }, "source": [ "##
Introducción a la termodinámica técnica con PyroMat
\n", "\n", "\n", "-----------------------------------------" ] }, { "cell_type": "markdown", "metadata": { "id": "LITVC6KmPNzZ" }, "source": [ "### Primer paso: cargar librerías de Python\n", "\n", "Para comenzar, debemos cargar todos los paquetes de Python necesarios. Estos paquetes nos permiten hacer cosas como representaciones gráficas, operaciones matemáticas, trabajar con vectores... y hasta obtener las propiedades termodinámicas de distintas sustancias. Para esto último utilizaremos el paquete **PYroMat**. Dado que no es un paquete habitual, debemos instalarlo. Para instalar Pyromat y cargar el resto de paquetes, hacemos lo siguiente: " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 20296, "status": "ok", "timestamp": 1683906692952, "user": { "displayName": "Adrián Navas Montilla", "userId": "05883326183094944917" }, "user_tz": -120 }, "id": "FNuY3zZTdbtN", "outputId": "aaaeae98-a46b-4f66-f411-567793ebba5c" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: pyromat in c:\\users\\sie2016\\anaconda3\\lib\\site-packages (2.2.4)\n", "Requirement already satisfied: numpy>=1.7 in c:\\users\\sie2016\\anaconda3\\lib\\site-packages (from pyromat) (1.21.5)\n" ] } ], "source": [ "import sys\n", "!pip install pyromat \n", "import pyromat as pm # Importamos Pyromat\n", "from sympy import * # Librería para trabajo simbólico\n", "import numpy as np # Librería para cálculo numérico\n", "import math # Librería para utilizar símbolos matemáticos como el número pi, que se escribe como math.pi\n", "import matplotlib.pyplot as plt # Librería para poder dibujar gráficas" ] }, { "cell_type": "markdown", "metadata": { "id": "4wY4VP3nP6Op" }, "source": [ "Si todo ha ido bien, se habrá instalado y habrá aparecido lo siguiente en la pantalla.\n", "\n", "```Successfully installed pyromat-2.1.10```" ] }, { "cell_type": "markdown", "metadata": { "id": "xzTBZ3ZZQGR3" }, "source": [ "### Breve introducción a Python\n", "\n", "Antes de comenzar a resolver problemas de Termodinámica, vamos a aprender algunas operaciones básicas en Python:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 65, "status": "ok", "timestamp": 1683906692954, "user": { "displayName": "Adrián Navas Montilla", "userId": "05883326183094944917" }, "user_tz": -120 }, "id": "ELiDEYIiQQ6y", "outputId": "c9e79a10-bde0-48e4-bc7d-41eda347a112" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "El resultado es 13.076792452830187\n" ] } ], "source": [ "## Operaciones matemáticas\n", "\n", "a = 2.0 #para definir una variable hacemos simplemente esto\n", "b = 3.3\n", "c = a + b - 5.0*b/(a+b) + b**2 #almacenamos el resultado de esa operación en c\n", "\n", "print(\"El resultado es\", c) #imprimimos por pantalla" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 55, "status": "ok", "timestamp": 1683906692955, "user": { "displayName": "Adrián Navas Montilla", "userId": "05883326183094944917" }, "user_tz": -120 }, "id": "jBHwdaSxQm6_", "outputId": "e7f7a9f9-5b5d-4cf5-bff0-6d2f490b54f5" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "El vector v es [ 0. 1.11111111 2.22222222 3.33333333 4.44444444 5.55555556\n", " 6.66666667 7.77777778 8.88888889 10. ]\n", "El vector w es [ 0. 2.22222222 4.44444444 6.66666667 8.88888889 11.11111111\n", " 13.33333333 15.55555556 17.77777778 20. ]\n" ] } ], "source": [ "## Vectores y arrays\n", "\n", "# Voy a hacer un vector de 10 componentes que tomen valores entre 0 y 10\n", "\n", "npt=10 #numero de componentes del vector\n", "x1=0.0 #valor inicial\n", "x2=10.0 #valor final\n", "v = np.linspace(x1, x2, npt) #se construye un vector v con npt=10 valores entre 0 y 10, equiespaciados\n", "\n", "print(\"El vector v es\", v) #imprimimos por pantalla\n", "\n", "w=2*v #podemos hacer operaciones directamente con vectores! esto es muy útil\n", "\n", "print(\"El vector w es\", w)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 44, "status": "ok", "timestamp": 1683906692955, "user": { "displayName": "Adrián Navas Montilla", "userId": "05883326183094944917" }, "user_tz": -120 }, "id": "jXsikUibQmtp", "outputId": "99eb0beb-0503-4bb9-f452-75509261ece6" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "La función evaluada en x=3 es 10.0\n", "La función evaluada en el vector x=v es [ 1. 2.2345679 5.9382716 12.11111111 20.75308642\n", " 31.86419753 45.44444444 61.49382716 80.01234568 101. ]\n" ] } ], "source": [ "## Definición de funciones\n", "\n", "# Voy a definir la función polinómica f(x)=x**2+1\n", "\n", "def mifuncion(x): #defino la función con el nombre que yo quiera. Entre paréntesis van los argumentos de la función (de qué depende ésta)\n", " return x**2 + 1.0 #es la expresión de la función\n", "\n", "print(\"La función evaluada en x=3 es\", mifuncion(3.0)) #evaluo la función en x=3\n", "\n", "print(\"La función evaluada en el vector x=v es\", mifuncion(v)) #evaluo la función en todas las componentes de un vector" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 406 }, "executionInfo": { "elapsed": 39, "status": "ok", "timestamp": 1683906692956, "user": { "displayName": "Adrián Navas Montilla", "userId": "05883326183094944917" }, "user_tz": -120 }, "id": "0fBILn7PQmeo", "outputId": "d8dea0fd-6a95-4d7f-e9bf-03a3de583d1b" }, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'y')" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "## Representaciones gráficas\n", "\n", "# Vamos a representar gráficamente la función f(x)=x**2+1 del apartado anterior, definida en mifuncion(x)\n", "# Vamos a representar también la función f(x)=-x**1.6+80, que definiré sin usar una función (para que veais otra manera rápida de hacerlo)\n", "\n", "npt=40 #numero de puntos que voy a pintar\n", "x1=0.0 \n", "x2=10.0 \n", "xx = np.linspace(x1, x2, npt) #defino los valores de x en un vector xx con 40 puntos entre x1 y x2\n", "yy = mifuncion(xx) #defino los valores de y en un vector yy evaluando las x anteriores con la función mifuncion(x)\n", "yy2 = -xx**1.6 + 80 #defino los valores de y en un vector yy2 evaluando las x anteriores con la expresion -xx**1.6 + 80 \n", "\n", "fig, ax1 = plt.subplots(figsize=(6, 4)) #con esta intrucción creamos una figura \"fig\", con ejes llamados \"ax1\", de tamaño 6x4\n", "ax1.plot(xx,yy) #pinto yy frente a xx\n", "ax1.plot(xx,yy2,'-^',color='darkorange') #pinto yy2 frente a xx, añado triangulos en cada punto, además cambio el color a naranja\n", "ax1.set_xlabel(\"x\") #etiqueta del eje x\n", "ax1.set_ylabel(\"y\") #etiqueta del eje y" ] }, { "cell_type": "markdown", "metadata": { "id": "UZbiWmk-XIVE" }, "source": [ "### Introducción a PYroMat\n", "\n", "PYroMat es un paquete de Python para obtener de manera sencilla las propiedades termodinámicas de las sustancias. PYroMat es gratuito y abierto. Hay algunas alternativas excelentes que hacen cosas similares, pero todas ellas son con ánimo de lucro, tienen capacidades limitadas, se dedican a conjuntos de datos mucho más estrechos, o están construidas para realizar un trabajo específico. PYroMat está escrito completamente en Python y está diseñado con la intención de minimizar los clics y las pulsaciones de teclas necesarias para obtener datos que deberían estar disponibles para todos nosotros. \n", "\n", "El texto anterior está extraido de la web del autor: http://pyromat.org/index.html\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "id": "-85RxDbigcMC" }, "source": [ "Para acceder a la configuración de PYroMat simplemente hacemos:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 31, "status": "ok", "timestamp": 1683906692956, "user": { "displayName": "Adrián Navas Montilla", "userId": "05883326183094944917" }, "user_tz": -120 }, "id": "hFHhYxL-gbK5", "outputId": "add3c88c-e763-4408-f9d9-ab82a17c8703" }, "outputs": [ { "data": { "text/plain": [ " config_file : ['C:\\\\Users\\\\sie2016\\\\anaconda3\\\\lib\\\\site-package...\n", " config_verbose : False\n", " dat_dir : ['C:\\\\Users\\\\sie2016\\\\anaconda3\\\\lib\\\\site-package...\n", " dat_exist_fatal : False\n", " dat_overwrite : True\n", " dat_recursive : True\n", " dat_verbose : False\n", " def_T : 298.15\n", " def_oob : nan\n", " def_p : 1.01325\n", " error_verbose : True\n", " install_dir : 'C:\\\\Users\\\\sie2016\\\\anaconda3\\\\lib\\\\site-packages...\n", " reg_dir : ['C:\\\\Users\\\\sie2016\\\\anaconda3\\\\lib\\\\site-package...\n", " reg_exist_fatal : False\n", " reg_overwrite : True\n", " reg_verbose : False\n", " unit_energy : 'kJ'\n", " unit_force : 'N'\n", " unit_length : 'm'\n", " unit_mass : 'kg'\n", " unit_matter : 'kg'\n", " unit_molar : 'kmol'\n", " unit_pressure : 'bar'\n", "unit_temperature : 'K'\n", " unit_time : 's'\n", " unit_volume : 'm3'\n", " version : '2.2.4'\n", " warning_verbose : True" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pm.config" ] }, { "cell_type": "markdown", "metadata": { "id": "WbZ_oqI2YzrJ" }, "source": [ "Aquí, entre otras cosas, podemos ver las unidades para las distintas propiedades. Esto es **muy importante**, ya que debemos saber en qué unidades estamos trabajando. \n", "\n", "Entre ellas, debemos prestar atención a ```unit_matter```, que es la unidad de masa con la que se definirán las *propiedades específicas*. Es decir, si ```unit_matter: 'kg'```, obtendremos la energía específica en J/kg, mientras que si ```unit_matter: 'g'```, la obtendremos en J/g. \n", "\n", "Podemos modificar las unidades de alguna de estas propiedades. Por ejemplo, si queremos obtener la presión en kPa en vez de en bares, haremos:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "jAc7eYIQZO_5" }, "outputs": [], "source": [ "pm.config['unit_pressure'] = 'kPa'" ] }, { "cell_type": "markdown", "metadata": { "id": "kajNWoUtaQKC" }, "source": [ "Antes de empezar a obtener propiedades, debemos escoger la sustancia de la que queremos conocer sus propiedades y \"cargar\" sus datos. Para ello se utilizará el método ```pm.get('sustancia_de_la_lista')```. \n", "\n", "\n", "La lista de sustancias está en: http://pyromat.org/features.html y se puede acceder a ella ejecutando ```pm.info()```.\n", "\n", "Aquellas que comienzan por *ig* son gases ideales, mientras que aquellas que comienzan por *mp*, son sustancias multifásicas.\n", "\n", "Vamos a cargar los datos del agua en un objeto al que llamamos ```water```:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "fBQHPQXteOgy" }, "outputs": [], "source": [ "water = pm.get('mp.H2O')" ] }, { "cell_type": "markdown", "metadata": { "id": "Iih13vtqbEep" }, "source": [ "De cada sustancia, podremos acceder a las siguientes propiedades:\n", "\n", "- ```cp```: Calor específico a presión constante \n", "\n", "- ```cv```: Calor específico a volumen constante \n", "\n", "- ```d```: Densidad\n", "\n", "- ```e```: Energía interna específica\n", "\n", "- ```gam```: $\\gamma$\n", "\n", "- ```h```: Entalpía específica\n", "\n", "- ```mw```: Masa molecular\n", "\n", "- ```R```: Constante gas ideal\n", "\n", "- ```s```: Entropía específica\n", "\n", "\n", "Ahora, para acceder a las propiedades del agua simplemente utilizamos un \"método\" asociado al objeto ```water```. Por ejemplo, si queremos obtener la densidad del agua líquida a 15 ºC haremos: " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 24, "status": "ok", "timestamp": 1683906692958, "user": { "displayName": "Adrián Navas Montilla", "userId": "05883326183094944917" }, "user_tz": -120 }, "id": "87pIV0_IblLT", "outputId": "ecb69302-ebc4-4d5c-c9e3-b847c8dace9c" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "La densidad del agua es: [999.05268095] kg/m^3\n" ] } ], "source": [ "den=water.d(T=15+273.15, x=0.0) #pasamos como argumentos la temperatura y el título de la mezcla, en este caso x=0 agua liquida\n", "print(\"La densidad del agua es:\", den, \"kg/m^3\") # las unidades serán según estén definidas en unit_length y unit_mass. \n", " # Si no me acuerdo, ejecuto pm.config" ] }, { "cell_type": "markdown", "metadata": { "id": "hrEQAFAlgS8L" }, "source": [ "Si queremos obtener la densidad del agua líquida a 120 kPa haremos:\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 294, "status": "ok", "timestamp": 1683906693234, "user": { "displayName": "Adrián Navas Montilla", "userId": "05883326183094944917" }, "user_tz": -120 }, "id": "RTZTtUI8gbg4", "outputId": "5ee66c21-63c3-4a7d-8f75-cfb97a27e427" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "La densidad del agua es: [954.8629517] kg/m^3\n" ] } ], "source": [ "den=water.d(p=120, x=0.0) #pasamos como argumentos la presión y el título de la mezcla, en este caso x=0 agua liquida\n", "print(\"La densidad del agua es:\", den, \"kg/m^3\") # las unidades serán según estén definidas en unit_length y unit_mass. \n", " # Si no me acuerdo, ejecuto pm.config" ] }, { "cell_type": "markdown", "metadata": { "id": "K5YqYoUjgjSK" }, "source": [ "Y si queremos obtener la energía interna específica, $u$, del vapor agua saturado a 120 kPa haremos:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 22, "status": "ok", "timestamp": 1683906693235, "user": { "displayName": "Adrián Navas Montilla", "userId": "05883326183094944917" }, "user_tz": -120 }, "id": "JhPkOtfVgBGK", "outputId": "289239ef-3d95-419d-e411-266e6d1e0b09" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "La energía interna específica: [2511.67872698] kJ/kg\n" ] } ], "source": [ "uw=water.e(p=120, x=1.0) #pasamos como argumentos la presión y el título de la mezcla, en este caso x=1 vapor\n", "print(\"La energía interna específica:\", uw, \"kJ/kg\")" ] }, { "cell_type": "markdown", "metadata": { "id": "spnZkA_3zQMx" }, "source": [ "### Ejemplo sencillo\n", "\n", "Un recipiente rígido contiene 20 kg de agua líquida saturada a 80 °C. Determine la presión en el recipiente y el volumen del mismo." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 19, "status": "ok", "timestamp": 1683906693236, "user": { "displayName": "Adrián Navas Montilla", "userId": "05883326183094944917" }, "user_tz": -120 }, "id": "vlwnpUfhev50", "outputId": "9963d437-6153-4f68-ef7e-21578ba779ef" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "El volumen total es: [0.0205812] m^3\n", "La presión es: [47.41240781] kPa\n" ] } ], "source": [ "#Primero configuramos unidades. Ponemos presion en kPa (por gusto) y el resto las dejamos como están\n", "pm.config['unit_pressure'] = 'kPa'\n", "\n", "#Ahora ponemos los datos del problema. Las unidades tienen que ser acordes a lo que aparece en pm.config\n", "masa=20 #uds en kg (unit_mass)\n", "temp=273.15+80 #uds en K (unit_temperature)\n", "\n", "#Resolución\n", "v=1/water.d(T=temp, x=0.0) #volumen específico para x=0 (liquido saturado)\n", "P=water.p(T=temp, x=0.0) #presión para x=0 (liquido saturado)\n", "\n", "V=v*masa #volumen total\n", "print(\"El volumen total es:\", V, \"m^3\")\n", "print(\"La presión es:\", P,\"kPa\")" ] }, { "cell_type": "markdown", "metadata": { "id": "UlPmazRoeg1L" }, "source": [ "## Resolución de ejercicios" ] }, { "cell_type": "markdown", "metadata": { "id": "SIIYl8VI5nGX" }, "source": [ "### Ejercicio 1\n", "\n", "Considere el proceso de evaporación de 800 gramos de agua líquida saturada, que se evapora por completo a una presión constante de 105 kPa. Determine:\n", "\n", "a) el cambio de volumen en el proceso\n", "\n", "b) la cantidad de energía transferida al agua\n", "\n", "c) comprobar que $h_{fg}=u_{fg} + Pv_{fg}$." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 17, "status": "ok", "timestamp": 1683906693237, "user": { "displayName": "Adrián Navas Montilla", "userId": "05883326183094944917" }, "user_tz": -120 }, "id": "tJaNpduU5zVy", "outputId": "000c4cd5-7fe7-49aa-b1a1-cb8028fe1cf5" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "vf= [0.00104423] m^3/kg , vg= [1.61855827] m^3/kg\n", "Cambio de volumen total: [1.29401123] m^3\n", "hfg= [2253.85351315] kJ/kg\n", "Energía total transferida al agua= [1803.08281052] kJ\n", "hfg= [2253.86693465] kJ/kg (Otra forma) \n", "Energía total transferida al agua= [1803.09354772] kJ (Otra forma) \n" ] } ], "source": [ "#Primero configuramos unidades\n", "pm.config['unit_pressure'] = 'kPa'\n", "\n", "#Ahora ponemos los datos del problema\n", "masa=0.8 #uds en kg\n", "Pres=105 #uds en kPa\n", "\n", "#Resolución\n", "\n", "#Apartado (a)\n", "vf=1/water.d(p=Pres, x=0.0) #volumen específico para x=0 (liquido saturado)\n", "vg=1/water.d(p=Pres, x=1.0) #volumen específico para x=0 (liquido saturado)\n", "\n", "vfg = vg - vf # cambio de volumen durante el proceso evaporación\n", "\n", "V=vfg*masa\n", "\n", "print(\"vf=\", vf, \"m^3/kg , vg=\", vg, \"m^3/kg\")\n", "print(\"Cambio de volumen total:\", V, \"m^3\")\n", "\n", "#Apartado (b)\n", "hf=water.h(p=Pres, x=0.0)\n", "hg=water.h(p=Pres, x=1.0)\n", "\n", "hfg = hg - hf #diferencia de entalpia entre ambos estados->entalpia de evaporacion\n", "\n", "Hfg=hfg*masa\n", "\n", "print(\"hfg=\", hfg, \"kJ/kg\")\n", "print(\"Energía total transferida al agua=\", Hfg, \"kJ\")\n", "\n", "#Apartado (c)\n", "uf=water.e(p=Pres, x=0.0)\n", "ug=water.e(p=Pres, x=1.0)\n", "\n", "ufg = ug - uf #diferencia de energía interna entre ambos estados\n", "\n", "hfg2 = ufg + Pres*vfg\n", "\n", "Hfg2=hfg2*masa\n", "\n", "print(\"hfg=\", hfg2, \"kJ/kg (Otra forma) \")\n", "print(\"Energía total transferida al agua=\", Hfg2, \"kJ (Otra forma) \")" ] }, { "cell_type": "markdown", "metadata": { "id": "2PXYQF0lPYDj" }, "source": [ "### Ejercicio 2\n", "\n", "Un recipiente rígido contiene 12 kg de agua a 90 °C. Si 8 kg del agua están\n", "en forma líquida y el resto como vapor, determine:\n", "\n", " a) el título de la mezcla\n", "\n", " a) la presión en el recipiente\n", " \n", " b) el volumen del recipiente." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 15, "status": "ok", "timestamp": 1683906693238, "user": { "displayName": "Adrián Navas Montilla", "userId": "05883326183094944917" }, "user_tz": -120 }, "id": "3oeAA7idPZOy", "outputId": "3dfbf91d-c30f-49a1-f00c-01ab88c6f06b" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "El título de la mezcla es: 0.3333333333333333\n", "La presión es: [70.17611904] kPa\n", "El volumen es: [9.445392] m^3\n", "El volumen es: [9.445392] m^3 (Otra forma) \n" ] } ], "source": [ "#Primero configuramos unidades\n", "pm.config['unit_matter'] = 'kg'\n", "pm.config['unit_pressure'] = 'kPa'\n", "\n", "#Ahora ponemos los datos del problema\n", "m=12 #uds en kg\n", "mf=8\n", "temp=273.15+90 # en K\n", "\n", "\n", "#Resolución\n", "\n", "#Apartado (a)\n", "\n", "mg = m - mf\n", "xt = mg/m #titulo mezcla\n", "\n", "print(\"El título de la mezcla es:\", xt)\n", "\n", "P=water.p(T=temp, x=xt) \n", "\n", "print(\"La presión es:\", P,\"kPa\")\n", "\n", "\n", "#Apartado (b)\n", "\n", "vf=1/water.d(T=temp, x=0.0) #volumen específico para x=0 (liquido saturado)\n", "vg=1/water.d(T=temp, x=1.0) #volumen específico para x=0 (liquido saturado)\n", "\n", "vprom=(1-xt)*vf+xt*vg\n", "\n", "vtot=vprom*m\n", "\n", "print(\"El volumen es:\", vtot,\"m^3\")\n", "\n", "#Se puede calcular directamente el volumen específico dado el título de la mezcla!!!\n", "\n", "vprom=1/water.d(T=temp, x=xt)\n", "\n", "vtot=vprom*m\n", "\n", "print(\"El volumen es:\", vtot,\"m^3 (Otra forma) \")\n" ] }, { "cell_type": "markdown", "metadata": { "id": "He1qzcycezt2" }, "source": [ "### Ejercicio 3\n", "\n", "El agua contenida en un dispositivo cilindro-pistón sufre dos procesos en serie desde un estado donde la presión inicial es 12 bar y la temperatura es 350°C:\n", "\n", "- *Proceso 1-2*: El agua se enfría mientras es comprimida a presión constante hasta el estado de vapor saturado a 12 bar.\n", "\n", "- *Proceso 2-3*: El agua se enfría a volumen constante hasta 150 °C.\n", "\n", "a) Represente los estados 1, 2 y 3 sobre los diagramas T-v y P-v.\n", "\n", "b) Determine el trabajo en kJ/kg, para el proceso completo. \n", "\n", "c) Determine la transferencia de calor, en kJ/kg, para el proceso completo.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 523 }, "executionInfo": { "elapsed": 1796, "status": "ok", "timestamp": 1683907317807, "user": { "displayName": "Adrián Navas Montilla", "userId": "05883326183094944917" }, "user_tz": -120 }, "id": "pS071Bri8oIt", "outputId": "b2c6f3b7-971f-44fb-928f-e9245f7cb04f" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x es: [0.41435093]\n", "w es: [-85.5480078] kJ/kg\n", "q es: [-1527.98446815] kJ/kg\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#Primero configuramos unidades\n", "pm.config['unit_matter'] = 'kg'\n", "pm.config['unit_pressure'] = 'kPa'\n", "\n", "Pres = np.linspace(100.0, 22063.0, num=100) #Pcrit=22063 kPa\n", "vline_f=1/water.d(p=Pres, x=0.0)\n", "vline_g=1/water.d(p=Pres, x=1.0)\n", "fig, (ax1,ax2) = plt.subplots(1,2,figsize=(12, 5))\n", "ax1.plot(vline_f,Pres,'-')\n", "ax1.plot(vline_g,Pres,'-')\n", "ax1.set_xlabel(\"v (m^3/kg)\") \n", "ax1.set_ylabel(\"P (kPa)\") \n", "ax1.set_xscale('log')\n", "ax1.set_yscale('log')\n", "\n", "Temp = np.linspace(350.0, 273.15+373, num=100) #Tcrit=373 K\n", "vline_f=1/water.d(T=Temp, x=0.0)\n", "vline_g=1/water.d(T=Temp, x=1.0)\n", "ax2.plot(vline_f,Temp,'-')\n", "ax2.plot(vline_g,Temp,'-')\n", "ax2.set_xlabel(\"v (m^3/kg)\") \n", "ax2.set_ylabel(\"T (K)\") \n", "ax2.set_xscale('log')\n", "\n", "P1=12*100 #kPa\n", "T1=350+273.15 #K\n", "v1=1/water.d(p=P1, T=T1)\n", "ax1.plot(v1,P1,'or')\n", "ax2.plot(v1,T1,'or')\n", "\n", "P2=P1\n", "v2=1/water.d(p=P2, x=1.0)\n", "T2=water.T(p=P2, x=1)\n", "\n", "P12 = np.linspace(P1, P2, num=20)\n", "T12 = np.linspace(T1, T2, num=20)\n", "v12 = 1/water.d(p=P1, T=T12)\n", "\n", "ax1.plot(v2,P2,'or')\n", "ax2.plot(v2,T2,'or')\n", "ax2.plot(v12,T12,'--r')\n", "ax1.plot(v12,P12,'--r')\n", "\n", "T3=150+273.15\n", "v3=v2\n", "P3=water.p(T=T3, x=1)\n", "ax1.plot(v3,P3,'or')\n", "ax2.plot(v3,T3,'or')\n", "\n", "P23 = np.linspace(P2, P3, num=20)\n", "T23 = np.linspace(T2, T3, num=20)\n", "v23 = np.linspace(v2, v3, num=20)\n", "ax2.plot(v23,T23,'--r')\n", "ax1.plot(v23,P23,'--r')\n", "\n", "vf3= 1/water.d(T=T3,x=0.0)\n", "vg3= 1/water.d(T=T3,x=1.0)\n", "\n", "x3= (v3-vf3)/(vg3-vf3)\n", "\n", "print(\"x es:\", x3)\n", "\n", "# Apartado b)\n", "\n", "w = P1*(v2-v1)\n", "\n", "print(\"w es:\", w, \" kJ/kg\")\n", "\n", "# Apartado c)\n", "\n", "#q=u3-u1+w\n", "\n", "u1 = water.e(T=T1,p=P1)\n", "\n", "uf3 = water.e(T=T3,x=0.0)\n", "ug3 = water.e(T=T3,x=1.0)\n", "u3 = (1-x3)*uf3+x3*ug3\n", "\n", "q = u3-u1 + w\n", "\n", "print(\"q es:\", q, \" kJ/kg\")\n", "\n", "\n" ] } ], "metadata": { "colab": { "provenance": [], "toc_visible": true }, "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.7.6" } }, "nbformat": 4, "nbformat_minor": 1 }