{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "#Lets have matplotlib \"inline\"\n", "%matplotlib inline\n", "\n", "#Import packages we need\n", "import numpy as np\n", "from matplotlib import animation, rc\n", "from matplotlib import pyplot as plt\n", "\n", "import subprocess\n", "import os\n", "import gc\n", "import datetime\n", "import importlib\n", "\n", "import pycuda.autoinit\n", "import pycuda.driver\n", "\n", "try:\n", " from StringIO import StringIO\n", "except ImportError:\n", " from io import StringIO\n", "\n", "#Set large figure sizes\n", "#Note, this prevents nice figures for articles...\n", "rc('figure', figsize=(16.0, 12.0))\n", "rc('animation', html='html5')\n", "\n", "#Finally, import our simulator\n", "#from SWESimulators import FBL, CTCS, LxF, FORCE, HLL, HLL2, KP07, KP07_dimsplit, WAF, CDKLM16, DataOutput, PlotHelper" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def gen_test_data(nx, ny, num_ghost_cells):\n", " width = 100.0\n", " height = width\n", " dx = width / float(nx)\n", " dy = height / float(ny)\n", "\n", " h = np.zeros((ny+2*num_ghost_cells, nx+2*num_ghost_cells), dtype=np.float32); \n", " hu = np.zeros((ny+2*num_ghost_cells, nx+2*num_ghost_cells), dtype=np.float32);\n", " hv = np.zeros((ny+2*num_ghost_cells, nx+2*num_ghost_cells), dtype=np.float32);\n", "\n", " #Create a gaussian \"dam break\" that will not form shocks\n", " x_center = dx*nx/2.0\n", " y_center = dy*ny/2.0\n", " size = width \n", " for j in range(-num_ghost_cells, ny+num_ghost_cells):\n", " y = dy*(j+0.5) - y_center\n", " for i in range(-num_ghost_cells, nx+num_ghost_cells):\n", " x = dx*(i+0.5) - x_center\n", " \n", " h[j+num_ghost_cells, i+num_ghost_cells] = 0.5 + 0.1*np.exp(-(x**2/size + y**2/size))\n", " #hu[j+num_ghost_cells, i+num_ghost_cells] = 0.01*np.sin(x)*np.exp(-(x**2/size))\n", " hu[j+num_ghost_cells, i+num_ghost_cells] = 0.1*np.exp(-(x**2/size + y**2/size))\n", " hv[j+num_ghost_cells, i+num_ghost_cells] = 0.1*np.exp(-(x**2/size + y**2/size))\n", " \n", " return h, hu, hv, dx, dy, nx, ny" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Sum of absolute difference: 0.0\n" ] } ], "source": [ "from SWESimulators import Common\n", "importlib.reload(Common)\n", "\n", "nx = 10\n", "ny = 15\n", "nx_halo = 2\n", "ny_halo = 3\n", "a = np.random.rand(ny+2*ny_halo, nx+2*nx_halo).astype(np.float32)\n", "\n", "a_gpu = Common.CUDAArray2D(nx, ny, nx_halo, ny_halo, a)\n", "b = a_gpu.download(async=True)\n", "pycuda.driver.Context.synchronize()\n", "print(\"Sum of absolute difference: \", np.sum(np.abs(a-b)))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\anbro\\Documents\\projects\\ShallowWaterGPU\\SWESimulators\\Common.py:28: UserWarning: The CUDA compiler succeeded, but said the following:\n", "kernel.cu\r\n", "c:\\users\\anbro\\documents\\projects\\shallowwatergpu\\swesimulators\\common.cu(837): warning: variable \"rv_1\" was declared but never referenced\r\n", "\r\n", "c:\\users\\anbro\\documents\\projects\\shallowwatergpu\\swesimulators\\common.cu(839): warning: variable \"rh_2\" was declared but never referenced\r\n", "\r\n", "c:\\users\\anbro\\documents\\projects\\shallowwatergpu\\swesimulators\\common.cu(843): warning: variable \"rv_3\" was declared but never referenced\r\n", "\r\n", "\n", " kernel = cuda_compiler.SourceModule(kernel_string, include_dirs=[module_path])\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from SWESimulators import LxF\n", "importlib.reload(LxF)\n", "\n", "nx = 10\n", "ny = 15\n", "num_ghost_cells = 1\n", "dt = 0.01\n", "g = 9.81\n", "\n", "h0, hu0, hv0, dx, dy, nx, ny = gen_test_data(nx, ny, num_ghost_cells)\n", "plt.figure()\n", "plt.subplot(121)\n", "plt.imshow(h0)\n", "plt.colorbar()\n", "\n", "sim = LxF.LxF(h0, hu0, hv0, \\\n", " nx, ny, \\\n", " dx, dy, dt, \\\n", " g)\n", "\n", "t = sim.step(0.02)\n", "h1, hu1, hv1 = sim.download()\n", "\n", "plt.subplot(122)\n", "plt.imshow(h1)\n", "plt.colorbar()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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 }