From 8f0423fcf38b2a020350953a2ec7d9b4a814054c Mon Sep 17 00:00:00 2001 From: pareal Date: Sun, 9 Feb 2020 23:36:37 +0000 Subject: [PATCH 1/7] Update 1_Properties.ipynb --- notebooks_en/1_Properties.ipynb | 39 ++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/notebooks_en/1_Properties.ipynb b/notebooks_en/1_Properties.ipynb index 69be08f..9c14c7f 100644 --- a/notebooks_en/1_Properties.ipynb +++ b/notebooks_en/1_Properties.ipynb @@ -75,7 +75,7 @@ "\n", "Examples of familiar properties are Temperature $T$, Pressure $P$, mass $m$, volume $V$, and density $\\rho$. Properties that scale in proportion to mass are called extensive. Those that do not change if mass is changed are called **intensive**.\n", "\n", - "One way to visualize the difference between extensive and intensive properties is to imaging a block of matter with uniform properties (every spatial point in the block looks the same). If the block is cut in half, which properties are also cut in half, and which ones remain the same? The following figure shows some examples:\n", + "One way to visualize the difference between extensive and intensive properties is to imagine a block of matter with uniform properties (every spatial point in the block looks the same). If the block is cut in half, which properties are also cut in half, and which ones remain the same? The following figure shows some examples:\n", "\n", "\n", "\n", @@ -229,14 +229,14 @@ "source": [ "m = ct.Methane()\n", "\n", - "# set the temperature of water to 99 C, 1 atmosphere\n", + "# set the temperature of methane to -162 C, 1 atmosphere\n", "T = -162 + 273.15\n", "m.TP = T, P_atm\n", "print('Temperature =',m.T,'K')\n", "print('Specific volume =',m.v,'m^3/kg')\n", "print('\\n') # print a blank line\n", "\n", - "# set the temperature of water to 101 C, 1 atmosphere\n", + "# set the temperature of methane to -161 C, 1 atmosphere\n", "T = -161 + 273.15\n", "m.TP = T, P_atm\n", "print('Temperature =',m.T,'K')\n", @@ -366,12 +366,17 @@ "\n", "w.PX = P_atm, 0 # set the quality x = 0 to find the point when boiling starts (at sea level)\n", "vf = w.v # the saturated liquid specific volume\n", + "print('vf=',vf,'m3/kg')\n", "\n", "w.PX = P_atm, 0.5 # set the quality x = 0.5 to find the point when boiling is halfway done\n", "vhalf = w.v # specific volume of the liquid-vapor mixture\n", + "print('vhalf=',vhalf,'m3/kg')\n", "\n", "w.PX = P_atm, 1 # set the quality x = 1 to find the point when boiling ends\n", "vg = w.v # the saturated vapor specific volume\n", + "print('vg=',vg,'m3/kg')\n", + "\n", + "print('vhalf/vg=',vhalf/vg)\n", "\n", "T_array = np.linspace(15,150) + 273.15 # temperature range: 15-150 deg. C, converted to K\n", "v_array = np.zeros_like(T_array) # create an array of 0s to store the specific volumes at each temperature\n", @@ -393,7 +398,18 @@ "\n", "The star on the right represents the completion of boiling at this pressure. This is called a **saturated vapor** state. Thermodynamic properties in this state are usually denoted with a subscript 'g' for gas. Hence, the specific volume at this state is denoted $v_g$.\n", "\n", - "Note that the middle star does not occur halfway between the other two stars. Remember that this middle star represents the point at which half the mass is liquid and half is vapor. The overall density of the liquid+vapor at this point is closer to the density of the pure vapor because the liquid does not take up nearly as much volume, so overall the density is very low. Hence, the specific volume, which is just the inverse of density, is close to its pure vapor value." + "Note that the middle star does not occur halfway between the other two stars. Remember that this middle star represents the point at which half the mass is liquid and half is vapor. Even thoug the specific volume vhalf is very close to half of vg (saturated vapour specific volume), the use of a logarythmic axis in a range that goes from 0.001 to 1.6 means 0.8 is plotted much closer to 1.6. If a linear axis is used, the point is indeed in the middle." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(v_array,T_array-273.15,'b',[vf, vhalf, vg],[Tsat-273.15, Tsat-273.15, Tsat-273.15],'r*')\n", + "plt.ylabel('Temperature [$^\\circ C$]')\n", + "plt.xlabel('Specific volume [$m^3/s$]');" ] }, { @@ -534,11 +550,11 @@ "\n", "Let's look at some examples of thermodynamic processes (converting a substance from one state to another), and how we can plot the path of a process on a T-v diagram.\n", "\n", - "**Example:** Water is stored inside a rigid tank with an initial temperature $T_1 = 500 ^\\circ C$ and pressure $P_1 = 2.0 MPa$. The water is cooled until $T_2 = 150 ^\\circ C$. Find the final pressure $P_2$ and plot this process on a T-v diagram.\n", + "**Example:** Water is stored inside a closed rigid tank with an initial temperature $T_1 = 500 ^\\circ C$ and pressure $P_1 = 2.0 MPa$. The water is cooled until $T_2 = 150 ^\\circ C$. Find the final pressure $P_2$ and plot this process on a T-v diagram.\n", "\n", "\n", "\n", - "Because the process takes place in a rigid tank, the mass and volume of water remain constant throughout the process. Therefore, the specific volume remains constant too. We can write this as $v_1 = v_2$. Let's summarize:\n", + "The tank is closed, therefore the mass of water remains constant. Also, because the process takes place in a rigid tank, the volume of water remain constant throughout the process. Therefore, the specific volume remains constant too. We can write this as $v_1 = v_2$. Let's summarize:\n", "\n", "**State 1:** ***Known:*** $T_1,P_1$, ***Unknown:*** $v_1$\n", "\n", @@ -669,7 +685,7 @@ "source": [ "\n", "\n", - "### Determining Phase from Therodynamic State\n", + "### Determining Phase from Thermodynamic State\n", "\n", "From plots like the T-v diagram shown above, it is easy to determine the phase of the substance (in this case water) at the beginning and end of the process. The way we do this is to look at where the points lie relative to the saturation curves.\n", "\n", @@ -917,6 +933,13 @@ "css_file = '../style/custom.css'\n", "HTML(open(css_file, \"r\").read())" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -935,7 +958,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.7.3" } }, "nbformat": 4, From a2c13220ea0f6fc0dc9553a06c06be39fec58b18 Mon Sep 17 00:00:00 2001 From: pareal Date: Mon, 10 Feb 2020 12:06:47 +0000 Subject: [PATCH 2/7] typos and change in description of what cantera does Cantera which uses the most accurate equations of state instead of Cantera, which provides exact property values (to within experimental error) --- notebooks_en/2_Ideal_Gases.ipynb | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/notebooks_en/2_Ideal_Gases.ipynb b/notebooks_en/2_Ideal_Gases.ipynb index 886947d..9eb869d 100644 --- a/notebooks_en/2_Ideal_Gases.ipynb +++ b/notebooks_en/2_Ideal_Gases.ipynb @@ -22,7 +22,7 @@ "\n", "In many situations, we want to avoid a phase change because of design constraints. For example, most pumps and turbines are designed for either a pure liquid or a pure vapor. A mixture of phases causes wear and tear on these components, leading to early failure.\n", "\n", - "In this lesson, we will look at two very common approximations to single-phase substances: incompressible liquids and ideal gases. Using Cantera, which provides exact property values (to within experimental error), we can calculate the accuracy of these approximations." + "In this lesson, we will look at two very common approximations to single-phase substances: incompressible liquids and ideal gases. Using Cantera, which uses the most accurate equations of state, we can estimate the accuracy of these approximations." ] }, { @@ -141,7 +141,7 @@ "outputs": [], "source": [ "rel_diff_T = np.mean((v_array[:,1]-v_array[:,0])/v_array[:,0]*100.0)\n", - "print('Relative difference across pressure range =',rel_diff_T,'%')" + "print('Relative difference across temperature range =',rel_diff_T,'%')" ] }, { @@ -611,7 +611,11 @@ "source": [ "Let's look at the same situation for carbon dioxide, which we've already seen behaves like an ideal gas under reasonable atmospheric conditions. But what do we mean by \"reasonable\"? Is there a quick way we can determine if the ideal gas law is accurate enough to use in design?\n", "\n", - "Examinging the previous figure, we can see that $Z \\to 1$ as we move up and to the right of the critical point (the red star). Near this point, the distinction between liquids and gases is blurred -- definitely not the behavior of an ideal gas!\n", + "Examining the previous figure, we can see that \n", + "\n", + "1. Under the vapor dome, the law is just wrong. This is due to the presence of the liquid phase.\n", + "\n", + "2. $Z \\to 1$ as we move up and to the right of the critical point (the red star). Near this point, the distinction between liquids and gases is blurred -- definitely not the behavior of an ideal gas!\n", "\n", "Let $T_c$ and $P_c$ be the temperature and pressure of the critical point, respectively. Then we can make the following observations:\n", "\n", @@ -624,7 +628,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's compare the cricial points of carbon dioxide and water:" + "Let's compare the critical points of carbon dioxide and water:" ] }, { @@ -726,6 +730,13 @@ "css_file = '../style/custom.css'\n", "HTML(open(css_file, \"r\").read())" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -744,7 +755,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.7.3" } }, "nbformat": 4, From 6e03e4ce97b7aae0c0f5ffc3fc8db41c7d677cf7 Mon Sep 17 00:00:00 2001 From: pareal Date: Mon, 10 Feb 2020 12:11:31 +0000 Subject: [PATCH 3/7] Revert "Update 1_Properties.ipynb" This reverts commit 8f0423fcf38b2a020350953a2ec7d9b4a814054c. --- notebooks_en/1_Properties.ipynb | 39 +++++++-------------------------- 1 file changed, 8 insertions(+), 31 deletions(-) diff --git a/notebooks_en/1_Properties.ipynb b/notebooks_en/1_Properties.ipynb index 9c14c7f..69be08f 100644 --- a/notebooks_en/1_Properties.ipynb +++ b/notebooks_en/1_Properties.ipynb @@ -75,7 +75,7 @@ "\n", "Examples of familiar properties are Temperature $T$, Pressure $P$, mass $m$, volume $V$, and density $\\rho$. Properties that scale in proportion to mass are called extensive. Those that do not change if mass is changed are called **intensive**.\n", "\n", - "One way to visualize the difference between extensive and intensive properties is to imagine a block of matter with uniform properties (every spatial point in the block looks the same). If the block is cut in half, which properties are also cut in half, and which ones remain the same? The following figure shows some examples:\n", + "One way to visualize the difference between extensive and intensive properties is to imaging a block of matter with uniform properties (every spatial point in the block looks the same). If the block is cut in half, which properties are also cut in half, and which ones remain the same? The following figure shows some examples:\n", "\n", "\n", "\n", @@ -229,14 +229,14 @@ "source": [ "m = ct.Methane()\n", "\n", - "# set the temperature of methane to -162 C, 1 atmosphere\n", + "# set the temperature of water to 99 C, 1 atmosphere\n", "T = -162 + 273.15\n", "m.TP = T, P_atm\n", "print('Temperature =',m.T,'K')\n", "print('Specific volume =',m.v,'m^3/kg')\n", "print('\\n') # print a blank line\n", "\n", - "# set the temperature of methane to -161 C, 1 atmosphere\n", + "# set the temperature of water to 101 C, 1 atmosphere\n", "T = -161 + 273.15\n", "m.TP = T, P_atm\n", "print('Temperature =',m.T,'K')\n", @@ -366,17 +366,12 @@ "\n", "w.PX = P_atm, 0 # set the quality x = 0 to find the point when boiling starts (at sea level)\n", "vf = w.v # the saturated liquid specific volume\n", - "print('vf=',vf,'m3/kg')\n", "\n", "w.PX = P_atm, 0.5 # set the quality x = 0.5 to find the point when boiling is halfway done\n", "vhalf = w.v # specific volume of the liquid-vapor mixture\n", - "print('vhalf=',vhalf,'m3/kg')\n", "\n", "w.PX = P_atm, 1 # set the quality x = 1 to find the point when boiling ends\n", "vg = w.v # the saturated vapor specific volume\n", - "print('vg=',vg,'m3/kg')\n", - "\n", - "print('vhalf/vg=',vhalf/vg)\n", "\n", "T_array = np.linspace(15,150) + 273.15 # temperature range: 15-150 deg. C, converted to K\n", "v_array = np.zeros_like(T_array) # create an array of 0s to store the specific volumes at each temperature\n", @@ -398,18 +393,7 @@ "\n", "The star on the right represents the completion of boiling at this pressure. This is called a **saturated vapor** state. Thermodynamic properties in this state are usually denoted with a subscript 'g' for gas. Hence, the specific volume at this state is denoted $v_g$.\n", "\n", - "Note that the middle star does not occur halfway between the other two stars. Remember that this middle star represents the point at which half the mass is liquid and half is vapor. Even thoug the specific volume vhalf is very close to half of vg (saturated vapour specific volume), the use of a logarythmic axis in a range that goes from 0.001 to 1.6 means 0.8 is plotted much closer to 1.6. If a linear axis is used, the point is indeed in the middle." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plt.plot(v_array,T_array-273.15,'b',[vf, vhalf, vg],[Tsat-273.15, Tsat-273.15, Tsat-273.15],'r*')\n", - "plt.ylabel('Temperature [$^\\circ C$]')\n", - "plt.xlabel('Specific volume [$m^3/s$]');" + "Note that the middle star does not occur halfway between the other two stars. Remember that this middle star represents the point at which half the mass is liquid and half is vapor. The overall density of the liquid+vapor at this point is closer to the density of the pure vapor because the liquid does not take up nearly as much volume, so overall the density is very low. Hence, the specific volume, which is just the inverse of density, is close to its pure vapor value." ] }, { @@ -550,11 +534,11 @@ "\n", "Let's look at some examples of thermodynamic processes (converting a substance from one state to another), and how we can plot the path of a process on a T-v diagram.\n", "\n", - "**Example:** Water is stored inside a closed rigid tank with an initial temperature $T_1 = 500 ^\\circ C$ and pressure $P_1 = 2.0 MPa$. The water is cooled until $T_2 = 150 ^\\circ C$. Find the final pressure $P_2$ and plot this process on a T-v diagram.\n", + "**Example:** Water is stored inside a rigid tank with an initial temperature $T_1 = 500 ^\\circ C$ and pressure $P_1 = 2.0 MPa$. The water is cooled until $T_2 = 150 ^\\circ C$. Find the final pressure $P_2$ and plot this process on a T-v diagram.\n", "\n", "\n", "\n", - "The tank is closed, therefore the mass of water remains constant. Also, because the process takes place in a rigid tank, the volume of water remain constant throughout the process. Therefore, the specific volume remains constant too. We can write this as $v_1 = v_2$. Let's summarize:\n", + "Because the process takes place in a rigid tank, the mass and volume of water remain constant throughout the process. Therefore, the specific volume remains constant too. We can write this as $v_1 = v_2$. Let's summarize:\n", "\n", "**State 1:** ***Known:*** $T_1,P_1$, ***Unknown:*** $v_1$\n", "\n", @@ -685,7 +669,7 @@ "source": [ "\n", "\n", - "### Determining Phase from Thermodynamic State\n", + "### Determining Phase from Therodynamic State\n", "\n", "From plots like the T-v diagram shown above, it is easy to determine the phase of the substance (in this case water) at the beginning and end of the process. The way we do this is to look at where the points lie relative to the saturation curves.\n", "\n", @@ -933,13 +917,6 @@ "css_file = '../style/custom.css'\n", "HTML(open(css_file, \"r\").read())" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { @@ -958,7 +935,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.6.5" } }, "nbformat": 4, From ab682c93b304e069bda6a204a83415142cd6342a Mon Sep 17 00:00:00 2001 From: pareal Date: Mon, 10 Feb 2020 14:11:47 +0000 Subject: [PATCH 4/7] Update 3_Heat_Transfer.ipynb Added some explanatory text in heat transfer analysis using numerical quadrature. --- notebooks_en/3_Heat_Transfer.ipynb | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/notebooks_en/3_Heat_Transfer.ipynb b/notebooks_en/3_Heat_Transfer.ipynb index 2f114ef..2bb6f1f 100644 --- a/notebooks_en/3_Heat_Transfer.ipynb +++ b/notebooks_en/3_Heat_Transfer.ipynb @@ -301,6 +301,13 @@ "import scipy.integrate as integrate" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next we write c$_v$ as a function of T using cantera:" + ] + }, { "cell_type": "code", "execution_count": null, @@ -315,6 +322,13 @@ " return state.cv # return cv(T)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And we can now solve the integral approximately using numerical quadrature:" + ] + }, { "cell_type": "code", "execution_count": null, @@ -560,6 +574,15 @@ "css_file = '../style/custom.css'\n", "HTML(open(css_file, \"r\").read())" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + " " + ] } ], "metadata": { @@ -578,7 +601,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.7.3" } }, "nbformat": 4, From 35dff7932aba1d7e1605d87ea13a72a87faf897e Mon Sep 17 00:00:00 2001 From: pareal Date: Mon, 10 Feb 2020 14:37:19 +0000 Subject: [PATCH 5/7] Update 4_Work.ipynb Corrected some typos. Added "assuming negligible piston mass" to the piston analysis For an ideal gas, $c_v(T,P) = c_v(T)$ i.e. cv depends only on temperature. --- notebooks_en/4_Work.ipynb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/notebooks_en/4_Work.ipynb b/notebooks_en/4_Work.ipynb index 6cb1327..c8d2f73 100644 --- a/notebooks_en/4_Work.ipynb +++ b/notebooks_en/4_Work.ipynb @@ -109,7 +109,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Computing the work done during a process almost always involves evaluating an integral, except in the simplest cases. In this example, we can evaulate the integral using a formula to get an exact answer, so it provides an opportunity to test a numerical method for doing the same. The following figure shows the integral we need to compute $\\int\\limits_{x_1}^{x_2} kxdx$, and a numerical approximation of it:\n", + "Computing the work done during a process almost always involves evaluating an integral, except in the simplest cases. In this example, we can evaluate the integral using a formula to get an exact answer, so it provides an opportunity to test a numerical method for doing the same. The following figure shows the integral we need to compute $\\int\\limits_{x_1}^{x_2} kxdx$, and a numerical approximation of it:\n", "\n", "\n", "\n", @@ -519,7 +519,7 @@ "\n", "\n", "\n", - "We can see quickly that the pressure inside the cylinder must be equal to the pressure outside at all times by considering a free body diagram of the piston:\n", + "We can see quickly that, assuming negligible piston mass, the pressure inside the cylinder must be equal to the pressure outside at all times by considering a free body diagram of the piston:\n", "\n", "\n", "\n", @@ -535,7 +535,7 @@ "\n", "where, as usual, we define $Q > 0$ to be heat transferred *to* the system and $W > 0$ to be work done *by* the system (on the surroundings -- in this case, on the piston).\n", "\n", - "For heat conduction, we make the usual assumption that he rate at which heat transfered can be well approximated by [Fourier's law](https://en.wikipedia.org/wiki/Thermal_conduction#Fourier's_law):\n", + "For heat conduction, we make the usual assumption that the rate at which heat is transfered can be well approximated by [Fourier's law](https://en.wikipedia.org/wiki/Thermal_conduction#Fourier's_law):\n", "\n", "$\\dfrac{dQ}{dt} = k(T_{room}-T_{sys})$\n", "\n", @@ -547,7 +547,7 @@ "\n", "where \\\\(m\\\\) is the mass of the air, and \\\\(c_v\\\\) is its specific heat at constant volume.\n", "\n", - "If we assume air is an ideal gas, then mathematically it can be shown that $c_v(T,P) \\approx c_v(T)$, just like incompressible liquids and solids. Thus, we can convert the partial derivative to an ordinary derivative:\n", + "If we assume air is an ideal gas, then mathematically it can be shown that $c_v(T,P) = c_v(T)$, just like incompressible liquids and solids. Thus, we can convert the partial derivative to an ordinary derivative:\n", "\n", "$\\dfrac{dU_{sys}}{dT_{sys}} = m c_v$\n", "\n", @@ -774,7 +774,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.7.3" } }, "nbformat": 4, From 738a7f5b7e1ea8ad294f2f2dc935b18189df49bb Mon Sep 17 00:00:00 2001 From: pareal Date: Mon, 10 Feb 2020 14:57:35 +0000 Subject: [PATCH 6/7] Update 5_Energy_Balance_Closed_Systems.ipynb Just added "negleting piston mass" to forces balance on piston analysis. --- notebooks_en/5_Energy_Balance_Closed_Systems.ipynb | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/notebooks_en/5_Energy_Balance_Closed_Systems.ipynb b/notebooks_en/5_Energy_Balance_Closed_Systems.ipynb index 5a4dd04..89b9206 100644 --- a/notebooks_en/5_Energy_Balance_Closed_Systems.ipynb +++ b/notebooks_en/5_Energy_Balance_Closed_Systems.ipynb @@ -597,7 +597,7 @@ "\n", "$\\Delta E_{sys} = \\Delta U = m \\Delta u = m(u_2-u_1)$\n", "\n", - "To determine the work the gas does on the piston, let's look at the free body diagram of the piston:\n", + "To determine the work the gas does on the piston, let's look at the free body diagram of the piston. Neglecting piston mass:\n", "\n", "\n", "\n", @@ -841,6 +841,13 @@ "css_file = '../style/custom.css'\n", "HTML(open(css_file, \"r\").read())" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -859,7 +866,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.7.3" } }, "nbformat": 4, From 1370e3e8baa5ba1f6fa95f3fe952ce1ad2e57406 Mon Sep 17 00:00:00 2001 From: pareal Date: Sun, 5 Jul 2020 20:02:18 +0100 Subject: [PATCH 7/7] Update 1_Properties.ipynb --- notebooks_en/1_Properties.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/notebooks_en/1_Properties.ipynb b/notebooks_en/1_Properties.ipynb index 69be08f..4e4a71e 100644 --- a/notebooks_en/1_Properties.ipynb +++ b/notebooks_en/1_Properties.ipynb @@ -182,7 +182,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Water boils at $100 ^\\circ C$ under standard atmospheric pressure. As it transitions into the gas phase, its specific volume increases dramatically from what it was as a solid. Let's verify this as we look at temperatures slightly below and above the boiling point." + "Water boils at $100 ^\\circ C$ under standard atmospheric pressure. As it transitions into the gas phase, its specific volume increases dramatically from what it was as a liquid. Let's verify this as we look at temperatures slightly below and above the boiling point." ] }, { @@ -935,7 +935,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.7.6" } }, "nbformat": 4,