{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "*This notebook contains course material from [CBE30338](https://jckantor.github.io/CBE30338)\n", "by Jeffrey Kantor (jeff at nd.edu); the content is available [on Github](https://github.com/jckantor/CBE30338.git).\n", "The text is released under the [CC-BY-NC-ND-4.0 license](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode),\n", "and code is released under the [MIT license](https://opensource.org/licenses/MIT).*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [Gravity Drained Tank](http://nbviewer.jupyter.org/github/jckantor/CBE30338/blob/master/notebooks/02.02-Gravity-Drained-Tank.ipynb) | [Contents](toc.ipynb) | [Continuous Product Blending](http://nbviewer.jupyter.org/github/jckantor/CBE30338/blob/master/notebooks/02.04-Continuous-Product-Blending.ipynb) >

\"Open

\"Download\"" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Blending Tank Simulation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 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": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 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": { "slideshow": { "slide_type": "slide" } }, "source": [ "### 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 }, "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": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Step 2. Establish Parameter Values" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "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": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Step 3. Write a function to compute the RHS's of the Differential Equations" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": true }, "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": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Step 4. Set the Initial Conditions, Time Grid, and Integrate" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": true }, "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": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Step 5. Visualize the Solution" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "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": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 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": { "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": { "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 }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [Gravity Drained Tank](http://nbviewer.jupyter.org/github/jckantor/CBE30338/blob/master/notebooks/02.02-Gravity-Drained-Tank.ipynb) | [Contents](toc.ipynb) | [Continuous Product Blending](http://nbviewer.jupyter.org/github/jckantor/CBE30338/blob/master/notebooks/02.04-Continuous-Product-Blending.ipynb) >

\"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 }