{ "cells": [ { "cell_type": "markdown", "metadata": { "nbpages": { "level": 0, "link": "[](https://jckantor.github.io/CBE30338/02.03-Blending-Tank-Simulation.html)", "section": "" } }, "source": [ "\n", "*This notebook contains material from [CBE30338](https://jckantor.github.io/CBE30338);\n", "content is available [on Github](https://github.com/jckantor/CBE30338.git).*\n" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 0, "link": "[](https://jckantor.github.io/CBE30338/02.03-Blending-Tank-Simulation.html)", "section": "" } }, "source": [ "\n", "< [2.2 Gravity Drained Tank](https://jckantor.github.io/CBE30338/02.02-Gravity-Drained-Tank.html) | [Contents](toc.html) | [Tag Index](tag_index.html) | [2.4 Continuous Product Blending](https://jckantor.github.io/CBE30338/02.04-Continuous-Product-Blending.html) >

\"Open

\"Download\"" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 1, "link": "[2.3 Blending Tank Simulation](https://jckantor.github.io/CBE30338/02.03-Blending-Tank-Simulation.html#2.3-Blending-Tank-Simulation)", "section": "2.3 Blending Tank Simulation" }, "slideshow": { "slide_type": "slide" } }, "source": [ "# 2.3 Blending Tank Simulation" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 2, "link": "[2.3.1 Summary](https://jckantor.github.io/CBE30338/02.03-Blending-Tank-Simulation.html#2.3.1-Summary)", "section": "2.3.1 Summary" } }, "source": [ "## 2.3.1 Summary\n", "\n", "This example provides an introduction to the use of python for the simulation of a simple process modeled by a pair of ordinary differential equations. See SEMD textbook example 2.1 for more details on the process." ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 2, "link": "[2.3.2 Basic Simulation of the Blending Tank](https://jckantor.github.io/CBE30338/02.03-Blending-Tank-Simulation.html#2.3.2-Basic-Simulation-of-the-Blending-Tank)", "section": "2.3.2 Basic Simulation of the Blending Tank" }, "slideshow": { "slide_type": "slide" } }, "source": [ "## 2.3.2 Basic Simulation of the Blending Tank\n", "\n", "\\begin{align*}\n", "\\frac{dV}{dt} & = \\frac{1}{\\rho}(w_1 + w_2 - w)\\\\\n", "\\frac{dx}{dt} & = \\frac{1}{\\rho V}(w_1 (x_1 - x) + w_2 (x_2 - x))\n", "\\end{align*}" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[2.3.2.1 Step 1. Initialize Python Workspace](https://jckantor.github.io/CBE30338/02.03-Blending-Tank-Simulation.html#2.3.2.1-Step-1.-Initialize-Python-Workspace)", "section": "2.3.2.1 Step 1. Initialize Python Workspace" }, "slideshow": { "slide_type": "slide" } }, "source": [ "### 2.3.2.1 Step 1. Initialize Python Workspace\n", "\n", "Unlike Matlab, in Python it is always necessary to import the functions and libraries that you intend to use. In this case we import the complete `pylab` library, and the function `odeint` for integrating systems of differential equations from the `scipy` library. The command `%matplotlib inline` causes graphic commands to produce results directly within the notebook output cells." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true, "nbpages": { "level": 3, "link": "[2.3.2.1 Step 1. Initialize Python Workspace](https://jckantor.github.io/CBE30338/02.03-Blending-Tank-Simulation.html#2.3.2.1-Step-1.-Initialize-Python-Workspace)", "section": "2.3.2.1 Step 1. Initialize Python Workspace" } }, "outputs": [], "source": [ "%matplotlib inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from scipy.integrate import odeint\n" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[2.3.2.2 Step 2. Establish Parameter Values](https://jckantor.github.io/CBE30338/02.03-Blending-Tank-Simulation.html#2.3.2.2-Step-2.-Establish-Parameter-Values)", "section": "2.3.2.2 Step 2. Establish Parameter Values" }, "slideshow": { "slide_type": "slide" } }, "source": [ "### 2.3.2.2 Step 2. Establish Parameter Values" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true, "nbpages": { "level": 3, "link": "[2.3.2.2 Step 2. Establish Parameter Values](https://jckantor.github.io/CBE30338/02.03-Blending-Tank-Simulation.html#2.3.2.2-Step-2.-Establish-Parameter-Values)", "section": "2.3.2.2 Step 2. Establish Parameter Values" } }, "outputs": [], "source": [ "rho = 900.0 # density, kg/m**3\n", "\n", "w1 = 500.0 # stream 1, kg/min\n", "w2 = 200.0 # stream 2, kg/min\n", "w = 650.0 # set outflow equal to sum of inflows\n", "\n", "x1 = 0.4 # composition stream 1, mass fraction\n", "x2 = 0.75 # composition stream 2, mass fraction" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[2.3.2.3 Step 3. Write a function to compute the RHS's of the Differential Equations](https://jckantor.github.io/CBE30338/02.03-Blending-Tank-Simulation.html#2.3.2.3-Step-3.-Write-a-function-to-compute-the-RHS's-of-the-Differential-Equations)", "section": "2.3.2.3 Step 3. Write a function to compute the RHS's of the Differential Equations" }, "slideshow": { "slide_type": "slide" } }, "source": [ "### 2.3.2.3 Step 3. Write a function to compute the RHS's of the Differential Equations" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": true, "nbpages": { "level": 3, "link": "[2.3.2.3 Step 3. Write a function to compute the RHS's of the Differential Equations](https://jckantor.github.io/CBE30338/02.03-Blending-Tank-Simulation.html#2.3.2.3-Step-3.-Write-a-function-to-compute-the-RHS's-of-the-Differential-Equations)", "section": "2.3.2.3 Step 3. Write a function to compute the RHS's of the Differential Equations" } }, "outputs": [], "source": [ "def func(y,t):\n", " V,x = y\n", " dVdt = (w1 + w2 - w)/rho\n", " dxdt = (w1*(x1-x)+w2*(x2-x))/(rho*V)\n", " return [dVdt, dxdt]" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[2.3.2.4 Step 4. Set the Initial Conditions, Time Grid, and Integrate](https://jckantor.github.io/CBE30338/02.03-Blending-Tank-Simulation.html#2.3.2.4-Step-4.-Set-the-Initial-Conditions,-Time-Grid,-and-Integrate)", "section": "2.3.2.4 Step 4. Set the Initial Conditions, Time Grid, and Integrate" }, "slideshow": { "slide_type": "slide" } }, "source": [ "### 2.3.2.4 Step 4. Set the Initial Conditions, Time Grid, and Integrate" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": true, "nbpages": { "level": 3, "link": "[2.3.2.4 Step 4. Set the Initial Conditions, Time Grid, and Integrate](https://jckantor.github.io/CBE30338/02.03-Blending-Tank-Simulation.html#2.3.2.4-Step-4.-Set-the-Initial-Conditions,-Time-Grid,-and-Integrate)", "section": "2.3.2.4 Step 4. Set the Initial Conditions, Time Grid, and Integrate" } }, "outputs": [], "source": [ "V = 2.0 # initial volume, cubic meters\n", "x = 0.0 # initial composition, mass fraction\n", "\n", "t = np.linspace(0,10.0)\n", "y = odeint(func,[V,x],t)" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[2.3.2.5 Step 5. Visualize the Solution](https://jckantor.github.io/CBE30338/02.03-Blending-Tank-Simulation.html#2.3.2.5-Step-5.-Visualize-the-Solution)", "section": "2.3.2.5 Step 5. Visualize the Solution" }, "slideshow": { "slide_type": "slide" } }, "source": [ "### 2.3.2.5 Step 5. Visualize the Solution" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "nbpages": { "level": 3, "link": "[2.3.2.5 Step 5. Visualize the Solution](https://jckantor.github.io/CBE30338/02.03-Blending-Tank-Simulation.html#2.3.2.5-Step-5.-Visualize-the-Solution)", "section": "2.3.2.5 Step 5. Visualize the Solution" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(t,y)\n", "plt.xlabel('Time [min]')\n", "plt.ylabel('Volume, Composition')\n", "plt.legend(['Volume','Composition'])\n", "plt.ylim(0,3)\n", "plt.grid()\n", "#plt.savefig('BlendingTankStartUp.png')" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 2, "link": "[2.3.3 Steady State Analysis](https://jckantor.github.io/CBE30338/02.03-Blending-Tank-Simulation.html#2.3.3-Steady-State-Analysis)", "section": "2.3.3 Steady State Analysis" }, "slideshow": { "slide_type": "slide" } }, "source": [ "## 2.3.3 Steady State Analysis\n", "\n", "The blending tank is a system with two state variables (volume and composition). Suppose a mechanism is put in place to force the inflow to equal the outflow, that is\n", "\n", "$$w = w_1 + w_2$$\n", "\n", "The mechanism could involve the installation of an overflow weir, level controller, or some other device to force a balance between the outflow and total inflows. In this case,\n", "\n", "$$\\frac{dV}{dt} = 0$$\n", "\n", "which means volume is at *steady state*. " ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 2, "link": "[2.3.3 Steady State Analysis](https://jckantor.github.io/CBE30338/02.03-Blending-Tank-Simulation.html#2.3.3-Steady-State-Analysis)", "section": "2.3.3 Steady State Analysis" }, "slideshow": { "slide_type": "slide" } }, "source": [ " \n", "In that case there is just one remaining differential equation\n", "\n", "$$\\frac{dx}{dt} = \\frac{1}{\\rho V}( w_1(x_1 - x) + w_1(x_2 - x)) = 0$$\n", "\n", "Solving for the steady value of $x$,\n", "\n", "$$\\bar{x} = \\frac{w_1x_1 + w_2x_2}{w_1 + w_2}$$" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "nbpages": { "level": 2, "link": "[2.3.3 Steady State Analysis](https://jckantor.github.io/CBE30338/02.03-Blending-Tank-Simulation.html#2.3.3-Steady-State-Analysis)", "section": "2.3.3 Steady State Analysis" }, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Steady State Composition = 0.5\n" ] } ], "source": [ "w1 = 500.0 # stream 1, kg/min\n", "w2 = 200.0 # stream 2, kg/min\n", "\n", "x1 = 0.4 # composition stream 1, mass fraction\n", "x2 = 0.75 # composition stream 2, mass fraction\n", "\n", "x = (w1*x1 + w2*x2)/(w1 + w2)\n", "\n", "print('Steady State Composition =', x)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "nbpages": { "level": 2, "link": "[2.3.3 Steady State Analysis](https://jckantor.github.io/CBE30338/02.03-Blending-Tank-Simulation.html#2.3.3-Steady-State-Analysis)", "section": "2.3.3 Steady State Analysis" } }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 2, "link": "[2.3.3 Steady State Analysis](https://jckantor.github.io/CBE30338/02.03-Blending-Tank-Simulation.html#2.3.3-Steady-State-Analysis)", "section": "2.3.3 Steady State Analysis" } }, "source": [ "\n", "< [2.2 Gravity Drained Tank](https://jckantor.github.io/CBE30338/02.02-Gravity-Drained-Tank.html) | [Contents](toc.html) | [Tag Index](tag_index.html) | [2.4 Continuous Product Blending](https://jckantor.github.io/CBE30338/02.04-Continuous-Product-Blending.html) >

\"Open

\"Download\"" ] } ], "metadata": { "anaconda-cloud": {}, "celltoolbar": "Slideshow", "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.3" } }, "nbformat": 4, "nbformat_minor": 2 }