From 980e51afb5c8c1f10178c4176b352f4fa958f013 Mon Sep 17 00:00:00 2001 From: Linde van Beers <38701378+LindeBee@users.noreply.github.com> Date: Sat, 9 May 2020 11:06:31 +0200 Subject: [PATCH] concentration not working yet --- Projects/ProjectV2.ipynb | 1263 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 1263 insertions(+) create mode 100644 Projects/ProjectV2.ipynb diff --git a/Projects/ProjectV2.ipynb b/Projects/ProjectV2.ipynb new file mode 100644 index 0000000..68b9ce0 --- /dev/null +++ b/Projects/ProjectV2.ipynb @@ -0,0 +1,1263 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "ProjectV2.ipynb", + "provenance": [], + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "cyCUwzF-wRoW", + "colab_type": "text" + }, + "source": [ + "# **The Stokes equations**\n", + "**Johan Hoffman**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9x_J5FVuPzbm", + "colab_type": "text" + }, + "source": [ + "# **Abstract**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6UFTSzW7P8kL", + "colab_type": "text" + }, + "source": [ + "This short report show an example on how to use FEniCS to solve the Stokes equations, which is used in the course DD2365 Advanced Computation in Fluid Mechanics, at the KTH Royal Institute of Technology.\n", + "\n", + "[DD2365 course website.](https://kth.instructure.com/courses/17071)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OkT8J7uOWpT3", + "colab_type": "text" + }, + "source": [ + "# **About the code**" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Pdll1Xc9WP0e", + "colab_type": "code", + "outputId": "48070539-20a6-44ea-db40-969f5f7f584b", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "\"\"\"This program is an example file for the course\"\"\"\n", + "\"\"\"DD2365 Advanced Computation in Fluid Mechanics, \"\"\"\n", + "\"\"\"KTH Royal Institute of Technology, Stockholm, Sweden.\"\"\"\n", + "\n", + "# Copyright (C) 2020 Johan Hoffman (jhoffman@kth.se)\n", + "\n", + "# This file is part of the course DD2365 Advanced Computation in Fluid Mechanics\n", + "# KTH Royal Institute of Technology, Stockholm, Sweden\n", + "#\n", + "# This is free software: you can redistribute it and/or modify\n", + "# it under the terms of the GNU Lesser General Public License as published by\n", + "# the Free Software Foundation, either version 3 of the License, or\n", + "# (at your option) any later version.\n", + "\n", + "# This template is maintained by Johan Hoffman\n", + "# Please report problems to jhoffman@kth.se" + ], + "execution_count": 1, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'KTH Royal Institute of Technology, Stockholm, Sweden.'" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 1 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "28xLGz8JX3Hh", + "colab_type": "text" + }, + "source": [ + "# **Set up environment**" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Xw7VlErAX7NS", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "outputId": "f1464924-3605-494a-d03c-169ad91f3a67" + }, + "source": [ + "# Load neccessary modules.\n", + "from google.colab import files\n", + "\n", + "try:\n", + " from dolfin import *; from mshr import *\n", + "except ImportError as e:\n", + " !apt-get install -y -qq software-properties-common \n", + " !add-apt-repository -y ppa:fenics-packages/fenics\n", + " !apt-get update -qq\n", + " !apt install -y --no-install-recommends fenics\n", + " from dolfin import *; from mshr import *\n", + " \n", + "import dolfin.common.plotting as fenicsplot\n", + "import math\n", + "\n", + "from matplotlib import pyplot as plt" + ], + "execution_count": 2, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\r0% [Working]\r \rGet:1 http://ppa.launchpad.net/fenics-packages/fenics/ubuntu bionic InRelease [15.4 kB]\n", + "\r0% [Connecting to archive.ubuntu.com (91.189.88.142)] [Waiting for headers] [Co\r \rGet:2 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]\n", + "\r0% [Connecting to archive.ubuntu.com (91.189.88.142)] [2 InRelease 2,586 B/88.7\r0% [Connecting to archive.ubuntu.com (91.189.88.142)] [2 InRelease 51.8 kB/88.7\r \rHit:3 http://archive.ubuntu.com/ubuntu bionic InRelease\n", + "\r0% [Waiting for headers] [2 InRelease 51.8 kB/88.7 kB 58%] [Connected to cloud.\r \rHit:4 http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu bionic InRelease\n", + "\r0% [Waiting for headers] [2 InRelease 54.7 kB/88.7 kB 62%] [Connected to cloud.\r0% [1 InRelease gpgv 15.4 kB] [Waiting for headers] [2 InRelease 57.6 kB/88.7 k\r \rGet:5 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]\n", + "\r0% [1 InRelease gpgv 15.4 kB] [5 InRelease 2,602 B/88.7 kB 3%] [2 InRelease 83.\r0% [1 InRelease gpgv 15.4 kB] [5 InRelease 11.3 kB/88.7 kB 13%] [Connected to c\r \rGet:6 http://ppa.launchpad.net/marutter/c2d4u3.5/ubuntu bionic InRelease [15.4 kB]\n", + "\r0% [1 InRelease gpgv 15.4 kB] [5 InRelease 30.1 kB/88.7 kB 34%] [Waiting for he\r \rGet:7 https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/ InRelease [3,626 B]\n", + "Get:8 http://archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]\n", + "Ign:9 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 InRelease\n", + "Get:10 http://ppa.launchpad.net/fenics-packages/fenics/ubuntu bionic/main amd64 Packages [5,700 B]\n", + "Ign:11 https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64 InRelease\n", + "Hit:12 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 Release\n", + "Hit:13 https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64 Release\n", + "Get:14 http://security.ubuntu.com/ubuntu bionic-security/universe amd64 Packages [844 kB]\n", + "Get:15 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages [908 kB]\n", + "Get:16 http://ppa.launchpad.net/marutter/c2d4u3.5/ubuntu bionic/main Sources [1,814 kB]\n", + "Get:17 http://ppa.launchpad.net/marutter/c2d4u3.5/ubuntu bionic/main amd64 Packages [875 kB]\n", + "Get:18 http://archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages [1,376 kB]\n", + "Get:19 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages [1,205 kB]\n", + "Fetched 7,315 kB in 2s (3,083 kB/s)\n", + "Reading package lists... Done\n", + "Reading package lists... Done\n", + "Building dependency tree \n", + "Reading state information... Done\n", + "The following additional packages will be installed:\n", + " dolfin-bin dolfin-doc libamd2 libarpack2-dev libblas-dev libblas3 libbtf1\n", + " libcamd2 libccolamd2 libcholmod3 libcolamd2 libcxsparse3 libdolfin-dev\n", + " libdolfin2019.1 libeigen3-dev libfftw3-bin libfftw3-dev libfftw3-long3\n", + " libfftw3-mpi-dev libfftw3-mpi3 libfftw3-quad3 libfftw3-single3 libgraphblas1\n", + " libhdf5-mpi-dev libhdf5-openmpi-dev libhypre-2.13.0 libhypre-dev libklu1\n", + " libldl2 libmetis5 libmshr-dev libmshr2019.1 libmumps-5.1.2 libmumps-dev\n", + " libparpack2 libparpack2-dev libpetsc3.7.7 libpetsc3.7.7-dev libproj-dev\n", + " libptscotch-6.0 libptscotch-dev librbio2 libscalapack-mpi-dev\n", + " libscalapack-openmpi-dev libscalapack-openmpi2.0 libscotch-6.0 libscotch-dev\n", + " libslepc3.7.4 libslepc3.7.4-dev libspooles-dev libspooles2.2 libspqr2\n", + " libsuitesparse-dev libsuitesparseconfig5 libsuperlu-dev libsuperlu-dist5\n", + " libtet1.5 libumfpack5 pybind11-dev python-ufl-doc python3-dijitso\n", + " python3-dolfin python3-ffc python3-fiat python3-mpi4py python3-mpmath\n", + " python3-mshr python3-petsc4py python3-pkg-resources python3-pkgconfig\n", + " python3-ply python3-pybind11 python3-six python3-slepc4py python3-sympy\n", + " python3-ufl\n", + "Suggested packages:\n", + " liblapack-doc libeigen3-doc libmrpt-dev libfftw3-doc libhdf5-doc petsc-dev\n", + " libpetsc3.7.7-dbg petsc3.7.7-doc libluminate-dev proj-bin scalapack-doc\n", + " slepc3.7.4-doc spooles-doc libsuperlu-doc pybind11-doc python-dijitso-doc\n", + " python3-gmpy2 python3-matplotlib python-mpmath-doc python3-setuptools\n", + " python-ply-doc texlive-fonts-extra dvipng python-sympy-doc\n", + "Recommended packages:\n", + " tcsh | csh | c-shell ksh | mksh | pdksh | zsh python-petsc4py-docs\n", + " python-slepc4py-docs python3-pil ipython3\n", + "The following NEW packages will be installed:\n", + " dolfin-bin dolfin-doc fenics libamd2 libarpack2-dev libblas-dev libblas3\n", + " libbtf1 libcamd2 libccolamd2 libcholmod3 libcolamd2 libcxsparse3\n", + " libdolfin-dev libdolfin2019.1 libeigen3-dev libfftw3-bin libfftw3-dev\n", + " libfftw3-long3 libfftw3-mpi-dev libfftw3-mpi3 libfftw3-quad3\n", + " libfftw3-single3 libgraphblas1 libhdf5-mpi-dev libhdf5-openmpi-dev\n", + " libhypre-2.13.0 libhypre-dev libklu1 libldl2 libmetis5 libmshr-dev\n", + " libmshr2019.1 libmumps-5.1.2 libmumps-dev libparpack2 libparpack2-dev\n", + " libpetsc3.7.7 libpetsc3.7.7-dev libproj-dev libptscotch-6.0 libptscotch-dev\n", + " librbio2 libscalapack-mpi-dev libscalapack-openmpi-dev\n", + " libscalapack-openmpi2.0 libscotch-6.0 libscotch-dev libslepc3.7.4\n", + " libslepc3.7.4-dev libspooles-dev libspooles2.2 libspqr2 libsuitesparse-dev\n", + " libsuitesparseconfig5 libsuperlu-dev libsuperlu-dist5 libtet1.5 libumfpack5\n", + " pybind11-dev python-ufl-doc python3-dijitso python3-dolfin python3-ffc\n", + " python3-fiat python3-mpi4py python3-mpmath python3-mshr python3-petsc4py\n", + " python3-pkg-resources python3-pkgconfig python3-ply python3-pybind11\n", + " python3-six python3-slepc4py python3-sympy python3-ufl\n", + "0 upgraded, 77 newly installed, 0 to remove and 32 not upgraded.\n", + "Need to get 50.6 MB of archives.\n", + "After this operation, 267 MB of additional disk space will be used.\n", + "Get:1 http://ppa.launchpad.net/fenics-packages/fenics/ubuntu bionic/main amd64 libdolfin2019.1 amd64 2019.1.0-1~ppa1~bionic4 [1,704 kB]\n", + "Get:2 http://archive.ubuntu.com/ubuntu bionic/main amd64 libsuitesparseconfig5 amd64 1:5.1.2-2 [9,044 B]\n", + "Get:3 http://archive.ubuntu.com/ubuntu bionic/main amd64 libamd2 amd64 1:5.1.2-2 [19.5 kB]\n", + "Get:4 http://archive.ubuntu.com/ubuntu bionic/main amd64 libblas3 amd64 3.7.1-4ubuntu1 [140 kB]\n", + "Get:5 http://archive.ubuntu.com/ubuntu bionic/main amd64 libcamd2 amd64 1:5.1.2-2 [20.9 kB]\n", + "Get:6 http://archive.ubuntu.com/ubuntu bionic/main amd64 libccolamd2 amd64 1:5.1.2-2 [21.7 kB]\n", + "Get:7 http://archive.ubuntu.com/ubuntu bionic/main amd64 libcolamd2 amd64 1:5.1.2-2 [16.2 kB]\n", + "Get:8 http://archive.ubuntu.com/ubuntu bionic/main amd64 libmetis5 amd64 5.1.0.dfsg-5 [169 kB]\n", + "Get:9 http://archive.ubuntu.com/ubuntu bionic/main amd64 libcholmod3 amd64 1:5.1.2-2 [300 kB]\n", + "Get:10 http://archive.ubuntu.com/ubuntu bionic/main amd64 libfftw3-long3 amd64 3.3.7-1 [308 kB]\n", + "Get:11 http://archive.ubuntu.com/ubuntu bionic/main amd64 libfftw3-single3 amd64 3.3.7-1 [764 kB]\n", + "Get:12 http://ppa.launchpad.net/fenics-packages/fenics/ubuntu bionic/main amd64 python3-fiat all 2019.1.0-1~ppa1~bionic1 [55.9 kB]\n", + "Get:13 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libfftw3-mpi3 amd64 3.3.7-1 [47.5 kB]\n", + "Get:14 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libscotch-6.0 amd64 6.0.4.dfsg1-8 [403 kB]\n", + "Get:15 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libptscotch-6.0 amd64 6.0.4.dfsg1-8 [654 kB]\n", + "Get:16 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libsuperlu-dist5 amd64 5.3.0+dfsg1-1 [213 kB]\n", + "Get:17 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libhypre-2.13.0 amd64 2.13.0-2 [1,718 kB]\n", + "Get:18 http://ppa.launchpad.net/fenics-packages/fenics/ubuntu bionic/main amd64 python3-ufl all 2019.1.0-1~ppa1~bionic1 [149 kB]\n", + "Get:19 http://archive.ubuntu.com/ubuntu bionic/main amd64 libbtf1 amd64 1:5.1.2-2 [10.6 kB]\n", + "Get:20 http://archive.ubuntu.com/ubuntu bionic/main amd64 libklu1 amd64 1:5.1.2-2 [69.3 kB]\n", + "Get:21 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libscalapack-openmpi2.0 amd64 2.0.2-4 [1,473 kB]\n", + "Get:22 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libmumps-5.1.2 amd64 5.1.2-4 [1,103 kB]\n", + "Get:23 http://archive.ubuntu.com/ubuntu bionic/main amd64 libumfpack5 amd64 1:5.1.2-2 [229 kB]\n", + "Get:24 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libpetsc3.7.7 amd64 3.7.7+dfsg1-2build5 [3,935 kB]\n", + "Get:25 http://ppa.launchpad.net/fenics-packages/fenics/ubuntu bionic/main amd64 python3-dijitso all 2019.1.0-1~ppa1~bionic1 [24.3 kB]\n", + "Get:26 http://ppa.launchpad.net/fenics-packages/fenics/ubuntu bionic/main amd64 python3-ffc all 2019.1.0.post0-1~ppa1~bionic1 [224 kB]\n", + "Get:27 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libparpack2 amd64 3.5.0+real-2 [84.5 kB]\n", + "Get:28 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libslepc3.7.4 amd64 3.7.4+dfsg1-2build8 [743 kB]\n", + "Get:29 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libeigen3-dev all 3.3.4-4 [810 kB]\n", + "Get:30 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libhdf5-openmpi-dev amd64 1.10.0-patch1+docs-4 [2,392 kB]\n", + "Get:31 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libhdf5-mpi-dev amd64 1.10.0-patch1+docs-4 [3,074 B]\n", + "Get:32 http://archive.ubuntu.com/ubuntu bionic/main amd64 libcxsparse3 amd64 1:5.1.2-2 [63.9 kB]\n", + "Get:33 http://archive.ubuntu.com/ubuntu bionic/main amd64 libgraphblas1 amd64 1:5.1.2-2 [384 kB]\n", + "Get:34 http://archive.ubuntu.com/ubuntu bionic/main amd64 libldl2 amd64 1:5.1.2-2 [10.3 kB]\n", + "Get:35 http://archive.ubuntu.com/ubuntu bionic/main amd64 librbio2 amd64 1:5.1.2-2 [24.0 kB]\n", + "Get:36 http://archive.ubuntu.com/ubuntu bionic/main amd64 libspqr2 amd64 1:5.1.2-2 [64.2 kB]\n", + "Get:37 http://archive.ubuntu.com/ubuntu bionic/main amd64 libblas-dev amd64 3.7.1-4ubuntu1 [143 kB]\n", + "Get:38 http://archive.ubuntu.com/ubuntu bionic/main amd64 libsuitesparse-dev amd64 1:5.1.2-2 [1,235 kB]\n", + "Get:39 http://ppa.launchpad.net/fenics-packages/fenics/ubuntu bionic/main amd64 libdolfin-dev amd64 2019.1.0-1~ppa1~bionic4 [201 kB]\n", + "Get:40 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libscotch-dev amd64 6.0.4.dfsg1-8 [1,791 kB]\n", + "Get:41 http://archive.ubuntu.com/ubuntu bionic/universe amd64 python3-mpmath all 1.0.0-1 [400 kB]\n", + "Get:42 http://archive.ubuntu.com/ubuntu bionic/universe amd64 python3-sympy all 1.1.1-5 [2,569 kB]\n", + "Get:43 http://ppa.launchpad.net/fenics-packages/fenics/ubuntu bionic/main amd64 pybind11-dev all 2.2.3-1fenics1bionic1 [129 kB]\n", + "Get:44 http://archive.ubuntu.com/ubuntu bionic/main amd64 python3-pkg-resources all 39.0.1-2 [98.8 kB]\n", + "Get:45 http://archive.ubuntu.com/ubuntu bionic/universe amd64 python3-mpi4py amd64 2.0.0-3 [420 kB]\n", + "Get:46 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libspooles2.2 amd64 2.2-12build1 [458 kB]\n", + "Get:47 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libspooles-dev amd64 2.2-12build1 [587 kB]\n", + "Get:48 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libsuperlu-dev amd64 5.2.1+dfsg1-3 [16.3 kB]\n", + "Get:49 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libhypre-dev amd64 2.13.0-2 [134 kB]\n", + "Get:50 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libptscotch-dev amd64 6.0.4.dfsg1-8 [5,416 kB]\n", + "Get:51 http://ppa.launchpad.net/fenics-packages/fenics/ubuntu bionic/main amd64 python3-pybind11 all 2.2.3-1fenics1bionic1 [21.5 kB]\n", + "Get:52 http://ppa.launchpad.net/fenics-packages/fenics/ubuntu bionic/main amd64 python3-dolfin amd64 2019.1.0-1~ppa1~bionic4 [706 kB]\n", + "Get:53 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libscalapack-openmpi-dev amd64 2.0.2-4 [6,068 B]\n", + "Get:54 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libscalapack-mpi-dev amd64 2.0.2-4 [2,108 B]\n", + "Get:55 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libmumps-dev amd64 5.1.2-4 [984 kB]\n", + "Get:56 http://archive.ubuntu.com/ubuntu bionic/main amd64 libfftw3-quad3 amd64 3.3.7-1 [552 kB]\n", + "Get:57 http://archive.ubuntu.com/ubuntu bionic/main amd64 libfftw3-bin amd64 3.3.7-1 [32.7 kB]\n", + "Get:58 http://archive.ubuntu.com/ubuntu bionic/main amd64 libfftw3-dev amd64 3.3.7-1 [2,108 kB]\n", + "Get:59 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libfftw3-mpi-dev amd64 3.3.7-1 [47.6 kB]\n", + "Get:60 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libpetsc3.7.7-dev amd64 3.7.7+dfsg1-2build5 [3,495 kB]\n", + "Get:61 http://ppa.launchpad.net/fenics-packages/fenics/ubuntu bionic/main amd64 dolfin-bin all 2019.1.0-1~ppa1~bionic4 [22.2 kB]\n", + "Get:62 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libarpack2-dev amd64 3.5.0+real-2 [97.3 kB]\n", + "Get:63 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libparpack2-dev amd64 3.5.0+real-2 [92.0 kB]\n", + "Get:64 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libslepc3.7.4-dev amd64 3.7.4+dfsg1-2build8 [1,701 kB]\n", + "Get:65 http://ppa.launchpad.net/fenics-packages/fenics/ubuntu bionic/main amd64 dolfin-doc all 2019.1.0-1~ppa1~bionic4 [5,780 kB]\n", + "Get:66 http://archive.ubuntu.com/ubuntu bionic/main amd64 python3-ply all 3.11-1 [46.6 kB]\n", + "Get:67 http://archive.ubuntu.com/ubuntu bionic/main amd64 python3-six all 1.11.0-2 [11.4 kB]\n", + "Get:68 http://archive.ubuntu.com/ubuntu bionic/universe amd64 python3-petsc4py amd64 3.7.0-3build2 [719 kB]\n", + "Get:69 http://archive.ubuntu.com/ubuntu bionic/universe amd64 python3-slepc4py amd64 3.7.0-3build1 [155 kB]\n", + "Get:70 http://archive.ubuntu.com/ubuntu bionic/universe amd64 python3-pkgconfig all 1.3.1-1 [6,328 B]\n", + "Get:71 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libtet1.5 amd64 1.5.0-4 [235 kB]\n", + "Get:72 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libproj-dev amd64 4.9.3-2 [199 kB]\n", + "Get:73 http://ppa.launchpad.net/fenics-packages/fenics/ubuntu bionic/main amd64 python-ufl-doc all 2019.1.0-1~ppa1~bionic1 [13.7 kB]\n", + "Get:74 http://ppa.launchpad.net/fenics-packages/fenics/ubuntu bionic/main amd64 libmshr2019.1 amd64 2019.1.0+full1-1~ppa1~bionic1 [1,464 kB]\n", + "Get:75 http://ppa.launchpad.net/fenics-packages/fenics/ubuntu bionic/main amd64 libmshr-dev amd64 2019.1.0+full1-1~ppa1~bionic1 [61.8 kB]\n", + "Get:76 http://ppa.launchpad.net/fenics-packages/fenics/ubuntu bionic/main amd64 python3-mshr amd64 2019.1.0+full1-1~ppa1~bionic1 [89.9 kB]\n", + "Get:77 http://ppa.launchpad.net/fenics-packages/fenics/ubuntu bionic/main amd64 fenics amd64 1:2019.1.0.1~ppa1~bionic1 [4,260 B]\n", + "Fetched 50.6 MB in 1s (44.5 MB/s)\n", + "Extracting templates from packages: 100%\n", + "Selecting previously unselected package libsuitesparseconfig5:amd64.\n", + "(Reading database ... 144429 files and directories currently installed.)\n", + "Preparing to unpack .../00-libsuitesparseconfig5_1%3a5.1.2-2_amd64.deb ...\n", + "Unpacking libsuitesparseconfig5:amd64 (1:5.1.2-2) ...\n", + "Selecting previously unselected package libamd2:amd64.\n", + "Preparing to unpack .../01-libamd2_1%3a5.1.2-2_amd64.deb ...\n", + "Unpacking libamd2:amd64 (1:5.1.2-2) ...\n", + "Selecting previously unselected package libblas3:amd64.\n", + "Preparing to unpack .../02-libblas3_3.7.1-4ubuntu1_amd64.deb ...\n", + "Unpacking libblas3:amd64 (3.7.1-4ubuntu1) ...\n", + "Selecting previously unselected package libcamd2:amd64.\n", + "Preparing to unpack .../03-libcamd2_1%3a5.1.2-2_amd64.deb ...\n", + "Unpacking libcamd2:amd64 (1:5.1.2-2) ...\n", + "Selecting previously unselected package libccolamd2:amd64.\n", + "Preparing to unpack .../04-libccolamd2_1%3a5.1.2-2_amd64.deb ...\n", + "Unpacking libccolamd2:amd64 (1:5.1.2-2) ...\n", + "Selecting previously unselected package libcolamd2:amd64.\n", + "Preparing to unpack .../05-libcolamd2_1%3a5.1.2-2_amd64.deb ...\n", + "Unpacking libcolamd2:amd64 (1:5.1.2-2) ...\n", + "Selecting previously unselected package libmetis5:amd64.\n", + "Preparing to unpack .../06-libmetis5_5.1.0.dfsg-5_amd64.deb ...\n", + "Unpacking libmetis5:amd64 (5.1.0.dfsg-5) ...\n", + "Selecting previously unselected package libcholmod3:amd64.\n", + "Preparing to unpack .../07-libcholmod3_1%3a5.1.2-2_amd64.deb ...\n", + "Unpacking libcholmod3:amd64 (1:5.1.2-2) ...\n", + "Selecting previously unselected package libfftw3-long3:amd64.\n", + "Preparing to unpack .../08-libfftw3-long3_3.3.7-1_amd64.deb ...\n", + "Unpacking libfftw3-long3:amd64 (3.3.7-1) ...\n", + "Selecting previously unselected package libfftw3-single3:amd64.\n", + "Preparing to unpack .../09-libfftw3-single3_3.3.7-1_amd64.deb ...\n", + "Unpacking libfftw3-single3:amd64 (3.3.7-1) ...\n", + "Selecting previously unselected package libfftw3-mpi3:amd64.\n", + "Preparing to unpack .../10-libfftw3-mpi3_3.3.7-1_amd64.deb ...\n", + "Unpacking libfftw3-mpi3:amd64 (3.3.7-1) ...\n", + "Selecting previously unselected package libscotch-6.0.\n", + "Preparing to unpack .../11-libscotch-6.0_6.0.4.dfsg1-8_amd64.deb ...\n", + "Unpacking libscotch-6.0 (6.0.4.dfsg1-8) ...\n", + "Selecting previously unselected package libptscotch-6.0.\n", + "Preparing to unpack .../12-libptscotch-6.0_6.0.4.dfsg1-8_amd64.deb ...\n", + "Unpacking libptscotch-6.0 (6.0.4.dfsg1-8) ...\n", + "Selecting previously unselected package libsuperlu-dist5.\n", + "Preparing to unpack .../13-libsuperlu-dist5_5.3.0+dfsg1-1_amd64.deb ...\n", + "Unpacking libsuperlu-dist5 (5.3.0+dfsg1-1) ...\n", + "Selecting previously unselected package libhypre-2.13.0:amd64.\n", + "Preparing to unpack .../14-libhypre-2.13.0_2.13.0-2_amd64.deb ...\n", + "Unpacking libhypre-2.13.0:amd64 (2.13.0-2) ...\n", + "Selecting previously unselected package libbtf1:amd64.\n", + "Preparing to unpack .../15-libbtf1_1%3a5.1.2-2_amd64.deb ...\n", + "Unpacking libbtf1:amd64 (1:5.1.2-2) ...\n", + "Selecting previously unselected package libklu1:amd64.\n", + "Preparing to unpack .../16-libklu1_1%3a5.1.2-2_amd64.deb ...\n", + "Unpacking libklu1:amd64 (1:5.1.2-2) ...\n", + "Selecting previously unselected package libscalapack-openmpi2.0.\n", + "Preparing to unpack .../17-libscalapack-openmpi2.0_2.0.2-4_amd64.deb ...\n", + "Unpacking libscalapack-openmpi2.0 (2.0.2-4) ...\n", + "Selecting previously unselected package libmumps-5.1.2:amd64.\n", + "Preparing to unpack .../18-libmumps-5.1.2_5.1.2-4_amd64.deb ...\n", + "Unpacking libmumps-5.1.2:amd64 (5.1.2-4) ...\n", + "Selecting previously unselected package libumfpack5:amd64.\n", + "Preparing to unpack .../19-libumfpack5_1%3a5.1.2-2_amd64.deb ...\n", + "Unpacking libumfpack5:amd64 (1:5.1.2-2) ...\n", + "Selecting previously unselected package libpetsc3.7.7:amd64.\n", + "Preparing to unpack .../20-libpetsc3.7.7_3.7.7+dfsg1-2build5_amd64.deb ...\n", + "Unpacking libpetsc3.7.7:amd64 (3.7.7+dfsg1-2build5) ...\n", + "Selecting previously unselected package libparpack2:amd64.\n", + "Preparing to unpack .../21-libparpack2_3.5.0+real-2_amd64.deb ...\n", + "Unpacking libparpack2:amd64 (3.5.0+real-2) ...\n", + "Selecting previously unselected package libslepc3.7.4.\n", + "Preparing to unpack .../22-libslepc3.7.4_3.7.4+dfsg1-2build8_amd64.deb ...\n", + "Unpacking libslepc3.7.4 (3.7.4+dfsg1-2build8) ...\n", + "Selecting previously unselected package libdolfin2019.1:amd64.\n", + "Preparing to unpack .../23-libdolfin2019.1_2019.1.0-1~ppa1~bionic4_amd64.deb ...\n", + "Unpacking libdolfin2019.1:amd64 (2019.1.0-1~ppa1~bionic4) ...\n", + "Selecting previously unselected package libeigen3-dev.\n", + "Preparing to unpack .../24-libeigen3-dev_3.3.4-4_all.deb ...\n", + "Unpacking libeigen3-dev (3.3.4-4) ...\n", + "Selecting previously unselected package libhdf5-openmpi-dev.\n", + "Preparing to unpack .../25-libhdf5-openmpi-dev_1.10.0-patch1+docs-4_amd64.deb ...\n", + "Unpacking libhdf5-openmpi-dev (1.10.0-patch1+docs-4) ...\n", + "Selecting previously unselected package libhdf5-mpi-dev.\n", + "Preparing to unpack .../26-libhdf5-mpi-dev_1.10.0-patch1+docs-4_amd64.deb ...\n", + "Unpacking libhdf5-mpi-dev (1.10.0-patch1+docs-4) ...\n", + "Selecting previously unselected package libcxsparse3:amd64.\n", + "Preparing to unpack .../27-libcxsparse3_1%3a5.1.2-2_amd64.deb ...\n", + "Unpacking libcxsparse3:amd64 (1:5.1.2-2) ...\n", + "Selecting previously unselected package libgraphblas1:amd64.\n", + "Preparing to unpack .../28-libgraphblas1_1%3a5.1.2-2_amd64.deb ...\n", + "Unpacking libgraphblas1:amd64 (1:5.1.2-2) ...\n", + "Selecting previously unselected package libldl2:amd64.\n", + "Preparing to unpack .../29-libldl2_1%3a5.1.2-2_amd64.deb ...\n", + "Unpacking libldl2:amd64 (1:5.1.2-2) ...\n", + "Selecting previously unselected package librbio2:amd64.\n", + "Preparing to unpack .../30-librbio2_1%3a5.1.2-2_amd64.deb ...\n", + "Unpacking librbio2:amd64 (1:5.1.2-2) ...\n", + "Selecting previously unselected package libspqr2:amd64.\n", + "Preparing to unpack .../31-libspqr2_1%3a5.1.2-2_amd64.deb ...\n", + "Unpacking libspqr2:amd64 (1:5.1.2-2) ...\n", + "Selecting previously unselected package libblas-dev:amd64.\n", + "Preparing to unpack .../32-libblas-dev_3.7.1-4ubuntu1_amd64.deb ...\n", + "Unpacking libblas-dev:amd64 (3.7.1-4ubuntu1) ...\n", + "Selecting previously unselected package libsuitesparse-dev:amd64.\n", + "Preparing to unpack .../33-libsuitesparse-dev_1%3a5.1.2-2_amd64.deb ...\n", + "Unpacking libsuitesparse-dev:amd64 (1:5.1.2-2) ...\n", + "Selecting previously unselected package libscotch-dev.\n", + "Preparing to unpack .../34-libscotch-dev_6.0.4.dfsg1-8_amd64.deb ...\n", + "Unpacking libscotch-dev (6.0.4.dfsg1-8) ...\n", + "Selecting previously unselected package python3-mpmath.\n", + "Preparing to unpack .../35-python3-mpmath_1.0.0-1_all.deb ...\n", + "Unpacking python3-mpmath (1.0.0-1) ...\n", + "Selecting previously unselected package python3-sympy.\n", + "Preparing to unpack .../36-python3-sympy_1.1.1-5_all.deb ...\n", + "Unpacking python3-sympy (1.1.1-5) ...\n", + "Selecting previously unselected package python3-pkg-resources.\n", + "Preparing to unpack .../37-python3-pkg-resources_39.0.1-2_all.deb ...\n", + "Unpacking python3-pkg-resources (39.0.1-2) ...\n", + "Selecting previously unselected package python3-fiat.\n", + "Preparing to unpack .../38-python3-fiat_2019.1.0-1~ppa1~bionic1_all.deb ...\n", + "Unpacking python3-fiat (2019.1.0-1~ppa1~bionic1) ...\n", + "Selecting previously unselected package python3-ufl.\n", + "Preparing to unpack .../39-python3-ufl_2019.1.0-1~ppa1~bionic1_all.deb ...\n", + "Unpacking python3-ufl (2019.1.0-1~ppa1~bionic1) ...\n", + "Selecting previously unselected package python3-mpi4py.\n", + "Preparing to unpack .../40-python3-mpi4py_2.0.0-3_amd64.deb ...\n", + "Unpacking python3-mpi4py (2.0.0-3) ...\n", + "Selecting previously unselected package python3-dijitso.\n", + "Preparing to unpack .../41-python3-dijitso_2019.1.0-1~ppa1~bionic1_all.deb ...\n", + "Unpacking python3-dijitso (2019.1.0-1~ppa1~bionic1) ...\n", + "Selecting previously unselected package python3-ffc.\n", + "Preparing to unpack .../42-python3-ffc_2019.1.0.post0-1~ppa1~bionic1_all.deb ...\n", + "Unpacking python3-ffc (2019.1.0.post0-1~ppa1~bionic1) ...\n", + "Selecting previously unselected package libspooles2.2:amd64.\n", + "Preparing to unpack .../43-libspooles2.2_2.2-12build1_amd64.deb ...\n", + "Unpacking libspooles2.2:amd64 (2.2-12build1) ...\n", + "Selecting previously unselected package libspooles-dev:amd64.\n", + "Preparing to unpack .../44-libspooles-dev_2.2-12build1_amd64.deb ...\n", + "Unpacking libspooles-dev:amd64 (2.2-12build1) ...\n", + "Selecting previously unselected package libsuperlu-dev:amd64.\n", + "Preparing to unpack .../45-libsuperlu-dev_5.2.1+dfsg1-3_amd64.deb ...\n", + "Unpacking libsuperlu-dev:amd64 (5.2.1+dfsg1-3) ...\n", + "Selecting previously unselected package libhypre-dev:amd64.\n", + "Preparing to unpack .../46-libhypre-dev_2.13.0-2_amd64.deb ...\n", + "Unpacking libhypre-dev:amd64 (2.13.0-2) ...\n", + "Selecting previously unselected package libptscotch-dev.\n", + "Preparing to unpack .../47-libptscotch-dev_6.0.4.dfsg1-8_amd64.deb ...\n", + "Unpacking libptscotch-dev (6.0.4.dfsg1-8) ...\n", + "Selecting previously unselected package libscalapack-openmpi-dev.\n", + "Preparing to unpack .../48-libscalapack-openmpi-dev_2.0.2-4_amd64.deb ...\n", + "Unpacking libscalapack-openmpi-dev (2.0.2-4) ...\n", + "Selecting previously unselected package libscalapack-mpi-dev.\n", + "Preparing to unpack .../49-libscalapack-mpi-dev_2.0.2-4_amd64.deb ...\n", + "Unpacking libscalapack-mpi-dev (2.0.2-4) ...\n", + "Selecting previously unselected package libmumps-dev:amd64.\n", + "Preparing to unpack .../50-libmumps-dev_5.1.2-4_amd64.deb ...\n", + "Unpacking libmumps-dev:amd64 (5.1.2-4) ...\n", + "Selecting previously unselected package libfftw3-quad3:amd64.\n", + "Preparing to unpack .../51-libfftw3-quad3_3.3.7-1_amd64.deb ...\n", + "Unpacking libfftw3-quad3:amd64 (3.3.7-1) ...\n", + "Selecting previously unselected package libfftw3-bin.\n", + "Preparing to unpack .../52-libfftw3-bin_3.3.7-1_amd64.deb ...\n", + "Unpacking libfftw3-bin (3.3.7-1) ...\n", + "Selecting previously unselected package libfftw3-dev:amd64.\n", + "Preparing to unpack .../53-libfftw3-dev_3.3.7-1_amd64.deb ...\n", + "Unpacking libfftw3-dev:amd64 (3.3.7-1) ...\n", + "Selecting previously unselected package libfftw3-mpi-dev:amd64.\n", + "Preparing to unpack .../54-libfftw3-mpi-dev_3.3.7-1_amd64.deb ...\n", + "Unpacking libfftw3-mpi-dev:amd64 (3.3.7-1) ...\n", + "Selecting previously unselected package libpetsc3.7.7-dev:amd64.\n", + "Preparing to unpack .../55-libpetsc3.7.7-dev_3.7.7+dfsg1-2build5_amd64.deb ...\n", + "Unpacking libpetsc3.7.7-dev:amd64 (3.7.7+dfsg1-2build5) ...\n", + "Selecting previously unselected package libarpack2-dev:amd64.\n", + "Preparing to unpack .../56-libarpack2-dev_3.5.0+real-2_amd64.deb ...\n", + "Unpacking libarpack2-dev:amd64 (3.5.0+real-2) ...\n", + "Selecting previously unselected package libparpack2-dev:amd64.\n", + "Preparing to unpack .../57-libparpack2-dev_3.5.0+real-2_amd64.deb ...\n", + "Unpacking libparpack2-dev:amd64 (3.5.0+real-2) ...\n", + "Selecting previously unselected package libslepc3.7.4-dev.\n", + "Preparing to unpack .../58-libslepc3.7.4-dev_3.7.4+dfsg1-2build8_amd64.deb ...\n", + "Unpacking libslepc3.7.4-dev (3.7.4+dfsg1-2build8) ...\n", + "Selecting previously unselected package libdolfin-dev.\n", + "Preparing to unpack .../59-libdolfin-dev_2019.1.0-1~ppa1~bionic4_amd64.deb ...\n", + "Unpacking libdolfin-dev (2019.1.0-1~ppa1~bionic4) ...\n", + "Selecting previously unselected package python3-ply.\n", + "Preparing to unpack .../60-python3-ply_3.11-1_all.deb ...\n", + "Unpacking python3-ply (3.11-1) ...\n", + "Selecting previously unselected package pybind11-dev.\n", + "Preparing to unpack .../61-pybind11-dev_2.2.3-1fenics1bionic1_all.deb ...\n", + "Unpacking pybind11-dev (2.2.3-1fenics1bionic1) ...\n", + "Selecting previously unselected package python3-pybind11.\n", + "Preparing to unpack .../62-python3-pybind11_2.2.3-1fenics1bionic1_all.deb ...\n", + "Unpacking python3-pybind11 (2.2.3-1fenics1bionic1) ...\n", + "Selecting previously unselected package python3-six.\n", + "Preparing to unpack .../63-python3-six_1.11.0-2_all.deb ...\n", + "Unpacking python3-six (1.11.0-2) ...\n", + "Selecting previously unselected package python3-petsc4py.\n", + "Preparing to unpack .../64-python3-petsc4py_3.7.0-3build2_amd64.deb ...\n", + "Unpacking python3-petsc4py (3.7.0-3build2) ...\n", + "Selecting previously unselected package python3-slepc4py.\n", + "Preparing to unpack .../65-python3-slepc4py_3.7.0-3build1_amd64.deb ...\n", + "Unpacking python3-slepc4py (3.7.0-3build1) ...\n", + "Selecting previously unselected package python3-pkgconfig.\n", + "Preparing to unpack .../66-python3-pkgconfig_1.3.1-1_all.deb ...\n", + "Unpacking python3-pkgconfig (1.3.1-1) ...\n", + "Selecting previously unselected package python3-dolfin.\n", + "Preparing to unpack .../67-python3-dolfin_2019.1.0-1~ppa1~bionic4_amd64.deb ...\n", + "Unpacking python3-dolfin (2019.1.0-1~ppa1~bionic4) ...\n", + "Selecting previously unselected package dolfin-bin.\n", + "Preparing to unpack .../68-dolfin-bin_2019.1.0-1~ppa1~bionic4_all.deb ...\n", + "Unpacking dolfin-bin (2019.1.0-1~ppa1~bionic4) ...\n", + "Selecting previously unselected package dolfin-doc.\n", + "Preparing to unpack .../69-dolfin-doc_2019.1.0-1~ppa1~bionic4_all.deb ...\n", + "Unpacking dolfin-doc (2019.1.0-1~ppa1~bionic4) ...\n", + "Selecting previously unselected package python-ufl-doc.\n", + "Preparing to unpack .../70-python-ufl-doc_2019.1.0-1~ppa1~bionic1_all.deb ...\n", + "Unpacking python-ufl-doc (2019.1.0-1~ppa1~bionic1) ...\n", + "Selecting previously unselected package libtet1.5:amd64.\n", + "Preparing to unpack .../71-libtet1.5_1.5.0-4_amd64.deb ...\n", + "Unpacking libtet1.5:amd64 (1.5.0-4) ...\n", + "Selecting previously unselected package libmshr2019.1:amd64.\n", + "Preparing to unpack .../72-libmshr2019.1_2019.1.0+full1-1~ppa1~bionic1_amd64.deb ...\n", + "Unpacking libmshr2019.1:amd64 (2019.1.0+full1-1~ppa1~bionic1) ...\n", + "Selecting previously unselected package libproj-dev:amd64.\n", + "Preparing to unpack .../73-libproj-dev_4.9.3-2_amd64.deb ...\n", + "Unpacking libproj-dev:amd64 (4.9.3-2) ...\n", + "Selecting previously unselected package libmshr-dev.\n", + "Preparing to unpack .../74-libmshr-dev_2019.1.0+full1-1~ppa1~bionic1_amd64.deb ...\n", + "Unpacking libmshr-dev (2019.1.0+full1-1~ppa1~bionic1) ...\n", + "Selecting previously unselected package python3-mshr.\n", + "Preparing to unpack .../75-python3-mshr_2019.1.0+full1-1~ppa1~bionic1_amd64.deb ...\n", + "Unpacking python3-mshr (2019.1.0+full1-1~ppa1~bionic1) ...\n", + "Selecting previously unselected package fenics:amd64.\n", + "Preparing to unpack .../76-fenics_1%3a2019.1.0.1~ppa1~bionic1_amd64.deb ...\n", + "Unpacking fenics:amd64 (1:2019.1.0.1~ppa1~bionic1) ...\n", + "Setting up python3-pkgconfig (1.3.1-1) ...\n", + "Setting up libbtf1:amd64 (1:5.1.2-2) ...\n", + "Setting up libldl2:amd64 (1:5.1.2-2) ...\n", + "Setting up libscotch-6.0 (6.0.4.dfsg1-8) ...\n", + "Setting up libcxsparse3:amd64 (1:5.1.2-2) ...\n", + "Setting up libproj-dev:amd64 (4.9.3-2) ...\n", + "Setting up python-ufl-doc (2019.1.0-1~ppa1~bionic1) ...\n", + "Setting up libtet1.5:amd64 (1.5.0-4) ...\n", + "Setting up libscalapack-openmpi2.0 (2.0.2-4) ...\n", + "Setting up libeigen3-dev (3.3.4-4) ...\n", + "Setting up libgraphblas1:amd64 (1:5.1.2-2) ...\n", + "Setting up python3-six (1.11.0-2) ...\n", + "Setting up libptscotch-6.0 (6.0.4.dfsg1-8) ...\n", + "Setting up libparpack2:amd64 (3.5.0+real-2) ...\n", + "Setting up libspooles2.2:amd64 (2.2-12build1) ...\n", + "Setting up python3-pkg-resources (39.0.1-2) ...\n", + "Setting up python3-mpmath (1.0.0-1) ...\n", + "Setting up python3-ufl (2019.1.0-1~ppa1~bionic1) ...\n", + "Setting up libscalapack-openmpi-dev (2.0.2-4) ...\n", + "Setting up libhdf5-openmpi-dev (1.10.0-patch1+docs-4) ...\n", + "update-alternatives: using /usr/bin/h5pcc.openmpi to provide /usr/bin/h5pcc (h5pcc) in auto mode\n", + "Setting up libfftw3-quad3:amd64 (3.3.7-1) ...\n", + "Setting up libblas3:amd64 (3.7.1-4ubuntu1) ...\n", + "Setting up libscotch-dev (6.0.4.dfsg1-8) ...\n", + "Setting up libsuperlu-dist5 (5.3.0+dfsg1-1) ...\n", + "Setting up libsuitesparseconfig5:amd64 (1:5.1.2-2) ...\n", + "Setting up libmetis5:amd64 (5.1.0.dfsg-5) ...\n", + "Setting up pybind11-dev (2.2.3-1fenics1bionic1) ...\n", + "Setting up libcolamd2:amd64 (1:5.1.2-2) ...\n", + "Setting up libarpack2-dev:amd64 (3.5.0+real-2) ...\n", + "Setting up libccolamd2:amd64 (1:5.1.2-2) ...\n", + "Setting up libfftw3-single3:amd64 (3.3.7-1) ...\n", + "Setting up python3-mpi4py (2.0.0-3) ...\n", + "Setting up python3-ply (3.11-1) ...\n", + "Setting up python3-sympy (1.1.1-5) ...\n", + "Setting up libspooles-dev:amd64 (2.2-12build1) ...\n", + "Setting up libfftw3-long3:amd64 (3.3.7-1) ...\n", + "Setting up python3-pybind11 (2.2.3-1fenics1bionic1) ...\n", + "Setting up python3-fiat (2019.1.0-1~ppa1~bionic1) ...\n", + "Setting up libparpack2-dev:amd64 (3.5.0+real-2) ...\n", + "Setting up libfftw3-bin (3.3.7-1) ...\n", + "Setting up libmumps-5.1.2:amd64 (5.1.2-4) ...\n", + "Setting up libptscotch-dev (6.0.4.dfsg1-8) ...\n", + "Setting up libblas-dev:amd64 (3.7.1-4ubuntu1) ...\n", + "Setting up libscalapack-mpi-dev (2.0.2-4) ...\n", + "Setting up libhypre-2.13.0:amd64 (2.13.0-2) ...\n", + "Setting up librbio2:amd64 (1:5.1.2-2) ...\n", + "Setting up libcamd2:amd64 (1:5.1.2-2) ...\n", + "Setting up libfftw3-mpi3:amd64 (3.3.7-1) ...\n", + "Setting up libmumps-dev:amd64 (5.1.2-4) ...\n", + "Setting up python3-dijitso (2019.1.0-1~ppa1~bionic1) ...\n", + "Setting up libhdf5-mpi-dev (1.10.0-patch1+docs-4) ...\n", + "Setting up libamd2:amd64 (1:5.1.2-2) ...\n", + "Setting up libsuperlu-dev:amd64 (5.2.1+dfsg1-3) ...\n", + "Setting up libfftw3-dev:amd64 (3.3.7-1) ...\n", + "Setting up python3-ffc (2019.1.0.post0-1~ppa1~bionic1) ...\n", + "update-alternatives: using /usr/lib/python3/dist-packages/ffc/backends/ufc/ufc.h to provide /usr/include/ufc.h (ufc.h) in auto mode\n", + "Setting up libfftw3-mpi-dev:amd64 (3.3.7-1) ...\n", + "Setting up libhypre-dev:amd64 (2.13.0-2) ...\n", + "Setting up libklu1:amd64 (1:5.1.2-2) ...\n", + "Setting up libcholmod3:amd64 (1:5.1.2-2) ...\n", + "Setting up libspqr2:amd64 (1:5.1.2-2) ...\n", + "Setting up libumfpack5:amd64 (1:5.1.2-2) ...\n", + "Setting up libpetsc3.7.7:amd64 (3.7.7+dfsg1-2build5) ...\n", + "update-alternatives: using /usr/lib/x86_64-linux-gnu/libpetsc_real.so.3.7.7 to provide /usr/lib/x86_64-linux-gnu/libpetsc.so.3.7 (libpetsc.so.3.7) in auto mode\n", + "update-alternatives: using /usr/lib/x86_64-linux-gnu/libpetsc_real.so.3.7.7 to provide /usr/lib/x86_64-linux-gnu/libpetsc_real.so.3.7 (libpetsc_real.so.3.7) in auto mode\n", + "Setting up python3-petsc4py (3.7.0-3build2) ...\n", + "Setting up libsuitesparse-dev:amd64 (1:5.1.2-2) ...\n", + "Setting up libpetsc3.7.7-dev:amd64 (3.7.7+dfsg1-2build5) ...\n", + "update-alternatives: error: no alternatives for petsc\n", + "update-alternatives: using /usr/lib/petscdir/3.7.7/x86_64-linux-gnu-real to provide /usr/lib/petsc (petsc) in auto mode\n", + "update-alternatives: using /usr/lib/x86_64-linux-gnu/libpetsc_real.so.3.7.7 to provide /usr/lib/x86_64-linux-gnu/libpetsc_real.so (libpetsc_real.so) in auto mode\n", + "update-alternatives: using /usr/lib/petscdir/3.7.7/x86_64-linux-gnu-real to provide /usr/lib/petscdir/3.7 (petsc3.7) in auto mode\n", + "update-alternatives: using /usr/lib/petscdir/3.7.7/x86_64-linux-gnu-real to provide /usr/lib/petscdir/3.7-real (petsc3.7-real) in auto mode\n", + "Setting up libslepc3.7.4 (3.7.4+dfsg1-2build8) ...\n", + "update-alternatives: using /usr/lib/x86_64-linux-gnu/libslepc_real.so.3.7.4 to provide /usr/lib/x86_64-linux-gnu/libslepc.so.3.7 (libslepc.so.3.7) in auto mode\n", + "update-alternatives: using /usr/lib/x86_64-linux-gnu/libslepc_real.so.3.7.4 to provide /usr/lib/x86_64-linux-gnu/libslepc_real.so.3.7 (libslepc_real.so.3.7) in auto mode\n", + "Setting up python3-slepc4py (3.7.0-3build1) ...\n", + "Setting up libslepc3.7.4-dev (3.7.4+dfsg1-2build8) ...\n", + "update-alternatives: error: no alternatives for slepc\n", + "update-alternatives: using /usr/lib/slepcdir/3.7.4/x86_64-linux-gnu-real to provide /usr/lib/slepc (slepc) in auto mode\n", + "update-alternatives: using /usr/lib/x86_64-linux-gnu/libslepc_real.so.3.7.4 to provide /usr/lib/x86_64-linux-gnu/libslepc_real.so (libslepc_real.so) in auto mode\n", + "update-alternatives: using /usr/lib/slepcdir/3.7.4/x86_64-linux-gnu-real to provide /usr/lib/slepcdir/3.7 (slepc3.7) in auto mode\n", + "update-alternatives: using /usr/lib/slepcdir/3.7.4/x86_64-linux-gnu-real to provide /usr/lib/slepcdir/3.7-real (slepc3.7-real) in auto mode\n", + "Setting up libdolfin2019.1:amd64 (2019.1.0-1~ppa1~bionic4) ...\n", + "Setting up libdolfin-dev (2019.1.0-1~ppa1~bionic4) ...\n", + "Setting up libmshr2019.1:amd64 (2019.1.0+full1-1~ppa1~bionic1) ...\n", + "Setting up python3-dolfin (2019.1.0-1~ppa1~bionic4) ...\n", + "Setting up dolfin-doc (2019.1.0-1~ppa1~bionic4) ...\n", + "Setting up libmshr-dev (2019.1.0+full1-1~ppa1~bionic1) ...\n", + "Setting up dolfin-bin (2019.1.0-1~ppa1~bionic4) ...\n", + "Setting up python3-mshr (2019.1.0+full1-1~ppa1~bionic1) ...\n", + "Setting up fenics:amd64 (1:2019.1.0.1~ppa1~bionic1) ...\n", + "Processing triggers for man-db (2.8.3-2ubuntu0.1) ...\n", + "Processing triggers for libc-bin (2.27-3ubuntu1) ...\n", + "/sbin/ldconfig.real: /usr/local/lib/python3.6/dist-packages/ideep4py/lib/libmkldnn.so.0 is not a symbolic link\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "gnO3lhAigLev", + "colab_type": "text" + }, + "source": [ + "# **Introduction**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "l5zMzgPlRAF6", + "colab_type": "text" + }, + "source": [ + "The Stokes equations take the form\n", + "\n", + "$\\nabla p -\\Delta u = f,\\quad \\nabla \\cdot u=0$\n", + "\n", + "together with suitable boundary conditions.\n", + "\n", + "Here we present a FEniCS implementation of a mixed finite element method to solve the Stokes equations in 2D. The solution is visualized using FEniCS plotting functions, and is also exported as pvd-files which can be visualized in Paraview.\n", + "\n", + "To derive the weak form of the equations, multiply the momentum equation by $v\\in V$ and the continuity equation by $q\\in Q$, and then integrate over the domain $\\Omega$ and use Green's formula\n", + "$\n", + "(\\nabla p -\\Delta u,v) = -(p,\\nabla \\cdot v) + (\\nabla u, \\nabla v) \n", + "+ _{\\Gamma}\n", + "$\n", + "\n", + "We seek a finite element approximation $(u,p)\\in V\\times Q$ such that \n", + "\n", + "$- (p,\\nabla \\cdot v) + (\\nabla u,\\nabla v) + (\\nabla \\cdot u, q) \n", + "+ _{\\partial \\Omega} = (f,v)$\n", + "\n", + "for all test functions $(v,q) \\in V\\times Q$. \n", + "\n", + "$\n", + "(v,w) = \\int_{\\Omega} v\\cdot w ~dx, \\quad \n", + "_{\\partial \\Omega} = \\int_{\\partial \\Omega} v\\cdot w~ds\n", + "$\n", + "\n", + "We divide the boundary into $\\partial \\Omega=\\Gamma_D \\cup \\Gamma_N$, with the different boundary conditions\n", + "\n", + "$\n", + "u = g_D,\\quad x\\in \\Gamma_D,\n", + "$\n", + "\n", + "$\n", + "-\\nu \\nabla u\\cdot n + pn = g_N, \\quad x\\in \\Gamma_N,\n", + "$\n", + "\n", + "For $x\\in \\Gamma_D$ the test function $v=0$. Hence, with $g_N=0$ the boundary term is zero. \n", + "\n", + "The equations can be expressed in residual form\n", + "\n", + "$r(u,p;v,q) = - (p,\\nabla \\cdot v) + (\\nabla u,\\nabla v) + (\\nabla \\cdot u, q) - (f,v)$\n", + "\n", + "We use inf-sup stable Taylor-Hood approximation spaces, \n", + "and to implement the velocity boundary conditions we use a penalty formulation, with a penalty parameter $\\gamma = C/h$, with $C>0$ a constant and $h$ the local mesh size. At outflow we use a \"do nothing\" stress free boundary condition. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jOQvukXZq5U5", + "colab_type": "text" + }, + "source": [ + "# **Method**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wu2fugJ32t8m", + "colab_type": "text" + }, + "source": [ + "**Define domain and mesh**" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "zAtVmoZ8jekA", + "colab_type": "code", + "colab": {} + }, + "source": [ + "def grid():\n", + " domain = Rectangle(Point(0,0), Point(L,H)) - Rectangle(Point(1.57,1.57), Point(10.43,10.43))\n", + "\n", + " for i in range (1,4):\n", + " a = 1.57+i*((8.86+0.8)/4)\n", + " domain += Rectangle(Point(a-0.8,1), Point(a,11))\n", + " domain += Rectangle(Point(1,a-0.8), Point(11,a))\n", + "\n", + " # domain += Rectangle(Point(0,5), Point(12,5.5))\n", + " \n", + " return domain\n", + "\n", + "def skewed():\n", + " domain = Rectangle(Point(0,0), Point(12,12))\n", + " alpha = math.radians(35)\n", + " str_w = 0.6\n", + " shape_w = 1.2\n", + " shape_h = shape_w*tan(alpha)\n", + " dhor= str_w/(cos(alpha)*sin(alpha))\n", + " dver = str_w/(2*cos(alpha))\n", + " print(shape_h)\n", + " for i in range (0,7):\n", + " a = 2.5\n", + " b = 1.57+i*(shape_h+dver)\n", + " if (i%2 == 0):\n", + " num_shapes = 3\n", + " else:\n", + " num_shapes = 2\n", + " a += (shape_w+dhor/2)\n", + " for j in range(0,num_shapes):\n", + " domain -= Polygon([Point(a,b),Point(a+shape_w,b+shape_h),Point(a,b+2*shape_h),Point(a-shape_w,b+shape_h)])\n", + " a += 2*shape_w + dhor\n", + " \n", + " \n", + " # domain += (Rectangle(Point(0,0), Point(L,H)) - Rectangle(Point(1,1), Point(11,11)))\n", + " # domain -= (Rectangle(Point(0,-5.5),Point(12,0)))\n", + " # domain -= (Rectangle(Point(0,12), Point(12,20)))\n", + " return domain\n", + "\n", + "# domain = skewed()\n", + "\n", + "\n", + "def concentric():\n", + " domain = Rectangle(Point(0,0), Point(L,H))\n", + " \n", + " for i in range (0,12):\n", + " alpha = i*2*pi/12\n", + " beta = (i+1)*2*pi/12#-(0.2*6)\n", + " domain -= Polygon([Point(6+5*cos(alpha), 6+5*sin(alpha)),Point(6+5*cos(beta), 6+5*sin(beta)),Point(6+3*cos(beta), 6+3*sin(beta)),Point(6+3*cos(alpha), 6+3*sin(alpha))])\n", + "\n", + " for i in range (0,12):\n", + " alpha = i*2*pi/12\n", + " dx = cos(alpha-pi/2) * 0.4\n", + " dy = sin(alpha-pi/2) * 0.4\n", + " domain += Polygon([Point(6+6*cos(alpha)+dx,6+6*sin(alpha)+dy),Point(6+6*cos(alpha)-dx,6+6*sin(alpha)-dy),Point(6-dx,6-dy),Point(6+dx,6+dy)])\n", + "\n", + " domain -= Circle(Point(6,6), 2.0)\n", + "\n", + " for i in range (0,4):\n", + " alpha = i*2*pi/4\n", + " dx = cos(alpha-pi/2) * 0.4\n", + " dy = sin(alpha-pi/2) * 0.4\n", + " domain += Polygon([Point(6+2.6*cos(alpha)+dx,6+2.6*sin(alpha)+dy),Point(6+2.6*cos(alpha)-dx,6+2.6*sin(alpha)-dy),Point(6-dx,6-dy),Point(6+dx,6+dy)])\n", + "\n", + " return domain" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "_KBWOVATuBQz", + "colab_type": "code", + "outputId": "feb4fd09-cd92-41ad-8d10-651f0775ee62", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 282 + } + }, + "source": [ + "# Define rectangular domain \n", + "L = 12\n", + "H = 12\n", + "\n", + "# Define subdomains (for boundary conditions)\n", + "class Left(SubDomain):\n", + " def inside(self, x, on_boundary):\n", + " return near(x[0], 0.0) \n", + "\n", + "class Right(SubDomain):\n", + " def inside(self, x, on_boundary):\n", + " return near(x[0], L)\n", + "\n", + "class Lower(SubDomain):\n", + " def inside(self, x, on_boundary):\n", + " return near(x[1], 0.0)\n", + "\n", + "class Upper(SubDomain):\n", + " def inside(self, x, on_boundary):\n", + " return near(x[1], H)\n", + "\n", + "class Inlet(SubDomain):\n", + " def inside(self, x, on_boundary):\n", + " on = near(x[0], 0.0) or near(x[1], 0.0)\n", + " return on\n", + "\n", + "class Outlet(SubDomain):\n", + " def inside(self, x, on_boundary):\n", + " on = near(x[0], L) or near(x[1], H)\n", + " return on\n", + "\n", + "class Building(SubDomain):\n", + " def inside(self, x, on_boundary):\n", + " on = (on_boundary and not (near(x[0],0.0) or near(x[0], L)\\\n", + " or near(x[1], 0.0) or near(x[1],H)))\n", + " return on\n", + " \n", + "building = Building()\n", + "inlet_bdry = Inlet()\n", + "outlet_bdry = Outlet()\n", + "\n", + "#files to save meshes\n", + "saved_grid = File(\"grid.xml\")\n", + "saved_skewed = File(\"skewed.xml\")\n", + "saved_circle = File(\"circle.xml\")\n", + "\n", + "# Generate mesh (uncomment choice) \n", + "resolution = 64\n", + "\n", + "# grid mesh\n", + "try:\n", + " saved_grid >> mesh\n", + "except:\n", + " domain = grid()\n", + " mesh = generate_mesh(domain, resolution)\n", + " saved_grid << mesh\n", + "\n", + "# skewed mesh\n", + "# try:\n", + "# saved_skewed >> mesh\n", + "# except:\n", + "# domain = skewed()\n", + "# mesh = generate_mesh(domain, resolution)\n", + "# saved_skewed << mesh\n", + "\n", + "# circular mesh\n", + "# try:\n", + "# saved_circle >> mesh\n", + "# except:\n", + "# domain = concentric()\n", + "# mesh = generate_mesh(domain, resolution)\n", + "# saved_circle << mesh\n", + "\n", + "# Local mesh refinement (specified by a cell marker)\n", + "no_levels = 0\n", + "for i in range(0,no_levels):\n", + " cell_marker = MeshFunction(\"bool\", mesh, mesh.topology().dim())\n", + " for cell in cells(mesh):\n", + " cell_marker[cell] = False\n", + " p = cell.midpoint()\n", + " if p.distance(Point(xc, yc)) < 1.0:\n", + " cell_marker[cell] = True\n", + " mesh = refine(mesh, cell_marker)\n", + "\n", + "# Define mesh functions (for boundary conditions)\n", + "boundaries = MeshFunction(\"size_t\", mesh, mesh.topology().dim()-1)\n", + "boundaries.set_all(0)\n", + "inlet_bdry.mark(boundaries, 1)\n", + "outlet_bdry.mark(boundaries, 2)\n", + "building.mark(boundaries, 3)\n", + "\n", + "# for visualisation of different boundaries\n", + "# file = File(\"bres/boundaries.pvd\")\n", + "# file << boundaries\n", + "# !tar -czvf bres.tar.gz bres\n", + "\n", + "plt.figure()\n", + "plot(mesh)\n", + "plt.show()" + ], + "execution_count": 4, + "outputs": [ + { + "output_type": "stream", + "text": [ + "0.8402490458516516\n" + ], + "name": "stdout" + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-le1iA8u3fS-", + "colab_type": "text" + }, + "source": [ + "**Define finite element approximation spaces**" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "uWeyBcYXuaPq", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 85 + }, + "outputId": "e0e24589-eb70-4349-a4da-d99c472ac841" + }, + "source": [ + "# Generate mixed finite element spaces (for velocity and pressure)\n", + "VE = VectorElement(\"CG\", mesh.ufl_cell(), 2)\n", + "QE = FiniteElement(\"CG\", mesh.ufl_cell(), 1)\n", + "WE = VE * QE\n", + "\n", + "W = FunctionSpace(mesh, WE)\n", + "V = FunctionSpace(mesh, VE)\n", + "Q = FunctionSpace(mesh, QE)\n", + "\n", + "# Define trial and test functions\n", + "w = Function(W)\n", + "(u, p) = (as_vector((w[0],w[1])), w[2])\n", + "(v, q) = TestFunctions(W) " + ], + "execution_count": 5, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Calling FFC just-in-time (JIT) compiler, this may take some time.\n", + "Calling FFC just-in-time (JIT) compiler, this may take some time.\n", + "Calling FFC just-in-time (JIT) compiler, this may take some time.\n", + "Calling FFC just-in-time (JIT) compiler, this may take some time.\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OKzE7v-B3o9R", + "colab_type": "text" + }, + "source": [ + "**Define boundary conditions**" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "WAsDDvdKujQT", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# inflow and outflow conditions\n", + "XMIN = 0.0; XMAX = L\n", + "YMIN = 0.0; YMAX = H\n", + "uin = Expression((\"1.\", \".5\"), YMAX=YMAX, element = V.ufl_element()) \n", + "#pout = 0.0\n", + "\n", + "# Inflow boundary (ib), outflow boundary (ob) and wall boundary (wb)\n", + "ib = Expression(\"near(x[0],XMIN) || near(x[1],YMIN) ? 1. : 0.\", XMIN=XMIN, YMIN=YMIN, element = Q.ufl_element())\n", + "ob = Expression(\"near(x[0],XMAX) || near(x[1], YMAX) ? 1. : 0.\", XMAX=XMAX, YMAX=YMAX, element = Q.ufl_element()) \n", + "wb = Expression(\"x[0] > XMIN + DOLFIN_EPS && x[0] < XMAX - DOLFIN_EPS && x[1] > YMIN + DOLFIN_EPS && x[1] < YMAX - DOLFIN_EPS? 1. : 0.\", XMIN=XMIN, XMAX=XMAX, YMIN=YMIN,YMAX=YMAX, element = Q.ufl_element())" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SsQLT38gVbn_", + "colab_type": "text" + }, + "source": [ + "# **Results**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "y0EnzPyU46PX", + "colab_type": "text" + }, + "source": [ + "**Define and solve variational problem for velocity field**\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "W-bCOI6LuxFi", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "36aa0775-ee82-4b3c-d2cc-7733cb2b20bc" + }, + "source": [ + "h = CellDiameter(mesh)\n", + "C = 1.0e3\n", + "gamma = C/h\n", + "\n", + "n = FacetNormal(mesh)\n", + "f = Expression((\"0.0\",\"0.0\"), element = V.ufl_element())\n", + "\n", + "# Define variational problem on residual form: r(u,p;v,q) = 0\n", + "residual = ( - p*div(v)*dx + inner(grad(u), grad(v))*dx + div(u)*q*dx + \n", + " gamma*(ib*inner(u - uin, v) + wb*inner(dot(u,n), dot(v,n)))*ds - inner(f, v)*dx )\n", + "\n", + "# Solve algebraic system \n", + "solve(residual == 0, w) " + ], + "execution_count": 33, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Calling FFC just-in-time (JIT) compiler, this may take some time.\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nl9EBgZU6tMZ", + "colab_type": "text" + }, + "source": [ + "**Visualize solution and export files**" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "JUfvsjZPvBc0", + "colab_type": "code", + "outputId": "aac12940-1031-494d-8ec1-aa9fe6fdf2fa", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 732 + } + }, + "source": [ + "!rm results-NS/*\n", + "\n", + "# Open files to export solution to Paraview\n", + "file_u = File(\"results-Stokes/u.pvd\")\n", + "file_p = File(\"results-Etokes/p.pvd\")\n", + "\n", + "u1 = project(u, V)\n", + "p1 = project(p, Q)\n", + "\n", + "# Save solution to file\n", + "file_u << u1\n", + "file_p << p1\n", + "\n", + "# Plot solution\n", + "plt.figure()\n", + "plot(u1, title=\"Velocity\")\n", + "\n", + "plt.figure()\n", + "plot(p1, title=\"Pressure\")\n", + " \n", + "plt.show()\n", + "\n", + "# Export files\n", + "#!tar -czvf results-Stokes.tar.gz results-NS\n", + "#files.download('results-Stokes.tar.gz')" + ], + "execution_count": 8, + "outputs": [ + { + "output_type": "stream", + "text": [ + "rm: cannot remove 'results-NS/*': No such file or directory\n", + "Calling FFC just-in-time (JIT) compiler, this may take some time.\n", + "Calling FFC just-in-time (JIT) compiler, this may take some time.\n", + "Calling FFC just-in-time (JIT) compiler, this may take some time.\n", + "Calling FFC just-in-time (JIT) compiler, this may take some time.\n", + "Calling FFC just-in-time (JIT) compiler, this may take some time.\n", + "Calling FFC just-in-time (JIT) compiler, this may take some time.\n", + "Calling FFC just-in-time (JIT) compiler, this may take some time.\n", + "Calling FFC just-in-time (JIT) compiler, this may take some time.\n", + "Calling FFC just-in-time (JIT) compiler, this may take some time.\n", + "Calling FFC just-in-time (JIT) compiler, this may take some time.\n" + ], + "name": "stdout" + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JNAHQTEooEk6", + "colab_type": "text" + }, + "source": [ + "**Time stepping for pollution concentration**" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "lfmfkVldUu8j", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 252 + }, + "outputId": "79b756ab-5205-44cf-b576-802370f48712" + }, + "source": [ + "# Define function space for system of concentrations\n", + "element = FiniteElement(\"P\", triangle, 1)\n", + "Vc = FunctionSpace(mesh, element)\n", + "\n", + "vc = TestFunctions(Vc) #test function\n", + "fc = Constant(0.1) #source\n", + "dt = 0.5*mesh.hmin() #time step\n", + "k = Constant(dt)\n", + "c = Function(Vc) #concentration\n", + "c_n = Function(Vc) #concentration previous timestep\n", + "\n", + "#variational problem:\n", + "F = ((c-c_n)/k)*vc*dx + (u+grad(c))*vc*dx \\\n", + "+ dot(fc*u,grad(c))*dot(u,grad(vc))*dx - fc*vc*dx\n", + "\n", + "#time stepping\n", + "file_c = File(\"results/c.pvd\")\n", + "t=0\n", + "num_steps = int(5/dt)\n", + "for n in range(num_steps):\n", + " print(n+\"\\n\")\n", + " # Update current time\n", + " t += dt\n", + " # Solve variational problem for time step\n", + " solve(F == 0, c)\n", + " # Save solution to file (VTK)\n", + " file_c << (c, t)\n", + " # Update previous solution\n", + " uc_n.assign(uc)\n", + "\n" + ], + "execution_count": 46, + "outputs": [ + { + "output_type": "error", + "ename": "TypeError", + "evalue": "ignored", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;31m#variational problem:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 12\u001b[0;31m \u001b[0mF\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mc\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mc_n\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mvc\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mdx\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mu\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mgrad\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mvc\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mdx\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mdot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfc\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mu\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mgrad\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mdot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mu\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mgrad\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mdx\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mfc\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mvc\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mdx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 13\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[0;31m#time stepping\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mTypeError\u001b[0m: can't multiply sequence by non-int of type 'Division'" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_4GLBv0zWr7m", + "colab_type": "text" + }, + "source": [ + "# **Discussion**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6bcsDSoRXHZe", + "colab_type": "text" + }, + "source": [ + "A Taylor-Hood mixed finite element method was implemented in FEniCS to solve the Stokes equations in 2D. The method was tested for the model problem of flow past a number of circular obstacles, and the solution behaved as expected. " + ] + } + ] +} \ No newline at end of file