{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Step 2: Non-linear Convection\n", "\n", "I began this trek along the 12 steps of Navier stokes with the extremely simple 1-D linear convection equation shown below:\n", "\n", "$$ \\frac{\\partial u}{\\partial t} + c \\frac{\\partial u}{\\partial x} = 0 $$\n", "\n", "Next, we up the ante and present a new more complex model known as the 1D convection equation (notice the lack of the word linear) :\n", "\n", "$$ \\frac{\\partial u}{\\partial t} + u \\frac{\\partial u}{\\partial x} = 0 $$\n", "\n", "Now, instead of a constant factor `c` multiplying we have the solution `u` doing that instead. Thus this makes our convection equation behave nonlinearly. We shall follow the exact discretization steps outline in **Step 1** with the following result:\n", "\n", "$$\\frac{u_i^{n+1} - u^n_i}{\\Delta t} + u^n_i \\frac{u_{i}^{n} - u^n_{i-1}}{\\Delta t} = 0$$\n", "\n", "Solving for the same unknown value $u_i^{n+1}$:\n", "\n", "$$ u_i^{n+1} = u^n_i - u^n_i \\frac{\\Delta t}{\\Delta x}(u_i^n - u^n_{i-1}) $$\n", "\n", "The following step is a condensed version of what we did to set up initial conditions, variables and libraries and is taken directly from the previous notebook.\n", "\n", "## Libraries & Initial Conditions" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Adding inline command to make plots appear under comments\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import time, sys\n", "%matplotlib inline \n", "\n", "#Same initial conditions as in step 1\n", "grid_length = 10\n", "grid_points = 41\n", "dx = grid_length / (grid_points - 1) \n", "nt = 400\n", "dt = 0.025\n", "\n", "#Initiallizing the shape of the wave to the same one from step 1 and displaying it\n", "u = np.ones(grid_points)\n", "u[int(.5/ dx):int(1 / dx + 1)] = 2\n", "plt.plot(np.linspace(0,grid_length,grid_points), u);\n", "plt.ylim(1,2);\n", "plt.xlabel('x')\n", "plt.ylabel('u')\n", "plt.title('1D Non-Linear Convection t=0');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Applying the discretization\n", "\n", "Now we apply the discretization as outlined above and check out the final results." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "un = np.ones(grid_points)\n", "\n", "for n in range(nt): #Runs however many timesteps you set earlier\n", " un = u.copy() #copy the u array to not overwrite values\n", " for i in range(1,grid_points):\n", " u[i] = un[i] - un[i] * dt/dx * (un[i]-un[i-1]) " ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(np.linspace(0,grid_length,grid_points), u);\n", "plt.ylim(1,2);\n", "plt.xlabel('x')\n", "plt.ylabel('u')\n", "plt.title('1D Non-Linear Convection t=10');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Results\n", "\n", "Looks pretty unchanged, to have a better idea if it behaved the same way we will take a look at the animation.\n", "\n", "## Animating the wave moving" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Imports for animation and display within a jupyter notebook\n", "from matplotlib import animation, rc \n", "from IPython.display import HTML\n", "\n", "#Generating the figure that will contain the animation\n", "fig, ax = plt.subplots()\n", "ax.set_xlim(( 0, grid_length))\n", "ax.set_ylim((1, 2))\n", "line, = ax.plot([], [], lw=2)\n", "plt.xlabel('x')\n", "plt.ylabel('u')\n", "plt.title('1D Non-Linear Convection time evolution from t=0 to t=10');\n", "#Resetting the U wave back to initial conditions\n", "u = np.ones(grid_points)\n", "u[int(.5/ dx):int(1 / dx + 1)] = 2" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "#Initialization function for funcanimation\n", "def init():\n", " line.set_data([], [])\n", " return (line,)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "#Main animation function, each frame represents a time step in our calculation\n", "def animate(j):\n", " x = np.linspace(0, grid_length, grid_points)\n", " un = u.copy() #copy the u array to not overwrite values\n", " for i in range(1,grid_points):\n", " u[i] = un[i] - un[i] * dt/dx * (un[i]-un[i-1]) \n", " line.set_data(x, u)\n", " return (line,)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", " Once \n", " Loop \n", " Reflect \n", "
\n", "
\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "anim = animation.FuncAnimation(fig, animate, init_func=init,\n", " frames=nt, interval=20)\n", "HTML(anim.to_jshtml())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conclusion\n", "\n", "Yep, pretty similar behaviour. Only difference would be in the speed in which it changes shape in the beginning steps, but not much else is of notice.\n", "\n", " Next we will take a quick detour to talk about the CFL condition." ] } ], "metadata": { "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.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }