{ "metadata": { "name": "", "signature": "sha256:7d2f465339e6a8ab266c2f60b3182f1a0460a4f5ff9ac3128783601a9ebc9cd5" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Nejjednodu\u0161\u0161\u00ed evolu\u010dn\u00ed PDR (?) -- convekce\n", "==\n", "\n", "Transport veli\u010diny $u$ pod\u00e9l toku o rychlosti $v$ je pops\u00e1n rovnic\u00ed\n", "$$\\frac{\\partial u}{\\partial t} + c\\frac{\\partial u}{\\partial x} = 0$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "from pylab import *\n", "from numpy import *" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 40 }, { "cell_type": "code", "collapsed": false, "input": [ "#dimensions of the computational domain:\n", "maxx = 10.\n", "maxt = 20.\n", "\n", "#flow velocity\n", "v = 0.5" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 41 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We discretize the simulation domain:\n", "$$t_n = t_0 + n\\Delta t$$\n", "$$x_i = x_0 + i\\Delta x$$\n", "and seek for the numerical approximation $U^n_i$ to the actual solution $U(t_n, x_i)$ on the grid points" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#discretization parameters\n", "nx = 100 # number of unknown grid points in spatial direction\n", "CFL = 1.0 # Courant constant v*dt/dx\n", "\n", "def wave_init(maxx, maxt, v, nx, CFL):\n", " #choose time step according to CFL condition\n", " dx = maxx/(nx+1)\n", " dt = CFL*dx/v\n", " nt = int(maxt/dt)+1\n", " \n", " #define array for storing the solution\n", " U = zeros((nt, nx+2))\n", " \n", " x = arange(nx+2)*dx\n", " t = arange(nt)*dt\n", " return U, dx, dt, x, t" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 42 }, { "cell_type": "markdown", "metadata": {}, "source": [ "To obtain an explicit scheme for propagating the solution in time, we may replace the derivatives with forward differences in time and central differences in space (FTCS)\n", "$$\\frac{U^{n+1}_i-U^n_i}{\\Delta t} + c\\frac{U^n_{i+1}-U^n_{i-1}}{2\\Delta x}=0.$$\n", "This leads to a simple explicit formula for $U^{n+1}_i$\n", "$$U^{n+1}_i = U^n_i - \\frac{c\\Delta t}{2\\Delta x}(U^n_{i+1}-U^n_{i-1})$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def convection_solve(U, dx, dt, nx, nt):\n", " xint = arange(1, nx+1)\n", " for it in range(0,nt-1):\n", " U[it+1,xint] = U[it,xint] - 0.5*v*dt/dx*(U[it,xint+1] - U[it, xint-1])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 43 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's try to propagate a square initial condition" ] }, { "cell_type": "code", "collapsed": false, "input": [ "U, dx, dt, x, t = wave_init(maxx, maxt, v, nx, CFL=1)\n", "U[0,:] = 0.\n", "U[0, (xmaxx*0.2)] = 1.\n", "#U[0,:] = sin(x*5)\n", "plot(U[0,:])\n", "ylim(0,1.1)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 44, "text": [ "(0, 1.1)" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAXgAAAD7CAYAAABgzo9kAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEgNJREFUeJzt3W+MZXddx/H3Z7ctESvUpglqu6YEimkbqFQtFVGuQmRp\nhBpJKBUIFJE+cBF9IKVIZDdGAwEikAqutTSEBPoACC5JS6nSG4kiUGxLobuwK1R3W1v+IxIIO92v\nD+5tuQy7c2dnf7Pzu2ffr2Sz9/yZM79fd/KZT8+955xUFZKk4dm00QOQJK0PA16SBsqAl6SBMuAl\naaAMeEkaKANekgbqpOP1jZL4eUxJWoOqylq+7rg2+Koa7J/Xv/71Gz4G5+fcnN/w/hwLT9FI0kAZ\n8JI0UAZ8I6PRaKOHsK6GPL8hzw2c34ksx3qOZ9XfKKnj9b0kaSiSUIvwJqsk6fgx4CVpoAx4SRoo\nA16SBsqAl6SBMuAlaaAMeEkaKANekgbKgJekgZob8EneleSBJHetsM/bk+xNcmeSJ7cdoiRpLVbT\n4K8Hth5pY5JLgMdX1TnAK4B3NhqbJOkYzA34qvo48M0Vdnku8O7pvp8ETkvymDbDkyStVYtz8GcC\n+2eWDwBnNTiuJOkYtHpk3/I7nZ2wt4183evg/vs3ehRtnXoqvOUtsHnzRo9E0tFoEfD3Altmls+a\nrvsx27dvf/j1aDQa5H2c3/QmeNvb4KTj9rTb9ffKV8KOHfDoR2/0SKThG4/HjMfjJsda1f3gk5wN\nfLiqnniYbZcA26rqkiQXA2+tqosPs98JcT/4k06C739/WAF/+umwb9/kb0nH17HcD35uDCV5H/B0\n4Iwk+4HXAycDVNXOqroxySVJ9gHfBa5Yy0CGoAoefHB4pzJOOgmWljZ6FJKO1tyAr6rLV7HPtjbD\nWWyHDsGmTZA1/a7t1+bNk19ckhaLV7I2tLQ0rFMzD7HBS4vJgG9oiKdnwAYvLSoDviEbvKSeGPAN\nLS0Nt8Eb8NLiMeAbevDB4TZ4T9FIi8eAb8gGL6knBnxDNnhJPTHgG7LBS+qJAd+QDV5STwz4hmzw\nknpiwDdkg5fUEwO+IRu8pJ4Y8A3Z4CX1xIBvyAYvqScGfEM2eEk9MeAbssFL6okB35ANXlJPDPiG\nvF2wpJ4Y8A35wA9JPTHgG7LBS+qJAd+QDV5STwz4hmzwknpiwDdkg5fUEwO+IRu8pJ4Y8A3Z4CX1\nxIBvyAYvqScGfEM2eEk9MeAbssFL6okB35ANXlJPDPiGbPCSemLAN+TtgiX1xIBvyNsFS+rJ3IBP\nsjXJniR7k1x1mO1nJPlIkjuSfC7JS9dlpAvABi+pJysGfJLNwDXAVuA84PIk5y7bbRtwe1X9IjAC\n3pJkgD12Phu8pJ7Ma/AXAfuq6p6qOgjcAFy6bJ//AR41ff0o4OtVdUL2PRu8pJ7M65tnAvtnlg8A\nT1m2z7XAx5LcB/wU8Px2w1ssNnhJPZkXR7WKY7wWuKOqRkkeB9yS5IKq+s7yHbdv3/7w69FoxGg0\nOoqh9m9pCR7xiI0eRXs2eOn4GY/HjMfjJseaF/D3AltmlrcwafGzngr8FUBV/WeSLwO/ANy2/GCz\nAT9ENnhJx2p5+d2xY8eajzXvHPxtwDlJzk5yCnAZsGvZPnuAZwIkeQyTcP/Smke0wDwHL6knK/bN\nqlpKsg24GdgMXFdVu5NcOd2+E/hr4PokdzL5hfHqqvrGOo+7SzZ4ST2ZG0dVdRNw07J1O2defw14\nTvuhLR4bvKSeeCVrQzZ4ST0x4BuywUvqiQHfkA1eUk8M+IZs8JJ6YsA3ZIOX1BMDviEf+CGpJwZ8\nQz6yT1JPDPiGbPCSemLAN2SDl9QTA74hG7yknhjwDdngJfXEgG/IBi+pJwZ8QzZ4ST0x4BuywUvq\niQHfkA1eUk8M+IZs8JJ6YsA3ZIOX1BMDviEbvKSeGPANebtgST0x4BvydsGSemLAN2SDl9QTA74h\nG7yknhjwDdngJfXEgG/IBi+pJwZ8Q0Nt8Js2QRUcOrTRI5F0NAz4hoba4MEWLy0iA76hoTZ48Dy8\ntIgM+IZs8JJ6YsA3ZIOX1BMDviEbvKSeGPCNPPQpk00D/S9qg5cWz0Dj6Ph76FbByUaPZH3Y4KXF\nMzfgk2xNsifJ3iRXHWGfUZLbk3wuybj5KBfAkM+/gw1eWkQrnjFOshm4BngmcC/w6SS7qmr3zD6n\nAX8LPKuqDiQ5Yz0H3Kshn38HG7y0iOY1+IuAfVV1T1UdBG4ALl22z+8DH6iqAwBV9bX2w+zfUB/2\n8RAf+iEtnnkBfyawf2b5wHTdrHOA05PcmuS2JC9uOcBFMdTH9T3Ex/ZJi2de56xVHONk4ELgGcAj\ngU8k+feq2rt8x+3btz/8ejQaMRqNVj3Q3tngJbUwHo8Zj8dNjjUvku4Ftswsb2HS4mftB75WVd8D\nvpfkX4ALgBUDfmhs8JJaWF5+d+zYseZjzTtFcxtwTpKzk5wCXAbsWrbPPwJPS7I5ySOBpwB3r3lE\nC8oGL6k3K0ZSVS0l2QbcDGwGrquq3UmunG7fWVV7knwE+CxwCLi2qk64gLfBS+rN3M5ZVTcBNy1b\nt3PZ8puBN7cd2mKxwUvqjVeyNmKDl9QbA74RG7yk3hjwjdjgJfXGgG/EBi+pNwZ8IzZ4Sb0x4Bux\nwUvqjQHfiLcLltQbA74RbxcsqTcGfCM2eEm9MeAbscFL6o0B34gNXlJvDPhGbPCSemPAN2KDl9Qb\nA74RG7yk3hjwjdjgJfXGgG/EBi+pNwZ8IzZ4Sb0x4BuxwUvqjQHfiA1eUm8M+EZs8JJ6Y8A3YoOX\n1BsDvhEbvKTeGPCN+MAPSb0x4BvxkX2SemPAN2KDl9QbA74RG7yk3hjwjdjgJfXGgG/EBi+pNwZ8\nIzZ4Sb0x4BuxwUvqjQHfiA1eUm/mBnySrUn2JNmb5KoV9vuVJEtJfq/tEBeDDV5Sb1YM+CSbgWuA\nrcB5wOVJzj3Cfm8EPgJkHcbZPRu8pN7Ma/AXAfuq6p6qOgjcAFx6mP1eCbwf+Grj8S0MG7yk3swL\n+DOB/TPLB6brHpbkTCah/87pqmo2ugVig5fUm3kBv5qwfivwmqoqJqdnTthTNENv8Aa8tFjmdc57\ngS0zy1uYtPhZvwTckATgDODZSQ5W1a7lB9u+ffvDr0ejEaPR6OhH3ClvFyyphfF4zHg8bnKsTIr3\nETYmJwFfAJ4B3Ad8Cri8qnYfYf/rgQ9X1QcPs61W+l6L7vnPh+c9Dy67bKNHsj5uvRV27IBGP3eS\nVikJVbWmMyMrds6qWkqyDbgZ2AxcV1W7k1w53b5zLd90iGzwknozN5Kq6ibgpmXrDhvsVXVFo3Et\nHM/BS+qNV7I2YoOX1BsDvhEbvKTeGPCN2OAl9caAb8QGL6k3BnwjNnhJvTHgG7HBS+qNAd+IDV5S\nbwz4RmzwknpjwDdig5fUGwO+EW8XLKk3BnwjPvBDUm8M+EZs8JJ6Y8A3YoOX1BsDvhEbvKTeGPCN\n2OAl9caAb2ToDd7PwUuLx4BvZOgNftMmSODQoY0eiaTVMuAbGXqDB8/DS4vGgG9k6A0ePA8vLRoD\nvhEbvKTeGPCN2OAl9caAb8QGL6k3BnwDhw5B1eSTJkNmg5cWy8Aj6fgY+q2CH2KDlxaLAd/A0B/2\n8RAvdpIWiwHfwInU4D1FIy0OA74BG7ykHhnwDdjgJfXIgG/ABi+pRwZ8AzZ4ST0y4BuwwUvqkQHf\ngA1eUo9WFfBJtibZk2RvkqsOs/2FSe5M8tkk/5rkSe2H2i8bvKQezQ34JJuBa4CtwHnA5UnOXbbb\nl4DfqKonAX8J/H3rgfbMBi+pR6tp8BcB+6rqnqo6CNwAXDq7Q1V9oqq+PV38JHBW22H2zQYvqUer\nCfgzgf0zywem647kD4Abj2VQi8YGL6lHq4mlWu3Bkvwm8DLg1w63ffv27Q+/Ho1GjEaj1R66azZ4\nSa2Mx2PG43GTY60m4O8Ftswsb2HS4n/E9I3Va4GtVfXNwx1oNuCHxAYvqZXl5XfHjh1rPtZqTtHc\nBpyT5OwkpwCXAbtmd0jy88AHgRdV1b41j2ZBnQgP+wBvFywtmrmxVFVLSbYBNwObgeuqaneSK6fb\ndwJ/Afw08M4kAAer6qL1G3ZfToTH9YEP/JAWzap6Z1XdBNy0bN3OmdcvB17edmiLwwYvqUdeydqA\nDV5Sjwz4BmzwknpkwDdgg5fUIwO+ARu8pB4Z8A3Y4CX1yIBvwAYvqUcGfAM2eEk9MuAbsMFL6pEB\n34ANXlKPDPgGbPCSemTAN+DtgiX1yIBvwNsFS+qRAd+ADV5Sjwz4BmzwknpkwDdgg5fUIwO+ARu8\npB4Z8A3Y4CX1yIBvwAYvqUcGfAM2eEk9MuAbsMFL6pEB34ANXlKPDPgGbPCSemTAN2CDl9QjA74B\nG7ykHhnwDdjgJfXIgG/ABi+pRwZ8Az7wQ1KPDPgGfGSfpB4Z8A3Y4CX1yIBvwAYvqUcGfAM2eEk9\nmhvwSbYm2ZNkb5KrjrDP26fb70zy5PbD7JsNXlKPVgz4JJuBa4CtwHnA5UnOXbbPJcDjq+oc4BXA\nO9dprN1aWoK77x5v9DDW1Xg8HmyDH4/HGz2EdeX8TlzzGvxFwL6quqeqDgI3AJcu2+e5wLsBquqT\nwGlJHtN8pB178EH4/OfHGz2MdTUejwfb4IceEM7vxDUv4M8E9s8sH5ium7fPWcc+tMWxtASbToB3\nM4ba4KWhmvfWYK3yOFnN1z3nOas82oK54w446wT4lXbyyfDlLw/v3/ELX4DPfGajR7F+TqT5veEN\ncP75GzuenqTqyBme5GJge1VtnS5fDRyqqjfO7PN3wLiqbpgu7wGeXlUPLDvWan9ZSJJmVNXyEr0q\n8xr8bcA5Sc4G7gMuAy5fts8uYBtww/QXwreWh/uxDFCStDYrBnxVLSXZBtwMbAauq6rdSa6cbt9Z\nVTcmuSTJPuC7wBXrPmpJ0lwrnqKRJC2udf/sx2oulFokSbYkuTXJ55N8LskfT9efnuSWJF9M8tEk\np230WI9Fks1Jbk/y4enyYOaX5LQk70+yO8ndSZ4ylPkluXr6s3lXkvcmecQizy3Ju5I8kOSumXVH\nnM90/nunmfPbGzPq1TvC/N40/dm8M8kHkzx6ZttRzW9dA341F0otoIPAn1bV+cDFwB9N5/Qa4Jaq\negLwz9PlRfYq4G5++ImoIc3vbcCNVXUu8CRgDwOY3/S9sj8ELqyqJzI5rfoCFntu1zPJj1mHnU+S\n85i8T3je9GvekaT3DzAfbn4fBc6vqguALwJXw9rmt96TX82FUgulqu6vqjumr/8P2M3kWoCHL/ia\n/v27GzPCY5fkLOAS4B/44UdgBzG/aRv69ap6F0zeZ6qqbzOM+f0vkwLyyCQnAY9k8uGIhZ1bVX0c\n+Oay1Ueaz6XA+6rqYFXdA+xjkkHdOtz8quqWqjo0XfwkP7yu6Kjnt94Bv5oLpRbWtDE9mck/wmNm\nPj30ALDIV/P+DfBnwKGZdUOZ32OBrya5Psl/JLk2yU8ygPlV1TeAtwD/zSTYv1VVtzCAuS1zpPn8\nHJOMecgQ8uZlwI3T10c9v/UO+MG+g5vkVOADwKuq6juz22ryzvVCzj3J7wBfqarb+fEL2IDFnh+T\nT45dCLyjqi5k8smvHzllsajzS/I44E+As5mEwalJXjS7z6LO7UhWMZ+FnWuSPwd+UFXvXWG3Fee3\n3gF/L7BlZnkLP/obaCElOZlJuL+nqj40Xf1Akp+Zbv9Z4CsbNb5j9FTguUm+DLwP+K0k72E48zsA\nHKiqT0+X388k8O8fwPx+Gfi3qvp6VS0BHwR+lWHMbdaRfhaX581Z03ULJ8lLmZwmfeHM6qOe33oH\n/MMXSiU5hckbBLvW+XuuqyQBrgPurqq3zmzaBbxk+volwIeWf+0iqKrXVtWWqnoskzfoPlZVL2Y4\n87sf2J/kCdNVzwQ+D3yYxZ/fHuDiJD8x/Tl9JpM3yocwt1lH+lncBbwgySlJHgucA3xqA8Z3TJJs\nZXKK9NKq+v7MpqOfX1Wt6x/g2cAXmLwhcPV6f7/jMJ+nMTk3fQdw+/TPVuB04J+YvOv9UeC0jR5r\ng7k+Hdg1fT2Y+QEXAJ8G7mTSch89lPkBr2byC+suJm9AnrzIc2Pyf5H3AT9g8n7eFSvNB3jtNGv2\nAM/a6PGvYX4vA/YC/zWTL+9Y6/y80EmSBqr3z4hKktbIgJekgTLgJWmgDHhJGigDXpIGyoCXpIEy\n4CVpoAx4SRqo/wexmrTFvAjGMwAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 44 }, { "cell_type": "code", "collapsed": false, "input": [ "convection_solve(U, dx, dt, nx, len(t))\n", "pcolormesh(U, rasterized=True, vmin=-2, vmax=2)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 45, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 45 }, { "cell_type": "markdown", "metadata": {}, "source": [ ":-( Does it help if we choose smaller time step?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "U, dx, dt, x, t = wave_init(maxx, maxt, v, nx, CFL=.1)\n", "U[0,:] = 0.\n", "U[0, (xmaxx*0.2)] = 1.\n", "convection_solve(U, dx, dt, nx, len(t))\n", "pcolormesh(U, rasterized=True, vmin=-2, vmax=2)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 46, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nWmml7cP2/wH8xLkEOS1u7AAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 46 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Not really, this solver fails to reproduce the expected solution. See Von Neumann stability analysis or matrix method...\n", "\n", "The Lax(-Friedrichs) method stabilizes the solution by replacing $U^n_i$ with centered approximation $\\frac{1}{2}(U^n_{i-1}+U^n_{i+1})$:\n", "$$U^{n+1}_i = \\frac{1}{2}(U^n_{i-1}+U^n_{i+1}) - \\frac{c\\Delta t}{2\\Delta x}(U^n_{i+1}-U^n_{i-1})$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def convection_solve_Lax(U, dx, dt, nx, nt):\n", " xint = arange(1, nx+1)\n", " for it in range(0,nt-1):\n", " U[it+1,xint] = 0.5*(U[it,xint+1]+U[it,xint-1]) - 0.5*v*dt/dx*(U[it,xint+1] - U[it, xint-1])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 47 }, { "cell_type": "code", "collapsed": false, "input": [ "U, dx, dt, x, t = wave_init(maxx, maxt, v, nx, CFL=1)\n", "U[0,:] = 0.\n", "U[0, (xmaxx*0.2)] = 1.\n", "convection_solve_Lax(U, dx, dt, nx, len(t))\n", "pcolormesh(U, rasterized=True, vmin=-2, vmax=2)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 49, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nm6FDpwOLlwAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 49 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Courant-Friedrichs-Lewy (CFL) condition\n", "$$\\frac{v\\Delta t}{\\Delta x}\\leq 1$$\n", "determines the stability. Look at the sensitivity to violating this condition:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "U, dx, dt, x, t = wave_init(maxx, maxt, v, nx, CFL=1.05)\n", "U[0,:] = 0.\n", "U[0, (xmaxx*0.2)] = 1.\n", "convection_solve_Lax(U, dx, dt, nx, len(t))\n", "pcolormesh(U, rasterized=True, vmin=-2, vmax=2)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 51, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 51 }, { "cell_type": "markdown", "metadata": {}, "source": [ "What if we need better time resolution?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "U, dx, dt, x, t = wave_init(maxx, maxt, v, nx, CFL=.1)\n", "U[0,:] = 0.\n", "U[0, (xmaxx*0.2)] = 1.\n", "convection_solve_Lax(U, dx, dt, nx, len(t))\n", "pcolormesh(U, rasterized=True, vmin=-2, vmax=2)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 52, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n7yBhfVoAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 52 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The stabilization also causes \"damping\" of the solution at smaller time steps." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def convection_solve_upwind(U, dx, dt, nx, nt):\n", " xint = arange(1, nx+1)\n", " for it in range(0,nt-1):\n", " U[it+1,xint] = U[it,xint] - v*dt/dx*(U[it,xint] - U[it, xint-1])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 53 }, { "cell_type": "code", "collapsed": false, "input": [ "U, dx, dt, x, t = wave_init(maxx, maxt, v, nx, CFL=.1)\n", "U[0,:] = 0.\n", "U[0, (xmaxx*0.2)] = 1.\n", "convection_solve_upwind(U, dx, dt, nx, len(t))\n", "pcolormesh(U, rasterized=True, vmin=-2, vmax=2)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 59, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 59 }, { "cell_type": "code", "collapsed": false, "input": [ "def convection_solve_LeapFrog(U, dx, dt, nx, nt):\n", " xint = arange(1, nx+1)\n", " #start the solution with upwind method\n", " U[1,xint] = U[0,xint] - v*dt/dx*(U[0,xint] - U[0, xint-1])\n", " for it in range(1, nt-1):\n", " U[it+1,xint] = U[it-1,xint] - v*dt/dx*(U[it,xint+1] - U[it, xint-1])\n", "\n", "U, dx, dt, x, t = wave_init(maxx, maxt, v, nx, CFL=.1)\n", "U[0,:] = 0.\n", "U[0, (xmaxx*0.2)] = 1.\n", "convection_solve_LeapFrog(U, dx, dt, nx, len(t))\n", "pcolormesh(U, rasterized=True, vmin=-2, vmax=2)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 55, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 55 }, { "cell_type": "code", "collapsed": false, "input": [ "def convection_solve_LeapFrog(U, dx, dt, nx, nt):\n", " xint = arange(1, nx+1)\n", " #start the solution with upwind method\n", " U[1,xint] = U[0,xint] - v*dt/dx*(U[0,xint] - U[0, xint-1])\n", " for it in range(1, nt-1):\n", " U[it+1,xint] = U[it-1,xint] - v*dt/dx*(U[it,xint+1] - U[it, xint-1])\n", " \n", " #extrapolate values on the outflow boundary\n", " U[it+1,-1] = U[it+1, -2]\n", "U, dx, dt, x, t = wave_init(maxx, maxt, v, nx, CFL=1)\n", "U[0,:] = 0.\n", "U[0, (xmaxx*0.2)] = 1.\n", "convection_solve_LeapFrog(U, dx, dt, nx, len(t))\n", "pcolormesh(U, rasterized=True, vmin=-2, vmax=2)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 60, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\npB6w2EtSD/w/GKapV0TU0rsAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 60 }, { "cell_type": "code", "collapsed": false, "input": [ "def convection_solve_LeapFrog(U, dx, dt, nx, nt):\n", " xint = arange(1, nx+1)\n", " #start and smooth the solution with upwind method\n", " for it in range(0,min(50, nt-1)):\n", " U[it+1,xint] = U[it,xint] - v*dt/dx*(U[it,xint] - U[it, xint-1])\n", " #U[it+1,xint] = 0.5*(U[it,xint+1]+U[it,xint-1]) - 0.5*v*dt/dx*(U[it,xint+1] - U[it, xint-1])\n", " for it in range(min(50, nt-1),nt-1):\n", " U[it+1,xint] = U[it-1,xint] - v*dt/dx*(U[it,xint+1] - U[it, xint-1])\n", " \n", " #extrapolate values on the outflow boundary\n", " U[it+1,-1] = U[it+1, -2]*2 - U[it+1, -3]\n", "U, dx, dt, x, t = wave_init(maxx, maxt, v, nx, CFL=1)\n", "U[0,:] = 0.\n", "U[0, (xmaxx*0.2)] = 1.\n", "convection_solve_LeapFrog(U, dx, dt, nx, len(t))\n", "pcolormesh(U, rasterized=True, vmin=-2, vmax=2)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 61, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 61 }, { "cell_type": "code", "collapsed": false, "input": [ "def convection_solve_LaxWendroff(U, dx, dt, nx, nt):\n", " xint = arange(1, nx+1)\n", " for it in range(0,nt-1):\n", " # less efficient but more readable:\n", " Uplus = 0.5*(U[it,xint+1] + U[it, xint]) - 0.5*v*dt/dx*(U[it,xint+1] - U[it, xint])\n", " Uminus = 0.5*(U[it,xint] + U[it, xint-1]) - 0.5*v*dt/dx*(U[it,xint] - U[it, xint-1])\n", " U[it+1,xint] = U[it,xint] - v*dt/dx*(Uplus - Uminus)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "U, dx, dt, x, t = wave_init(maxx, maxt, v, nx, CFL=.1)\n", "U[0,:] = 0.\n", "U[0, (xmaxx*0.2)] = 1.\n", "convection_solve_LaxWendroff(U, dx, dt, nx, len(t))\n", "pcolormesh(U, rasterized=True, vmin=-2, vmax=2)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "def convection_solve_LaxWendroff(U, dx, dt, nx, nt):\n", " xint = arange(1, nx+1)\n", " for it in range(0,nt-1):\n", " # less efficient but more readable:\n", " Uplus = 0.5*(U[it,xint+1] + U[it, xint]) - 0.5*v*dt/dx*(U[it,xint+1] - U[it, xint])\n", " Uminus = 0.5*(U[it,xint] + U[it, xint-1]) - 0.5*v*dt/dx*(U[it,xint] - U[it, xint-1])\n", " U[it+1,xint] = U[it,xint] - v*dt/dx*(Uplus - Uminus)\n", " \n", " #extrapolate values on the outflow boundary\n", " U[it+1,-1] = U[it+1, -2]*2 - U[it+1,-3]" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "U, dx, dt, x, t = wave_init(maxx, maxt, v, nx, CFL=.1)\n", "U[0,:] = 0.\n", "U[0, (xmaxx*0.2)] = 1.\n", "convection_solve_LaxWendroff(U, dx, dt, nx, len(t))\n", "pcolormesh(U, rasterized=True, vmin=-2, vmax=2)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "def convection_solve_LaxWendroff(U, dx, dt, nx, nt):\n", " xint = arange(1, nx+1)\n", " for it in range(0,min(50, nt-1)):\n", " U[it+1,xint] = U[it,xint] - v*dt/dx*(U[it,xint] - U[it, xint-1])\n", " for it in range(min(50, nt-1),nt-1):\n", " # less efficient but more readable:\n", " Uplus = 0.5*(U[it,xint+1] + U[it, xint]) - 0.5*v*dt/dx*(U[it,xint+1] - U[it, xint])\n", " Uminus = 0.5*(U[it,xint] + U[it, xint-1]) - 0.5*v*dt/dx*(U[it,xint] - U[it, xint-1])\n", " U[it+1,xint] = U[it,xint] - v*dt/dx*(Uplus - Uminus)\n", " \n", " #extrapolate values on the outflow boundary\n", " U[it+1,-1] = U[it+1, -2]*2 - U[it+1,-3]\n", "\n", "U, dx, dt, x, t = wave_init(maxx, maxt, v, nx, CFL=.1)\n", "U[0,:] = 0.\n", "U[0, (xmaxx*0.2)] = 1.\n", "convection_solve_LaxWendroff(U, dx, dt, nx, len(t))\n", "pcolormesh(U, rasterized=True, vmin=-2, vmax=2)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Can we break the CFL condition with some naive implementation of implicit scheme?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from scipy.sparse import dia_matrix, eye\n", "from scipy.sparse.linalg import factorized\n", "def d1matrix(nelem):\n", " elements = ones((3,nelem))\n", " elements[1,:] *= 0\n", " elements[0,:] *= -1\n", " return dia_matrix((elements, [-1,0,1]), shape=(nelem,nelem)).tocsc()\n", "\n", "def convection_solve_CN(U, dx, dt, nx, nt):\n", " alpha = -v*dt/(dx*4.)\n", " M1 = eye(nx)-d1matrix(nx)*alpha\n", " M2 = eye(nx)+d1matrix(nx)*alpha\n", " LU = factorized(M1.tocsc())\n", " for it in range(0,nt-1):\n", " U[it+1,1:-1] = LU(M2.dot(U[it,1:-1]))\n", " \n", " #extrapolate values on the outflow boundary\n", " U[it+1,-1] = U[it+1, -2]\n", "\n", " " ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "U, dx, dt, x, t = wave_init(maxx, maxt, v, nx, CFL=2)\n", "U[0,:] = 0.\n", "U[0, (xmaxx*0.2)] = 1.\n", "convection_solve_CN(U, dx, dt, nx, len(t))\n", "pcolormesh(U, rasterized=True, vmin=-2, vmax=2)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It sort of works, but not very well..." ] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }