{ "cells": [ { "cell_type": "markdown", "id": "f389f465-1007-443d-873b-d27bfa74cbc7", "metadata": {}, "source": [ "# Vector space tutorial" ] }, { "cell_type": "code", "execution_count": 3, "id": "358fb709-9c81-45a3-a871-2549de121580", "metadata": {}, "outputs": [], "source": [ "#First, let's import the relavant modules:\n", "import romtools\n", "import numpy as np\n", "from matplotlib import pyplot as plt\n", "from romtools import vector_space" ] }, { "cell_type": "code", "execution_count": 4, "id": "b1ffa4be-246c-44a9-b486-f517b9f7acb9", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#Now, we will load in snapshots from a FOM. Here, we use pre-computed snapshots of the 1D Euler equations obtained using pressio-demo-apps\n", "snapshots = np.load('snapshots.npz')['snapshots']\n", "\n", "## The snapshots are in tensor form:\n", "n_vars, nx, nt = snapshots.shape\n", "\n", "#Let's look at the first density snapshot:\n", "\n", "plt.plot(snapshots[0,:,0])\n", "plt.xlabel(r'$x$')\n", "plt.ylabel(r'$\\rho$')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "217759fb-6ec9-4488-897b-e5b4db9f4b2c", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "8dddecd2-01f7-4b7c-955e-456a1974fefb", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.7" } }, "nbformat": 4, "nbformat_minor": 5 }