diff --git a/comparing_elements.ipynb b/comparing_elements.ipynb index 2ffea19..a15dda5 100644 --- a/comparing_elements.ipynb +++ b/comparing_elements.ipynb @@ -1,1283 +1,1283 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "51e6f0eb", - "metadata": { - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "# The Stokes equations" - ] - }, - { - "cell_type": "markdown", - "id": "12afe587-a28c-.x.petsc_vecc0..x.petsc_vec_vecc_vec8a4be7", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "source": [ - "Authors: J.S. Dokken, M.W. Scroggs, S. Roggendorf" - ] - }, - { - "cell_type": "markdown", - "id": "120e279b", - "metadata": { - "tags": [] - }, - "source": [ - "\\begin{align*}\n", - "-\\Delta \\mathbf{u} + \\nabla p &= \\mathbf{f} &&\\text{in } \\Omega,\\\\\n", - "\\nabla \\cdot \\mathbf{u} &= 0 &&\\text{in } \\Omega,\\\\\n", - "\\mathbf{u} &= \\mathbf{0}&&\\text{on } \\partial\\Omega.\n", - "\\end{align*}" - ] - }, - { - "cell_type": "markdown", - "id": "6ad7e66d-a6e9-4670-bb9c-a3d2fddff7cf", - "metadata": { - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "source": [ - "In this tutorial you will learn how to:\n", - "\n", - "- Create manufactured solutions with UFL\n", - "- Use block-preconditioners" - ] - }, - { - "cell_type": "markdown", - "id": "1d0f852b-1099-4f9d-b60a-045a17cbb1c2", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "source": [ - "## Imports" - ] - }, - { - "cell_type": "markdown", - "id": "026d6390", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "source": [ - "We start by importing most of the modules we will use in this tutorial." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "eb7ac5d2", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "from mpi4py import MPI\n", - "from petsc4py import PETSc\n", - "\n", - "import matplotlib.pylab as plt\n", - "import numpy as np\n", - "\n", - "import basix.ufl\n", - "import dolfinx.fem.petsc\n", - "from dolfinx import fem, mesh" - ] - }, - { - "cell_type": "markdown", - "id": "56b7f168", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "source": [ - "However, we pay special attention to `UFL`, the unified form language package, which is used to represent variational forms.\n", - "As we will dependend on many functions from this package, we import the components that we will use in this code explicitly" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "f735fd97-942e-42d9-8886-372210271d3d", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "from ufl import (\n", - " SpatialCoordinate,\n", - " TestFunction,\n", - " TrialFunction,\n", - " as_vector,\n", - " cos,\n", - " div,\n", - " dx,\n", - " grad,\n", - " inner,\n", - " pi,\n", - " sin,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "62b9c8f6-8d86-4757-bb82-d1086adbf5fc", - "metadata": { - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## Defining a manufactured solution" - ] - }, - { - "cell_type": "markdown", - "id": "340615e7-94c3-4779-bba5-04d99d9ba826", - "metadata": { - "slideshow": { - "slide_type": "notes" - }, - "tags": [] - }, - "source": [ - "We will use a known analytical solution to the Stokes equations in this tutorial. We define the exact velocity and pressure as the following:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "db2a77d6-95c7-49d3-b39c-3750b6a7f8e4", - "metadata": {}, - "outputs": [], - "source": [ - "def u_ex(x):\n", - " sinx = sin(pi * x[0])\n", - " siny = sin(pi * x[1])\n", - " cosx = cos(pi * x[0])\n", - " cosy = cos(pi * x[1])\n", - " c_factor = 2 * pi * sinx * siny\n", - " return c_factor * as_vector((cosy * sinx, -cosx * siny))\n", - "\n", - "\n", - "def p_ex(x):\n", - " return sin(2 * pi * x[0]) * sin(2 * pi * x[1])" - ] - }, - { - "cell_type": "markdown", - "id": "c4e4f304-5fca-4860-a40f-ae292242dc7c", - "metadata": { - "slideshow": { - "slide_type": "notes" - }, - "tags": [] - }, - "source": [ - "Here, the input to each function is the coordinates (x,y) of the problem. These will be defined by using `x = ufl.SpatialCoordinate(domain)`.\n", - "\n", - "We use the strong formulation of the PDE to compute the source function $\\mathbf{f}$ using UFL operators" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "b53ef52c-7761-48d5-8964-c26b4279b9f7", - "metadata": { - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "def source(x):\n", - " u, p = u_ex(x), p_ex(x)\n", - " return -div(grad(u)) + grad(p)" - ] - }, - { - "cell_type": "markdown", - "id": "9e101f42-0048-408d-a460-f3321797d432", - "metadata": { - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## Defining the variational form" - ] - }, - { - "cell_type": "markdown", - "id": "84d10fa8-adbb-4f2d-90b2-ed1122b98d6a", - "metadata": { - "slideshow": { - "slide_type": "notes" - }, - "tags": [] - }, - "source": [ - "We will solve the PDE by creating a set of variational forms, one for each component of the problem. This leads to a blocked discrete system:" - ] - }, - { - "cell_type": "markdown", - "id": "51df1510-3a4e-4241-9240-7f1710a51597", - "metadata": {}, - "source": [ - "$$\\begin{align}\n", - "A w &= b,\\\\\n", - "\\begin{pmatrix}\n", - "A_{\\mathbf{u},\\mathbf{u}} & A_{\\mathbf{u},p} \\\\\n", - "A_{p,\\mathbf{u}} & 0\n", - "\\end{pmatrix}\n", - "\\begin{pmatrix} u\\\\ p \\end{pmatrix}\n", - "&= \\begin{pmatrix}\\mathbf{f}\\\\ 0 \\end{pmatrix}\n", - "\\end{align}$$" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "b71c05e1-4f5e-489c-98e6-3b8acda98c61", - "metadata": { - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "def create_bilinear_form(V, Q):\n", - " u, p = TrialFunction(V), TrialFunction(Q)\n", - " v, q = TestFunction(V), TestFunction(Q)\n", - " a_uu = inner(grad(u), grad(v)) * dx\n", - " a_up = inner(p, div(v)) * dx\n", - " a_pu = inner(div(u), q) * dx\n", - " return fem.form([[a_uu, a_up], [a_pu, None]])" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "d2708400-9078-420f-ae26-2209b5beb610", - "metadata": { - "slideshow": { - "slide_type": "fragment" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "def create_linear_form(V, Q):\n", - " v, q = TestFunction(V), TestFunction(Q)\n", - " domain = V.mesh\n", - " x = SpatialCoordinate(domain)\n", - " f = source(x)\n", - " return fem.form([inner(f, v) * dx, inner(fem.Constant(domain, 0.0), q) * dx])" - ] - }, - { - "cell_type": "markdown", - "id": "63a64795-4ef8-48f5-85a9-f1062d35ef20", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "source": [ - "## Boundary conditions" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "d9a592d2-d725-4cea-b53a-e433d7379fdc", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "def create_velocity_bc(V):\n", - " domain = V.mesh\n", - " g = fem.Constant(domain, [0.0, 0.0])\n", - " tdim = domain.topology.dim\n", - " domain.topology.create_connectivity(tdim - 1, tdim)\n", - " bdry_facets = mesh.exterior_facet_indices(domain.topology)\n", - " dofs = fem.locate_dofs_topological(V, tdim - 1, bdry_facets)\n", - " return [fem.dirichletbc(g, dofs, V)]" - ] - }, - { - "cell_type": "markdown", - "id": "a26e672b-4739-4e40-841b-6b09c2bb26c2", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "source": [ - "In the problem description above, we have only added a boundary condition for the velocity.\n", - "This means that the problem is singular, ie the pressure is only determined up to a constant. We therefore create a PETSc nullspace operator for the pressure." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "3a71da5c-9500-4a1a-b55c-669bb9a14f04", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "def create_nullspace(rhs_form):\n", - " null_vec = fem.petsc.create_vector_nest(rhs_form)\n", - " null_vecs = null_vec.getNestSubVecs()\n", - " null_vecs[0].set(0.0)\n", - " null_vecs[1].set(1.0)\n", - " null_vec.normalize()\n", - " nsp = PETSc.NullSpace().create(vectors=[null_vec])\n", - " return nsp" - ] - }, - { - "cell_type": "markdown", - "id": "59ca9b22-0867-4846-ae05-cbb7925bc430", - "metadata": { - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## Create a block preconditioner" - ] - }, - { - "cell_type": "markdown", - "id": "60b998bd-b6d9-420a-bc6b-53c5bd5ca146", - "metadata": { - "slideshow": { - "slide_type": "notes" - }, - "tags": [] - }, - "source": [ - "We create a nested matrix `P` to use as the preconditioner.\n", - "The top-left block of `P` is the top-left block of `A`. \n", - "The bottom-right diagonal entry is a mass matrix." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "08769ee5-fb56-4260-a958-326164f31d31", - "metadata": {}, - "outputs": [], - "source": [ - "def create_preconditioner(Q, a, bcs):\n", - " p, q = TrialFunction(Q), TestFunction(Q)\n", - " a_p11 = fem.form(inner(p, q) * dx)\n", - " a_p = fem.form([[a[0][0], None], [None, a_p11]])\n", - " P = dolfinx.fem.petsc.assemble_matrix_nest(a_p, bcs)\n", - " P.assemble()\n", - " return P" - ] - }, - { - "cell_type": "markdown", - "id": "f730e936-1263-401f-8983-0ce0888ddf9d", - "metadata": { - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## Assemble the nested system" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "a29fb3b0-f7ec-4e96-94eb-bda28adebd2c", - "metadata": {}, - "outputs": [], - "source": [ - "def assemble_system(lhs_form, rhs_form, bcs):\n", - " A = fem.petsc.assemble_matrix_nest(lhs_form, bcs=bcs)\n", - " A.assemble()\n", - "\n", - " b = dolfinx.fem.petsc.assemble_vector_nest(rhs_form)\n", - " dolfinx.fem.petsc.apply_lifting_nest(b, lhs_form, bcs=bcs)\n", - " for b_sub in b.getNestSubVecs():\n", - " b_sub.ghostUpdate(addv=PETSc.InsertMode.ADD, mode=PETSc.ScatterMode.REVERSE)\n", - " spaces = fem.extract_function_spaces(rhs_form)\n", - " bcs0 = fem.bcs_by_block(spaces, bcs)\n", - " dolfinx.fem.petsc.set_bc_nest(b, bcs0)\n", - " return A, b" - ] - }, - { - "cell_type": "markdown", - "id": "64ae9638-0bc7-4988-bda1-9255bbb5d374", - "metadata": { - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## PETSc Krylov Subspace solver" - ] - }, - { - "cell_type": "markdown", - "id": "7f4b0865-ebd8-44c1-bf0f-80ce8aa1b26e", - "metadata": { - "slideshow": { - "slide_type": "notes" - }, - "tags": [] - }, - "source": [ - "In legacy DOLFIN, convenience functions were provided to interact with linear algebra packages such as PETSc.\n", - "In DOLFINx, we instead supply users with the appropriate data types, so that the user can access all of the features of the linear package rather than being constrained to functions in our wrapper. One can also leverage the detailed documentation of PETSc. For blocked systems, see: https://petsc.org/release/docs/manual/ksp/?highlight=matnest#solving-block-matrices" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "6a474fb2-0f70-4d6d-aa55-cfc2402f8110", - "metadata": {}, - "outputs": [], - "source": [ - "def create_block_solver(A, b, P, comm):\n", - " ksp = PETSc.KSP().create(comm)\n", - " ksp.setOperators(A, P)\n", - " ksp.setType(\"minres\")\n", - " ksp.setTolerances(rtol=1e-9)\n", - " ksp.getPC().setType(\"fieldsplit\")\n", - " ksp.getPC().setFieldSplitType(PETSc.PC.CompositeType.ADDITIVE)\n", - "\n", - " nested_IS = P.getNestISs()\n", - " ksp.getPC().setFieldSplitIS((\"u\", nested_IS[0][0]), (\"p\", nested_IS[0][1]))\n", - "\n", - " # Set the preconditioners for each block\n", - " ksp_u, ksp_p = ksp.getPC().getFieldSplitSubKSP()\n", - " ksp_u.setType(\"preonly\")\n", - " ksp_u.getPC().setType(\"gamg\")\n", - " ksp_p.setType(\"preonly\")\n", - " ksp_p.getPC().setType(\"jacobi\")\n", - "\n", - " # Monitor the convergence of the KSP\n", - " ksp.setFromOptions()\n", - " return ksp" - ] - }, - { - "cell_type": "markdown", - "id": "ce65797c-f9d5-4b64-b46d-32c2102f6487", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "source": [ - "## Compute error estimates" - ] - }, - { - "cell_type": "markdown", - "id": "b50a0186-9307-44ce-928c-843bbef57de4", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "source": [ - "In DOLFINx, assembling a scalar value does require any MPI-communication. `dolfinx.fem.petsc.assemble_scalar` will only integrate over the cells owned by the process.\n", - "It is up to the user to gather the results, which can be gathered on for instance all processes, or a single process for outputting." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "c51b9d07-c380-48fe-8b41-911b93094438", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "def assemble_scalar(J, comm: MPI.Comm):\n", - " scalar_form = fem.form(J)\n", - " local_J = fem.assemble_scalar(scalar_form)\n", - " return comm.allreduce(local_J, op=MPI.SUM)\n", - "\n", - "\n", - "def compute_errors(u, p):\n", - " domain = u.function_space.mesh\n", - " x = SpatialCoordinate(domain)\n", - " error_u = u - u_ex(x)\n", - " H1_u = inner(error_u, error_u) * dx\n", - " H1_u += inner(grad(error_u), grad(error_u)) * dx\n", - " velocity_error = np.sqrt(assemble_scalar(H1_u, domain.comm))\n", - "\n", - " error_p = -p - p_ex(x)\n", - " L2_p = fem.form(error_p * error_p * dx)\n", - " pressure_error = np.sqrt(assemble_scalar(L2_p, domain.comm))\n", - " return velocity_error, pressure_error" - ] - }, - { - "cell_type": "markdown", - "id": "e2a17eaa-fce6-4390-8f57-6ede013f65c4", - "metadata": { - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## Solving the Stokes problem with a block-preconditioner" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "12d85f47", - "metadata": {}, - "outputs": [], - "source": [ - "def solve_stokes(u_element, p_element, domain):\n", - " V = fem.functionspace(domain, u_element)\n", - " Q = fem.functionspace(domain, p_element)\n", - "\n", - " lhs_form = create_bilinear_form(V, Q)\n", - " rhs_form = create_linear_form(V, Q)\n", - "\n", - " bcs = create_velocity_bc(V)\n", - " nsp = create_nullspace(rhs_form)\n", - " A, b = assemble_system(lhs_form, rhs_form, bcs)\n", - " assert nsp.test(A)\n", - " A.setNullSpace(nsp)\n", - "\n", - " P = create_preconditioner(Q, lhs_form, bcs)\n", - " ksp = create_block_solver(A, b, P, domain.comm)\n", - "\n", - " u, p = fem.Function(V), fem.Function(Q)\n", - " w = PETSc.Vec().createNest([u.vector, p.vector])\n", - " ksp.solve(b, w)\n", - " assert ksp.getConvergedReason() > 0\n", - " u.x.scatter_forward()\n", - " p.x.scatter_forward()\n", - " return compute_errors(u, p)" - ] - }, - { - "cell_type": "markdown", - "id": "e325a904", - "metadata": { - "lines_to_next_cell": 0, - "slideshow": { - "slide_type": "notes" - }, - "tags": [] - }, - "source": [ - "We now use the Stokes solver we have defined to experiment with a range of element pairs that can be used. First, we define a function that takes a pair of elements as input and plots a graph showing the error as $h$ is decreased." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "9ec19416", - "metadata": { - "lines_to_next_cell": 0, - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "def error_plot(element_u, element_p, convergence_u=None, convergence_p=None, refinements=5, N0=7):\n", - " hs = np.zeros(refinements)\n", - " u_errors = np.zeros(refinements)\n", - " p_errors = np.zeros(refinements)\n", - " comm = MPI.COMM_WORLD\n", - " for i in range(refinements):\n", - " N = N0 * 2**i\n", - " domain = mesh.create_unit_square(comm, N, N, mesh.CellType.triangle)\n", - " u_errors[i], p_errors[i] = solve_stokes(element_u, element_p, domain)\n", - " hs[i] = 1.0 / N\n", - " legend = []\n", - "\n", - " if convergence_u is not None:\n", - " y_value = u_errors[-1] * 1.4\n", - " plt.plot(\n", - " [hs[0], hs[-1]],\n", - " [y_value * (hs[0] / hs[-1]) ** convergence_u, y_value],\n", - " \"k--\",\n", - " )\n", - " legend.append(f\"order {convergence_u}\")\n", - " if convergence_p is not None:\n", - " y_value = p_errors[-1] * 1.4\n", - " plt.plot(\n", - " [hs[0], hs[-1]],\n", - " [y_value * (hs[0] / hs[-1]) ** convergence_p, y_value],\n", - " \"k--\",\n", - " )\n", - " legend.append(f\"order {convergence_p}\")\n", - "\n", - " plt.plot(hs, u_errors, \"bo-\")\n", - " plt.plot(hs, p_errors, \"ro-\")\n", - " legend += [r\"$H^1(\\mathbf{u_h}-\\mathbf{u}_{ex})$\", r\"$L^2(p_h-p_ex)$\"]\n", - " plt.legend(legend)\n", - " plt.xscale(\"log\")\n", - " plt.yscale(\"log\")\n", - " plt.axis(\"equal\")\n", - " plt.ylabel(\"Error in energy norm\")\n", - " plt.xlabel(\"$h$\")\n", - " plt.xlim(plt.xlim()[::-1])\n", - " plt.grid(True)" - ] - }, - { - "cell_type": "markdown", - "id": "5089c8cf", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "source": [ - "## Piecewise constant pressure spaces" - ] - }, - { - "cell_type": "markdown", - "id": "859895f1-dfb1-4fbc-be34-f7ec01a65ac8", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "source": [ - "For our first element, we pair piecewise linear elements with piecewise constants." - ] - }, - { - "cell_type": "markdown", - "id": "f8de7f59", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "source": [ - "" - ] - }, - { - "cell_type": "markdown", - "id": "a09fbb43-76c9-454e-be51-2b09b1cf2d3b", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "source": [ - "Using these elements, we do not converge to the solution." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "0a7d18cc", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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de3aVVOmTPHp51oedHr27HnKJRtuv/123X777R77zNTUVKWmpsrpdHpsnwAQUMpCzpo1hJzTcOmll6pdu3aaM2fOSbfZtGmTnE6nYmNjy7VPnz5dw4YNC4qQI0n333+/Lr/8ct10001q2LChzz7Xr8foeEtycrKysrK0ceNGq0sBAN+zY8hxOs3jeest87sP/iNbWlqqzZs368ILLzzpNgcOHNDYsWMrBKGCggLNnTtXN954o7fL9Bvt27dXq1at9Prrr/v0c4My6ABA0LJjyElLk+LipF69pNGjze9xcWa7F3333XfKz88/adApLCzU8OHDNXXqVF1yySXlXluyZIlq166ti477t9+7d68cDodmzZqlCy64QBEREWrXrp0++eQTrx7H8U6nhrfeekt16tRRdna2q238+PHq2LGjDh06JEkaMmSI3n77ba/VXxmCDgAEixNDjh3urkpLk0aOlHbtKt++e7fZ7sWwk5GRobCwMHXs2LHCa4ZhaNy4cerdu7fGjBlT4fX09HR17ty5XFvZnHAvv/yyUlJSlJmZqRYtWui6667z2Vpgp1PDNddco/POO0+PP/64JOmhhx7SypUrtXTpUtelqm7dumnDhg3l1p30NsvH6AAAfKCykOOP03QYhlRQUL1tnU5p4kTzPZXtx+GQJk2S+vSRjlsQ8qQiI833VFNGRobi4+MrXb7i008/1fz589WxY0ctWrRIkvTaa6+5Zu7/5Zdf1Lx583Lv2bx5s8LDw/X++++7xu089thj6tKli3bv3l1hjI83nE4NDodD06dP18iRI9WsWTPNnj1b6enpOvvss13bNG/eXEVFRdq7d69atmzp7cORRNABAPvLz5eGDPH/kCOZIadePc/syzDMnp7qDnzNy5PcuP07IyPjpJetLrvssip7QI4cOVIhIGVmZioxMbHc4OQTF6x8//33tXr1aqWkpJx031OnTtWTTz5ZZe3ffPON2rZtW6G9OjVUZfDgwYqPj9c///lPrVixQu3atSv3ep06dSSZY5R8haADAHZWFnJWr/b/kBNgMjMzddVVV9XovVFRUfrjjz8q7C8pKalc2/r16xUVFeXqFdmyZYsSEhKq3PeUKVM0bty4Krf5y1/+Uml7dWqoyrJly/Ttt99Wuk6lZA7OlqSzzjrrlPvyFIIOANhVIIacyEizZ6U61q2TBg489XZL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U0pKiuu5w+FQXl6eHnroIQ3kFyjgPwxD+sc/pOeeM+fE+e9/JaaGABBk3L509fTTT6t///6Kj4/X0aNHNXr0aG3fvl1RUVF66623vFEjgJr45z+lp54yHz//vHT99dbWAwAWcDvoxMTEaPPmzXr77be1ZcsW5eXl6cYbb9R1111XbnAyAAs99ZT08MPm42eekSZMsLQcALBKjebRCQsL0/X87xDwT6mp0t//bj6ePl26805LywEAK9Uo6Gzfvl2rV69WTk6OSktLy7324IMPeqQwADXwyivS7bebj++91/wCgCDmdtB58cUXdeuttyoqKkrNmjWTo2zhP5kDkwk6gEXmzzdvI5ekSZOkxx6zth4A8ANuB53HHntM06dP1z/+8Q9v1AOgJj74wBxsXFoq3XyzOS7nuP+EAECwcvv28j/++EOjRo3yRi0AamLFCmnUKKmkRLruOuk//yHkAMCf3A46o0aN0ooVK7xRCwB3rVsnDR8uFRVJiYnmxICsOA4ALm5fujr33HP1wAMP6PPPP1eHDh0UHh5e7vWJEyd6rDgAVfjiC2nQIOnIEXO247feksJqdH8BANiW278V58yZo3r16mnt2rVau3ZtudccDgdBB/CFzEzpyiulvDypd29p4ULphPXnAAA1CDo7duzwRh0Aquubb6S+faWDB6VLLpHef19isk4AqJTbY3TKFBUV6bvvvlNJSYkn6wFQhbrZ2Qq78kpp/37pwgulJUukevWsLgsA/JbbQaegoEA33nijIiMj1a5dO/3666+SpDvuuEMzZszweIEA/vTrr7rkwQflyM6W2rWTli+XGja0uioA8GtuB51p06Zp8+bNWrNmjSIiIlztffr00fz58z1aHIA//dmTE/nbbzLOPVdauVKKirK6KgDwe26P0Vm0aJHmz5+viy66qNysyO3atdOPP/7o0eIAyLxM1aePHD/8oIKzzlL48uUKb9bM6qoAICC43aPz22+/qUmTJhXa8/PzywUfAB5w8KDUr5+UlSWjeXN9+uijUmys1VUBQMBwO+h06dJFixcvdj0vCzcvvfSSLr74Ys9VBgS7w4elAQOkr76SzjpLJcuWqYCeHABwi9uXrh5//HENGDBAWVlZKikp0axZs5SVlaXPPvuswrw6AGroyBFp6FDp88+lM86QPvpIattW+uknqysDgIDido/OZZddpszMTJWUlKhDhw5asWKFmjRpovXr16tz587eqBEILoWF5nIOa9ZI9etLy5ZJnTpZXRUABKQazRffqlUrvfjii56upUZ27typMWPGKCcnR2FhYXrggQdYdBSBq6REuvZaM9zUqSMtXix162Z1VQAQsAJ+YZywsDClpKQoISFBe/fuVefOnTVw4EDVrVvX6tIA9zidUlKS9N575nIO778v9ehhdVUAENACPuhER0crOjpaktSsWTNFRUXpwIEDBB0EFsOQbrlFevNNc2HOhQvNZR4AAKelxktAeMq6des0ZMgQNW/eXA6HQ4sWLaqwTWpqquLi4hQREaHu3btrw4YNle5r06ZNcjqdiuX2WwQSw5DuvFN66SUpJER64w1pyBCrqwIAW7A86OTn56tTp05KTU2t9PX58+dr8uTJeuihh5SRkaFOnTqpf//+ysnJKbfdgQMHNHbsWM2ZM8cXZQOeYRjSvfdK//63+fzll6W//c3amgDARiy/dDVgwAANGDDgpK/PnDlTN998s8aPHy9Jev7557V48WK9/PLLmjp1qiSpsLBQw4cP19SpU3XJJZecdF+FhYUqLCx0Pc/NzZUkFRcXl/sO+ErI448r9M814pyzZ6t09GjpJOch5ykCAecpfMGd88vtoJOfn68ZM2Zo1apVysnJUWlpabnXf/LgPB9FRUXatGmTpk2b5moLCQlRnz59tH79ekmSYRgaN26cevfurTFjxlS5vyeeeEKPPPJIhfbVq1crMjJSH330kcdqB07lLx98oA4vvyxJ2jZunH6MjTVXIz8FzlMEAs5TeFNBQUG1t3U76Nx0001au3atxowZo+joaK8u+7B//345nU41bdq0XHvTpk317bffSpI+/fRTzZ8/Xx07dnSN73nttdfUoUOHCvubNm2aJk+e7Hqem5ur2NhY9erVS1988YX69u2r8PBwrx0PUCbkxRcV+mfIcT74oNrcf7/anOI9xcXF+uijjzhP4dc4T+ELZVdkqsPtoLN06VItXrxYl156qbtv9YrLLrusQq/SydSuXVu1a9eu0F72wxgeHs4PJrzv1Vel2283H//97wp9+GGFuvEfBs5TBALOU3iTO+eW24ORzzjjDDVu3Njdt9VIVFSUQkNDtW/fvnLt+/btUzPW/EEgeucdafx4cxDy7bdLM2ZILIYLAF7jdtB59NFH9eCDD7p1faym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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "element_u = basix.ufl.element(\"Lagrange\", \"triangle\", 1, shape=(2,))\n", - "element_p = basix.ufl.element(\"DG\", \"triangle\", 0)\n", - "error_plot(element_u, element_p)" - ] - }, - { - "cell_type": "markdown", - "id": "ef29de3f-9102-4241-b52f-f35b62ed82fa", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "source": [ - "## P2-DG0 {cite}`fortin-phd`" - ] - }, - { - "cell_type": "markdown", - "id": "46c61d53-dfda-4e13-8ef4-8cdc59175df6", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "source": [ - "One way to obtain convergence with a piecewise constant pressure space is to use a piecewise quadratic space for the velocity." - ] - }, - { - "cell_type": "markdown", - "id": "afdb0478", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "source": [ - "" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "1bc5a774", - "metadata": { - "lines_to_next_cell": 2, - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "element_u = basix.ufl.element(\"Lagrange\", \"triangle\", 2, shape=(2,))\n", - "element_p = basix.ufl.element(\"DG\", \"triangle\", 0)\n", - "error_plot(element_u, element_p, convergence_p=1)" - ] - }, - { - "cell_type": "markdown", - "id": "f827d1e3-7ffa-422c-97e9-16eae8c2da55", - "metadata": { - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## Crouzeix-Raviart " - ] - }, - { - "cell_type": "markdown", - "id": "be88c5c0-43cf-492e-b6c8-2f4ab7689f97", - "metadata": { - "slideshow": { - "slide_type": "notes" - }, - "tags": [] - }, - "source": [ - "Alternatively, the same order convergence can be achieved using fewer degrees of freedom if a Crouzeix-Raviart {cite}`crouzeix-raviart` element is used for the velocity space." - ] - }, - { - "cell_type": "markdown", - "id": "ede4beca", - "metadata": {}, - "source": [ - "" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "7b8e5628", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "element_u = basix.ufl.element(\"CR\", \"triangle\", 1, shape=(2,))\n", - "element_p = basix.ufl.element(\"DG\", \"triangle\", 0)\n", - "error_plot(element_u, element_p, 1)" - ] - }, - { - "cell_type": "markdown", - "id": "e9b946c3", - "metadata": { - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## Piecewise linear pressure space" - ] - }, - { - "cell_type": "markdown", - "id": "ce167a13-8fcc-468a-bb13-59ae6d2108d8", - "metadata": { - "slideshow": { - "slide_type": "notes" - }, - "tags": [] - }, - "source": [ - "When using a piecewise linear pressure space, we could again try using a velocity space one degree higher, but we would again observe that there is no convergence. In order to achieve convergence, we can augment the quadratic space with a cubic bubble function on the triangle {cite}`crouzeix-falk`." - ] - }, - { - "cell_type": "markdown", - "id": "97b57bb0", - "metadata": {}, - "source": [ - "" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "090c7af3", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "enriched_element = basix.ufl.enriched_element(\n", - " [\n", - " basix.ufl.element(\"Lagrange\", \"triangle\", 2),\n", - " basix.ufl.element(\"Bubble\", \"triangle\", 3),\n", - " ]\n", - ")\n", - "element_u = basix.ufl.blocked_element(enriched_element, shape=(2,))\n", - "element_p = basix.ufl.element(\"DG\", \"triangle\", 1)\n", - "error_plot(element_u, element_p, 2)" - ] - }, - { - "cell_type": "markdown", - "id": "c9a4e794-6119-48a9-9127-230c05273800", - "metadata": { - "slideshow": { - "slide_type": "slide" - }, - "tags": [] - }, - "source": [ - "## Taylor-Hood Element" - ] - }, - { - "cell_type": "markdown", - "id": "86fde2e2-05ef-40d3-939d-11d8936f34d1", - "metadata": { - "slideshow": { - "slide_type": "notes" - }, - "tags": [] - }, - "source": [ - "Continuous Lagrange spaces for pressure and velocity." - ] - }, - { - "cell_type": "markdown", - "id": "deada6db-5ead-4a1c-8a27-5d951840212a", - "metadata": {}, - "source": [ - "" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "0cebf437-cd21-4221-bf2e-29ccfd85fbed", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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qZLLzWdkZBRZymvbtu1lr9ycOXPGKfnKzMykT58+BQaaV7mkL2bNmsXChQsZP358kW2PGjWKN95447Kxb9y4kUaNGjkddyWGy+nRowdxcXH8/e9/Z968eTRu3LjA6xUrVgSMMWGlgcp5RdDeeSIlLzwcunc3HudfeDMtLU0lPSl1MjMznUpyroqMjOTPP/90as++LILdsmXLqF69uuNqzpo1a5zOudTTTz/Nxo0bL3u75pprivyZCoshMjKywBWlonz33Xds2rQJq9VKrVq1nF63L/NQo0aNK7blD5REFUF754n4Rt++xn3+hTftJT0RwsKMK0Ku3ObOda3NuXNday8szOUwt23bxvHjxy87M+9ymjVrxoYNGxzPz5w5w9atW7Hmm1WYl5fHP//5T+655x4CAoz/na9Zs4YtW7Zwyy23cM0117Bu3TqntmvUqEGjRo0uewsJCXF6X1ExjB8/nkGDBhEQEMDWrVu54447aN68Oe3bt+fw4cOOczMyMujXrx+ffPIJHTt25IUXXnD6jHXr1hEdHU1kZKRH/VbSlESJiF/p0QMqVICtWy+W9EB76ckFFotRUnPl1rkzREcXPY7JYoGYGOM8V9pzczwUQGBgIOvWrXPctmzZ4tL7u3Tpwvr16x1Xo9auXYvFYuHzzz9n2bJlbNy4kf79+3P8+HFGjhzpeN+aNWuIjY3lp59+4qmnnmLWrFkux3wll4vh+eefJycnh8cff5wPPviAVatWMWDAAMfSDTt37uSOO+7gueee45577uHvf/8706ZNc/ST3dKlS+ncubNpMXubkigR8SuXztKzl/Ty/6tcxCWBgWBfuPXSBMj+fPx41waVu8meHNx0003Ex8c7bq6u+xQfH8+NN95IWloaYJTRGjVqxHPPPcedd95JixYtsFqtLFy40DGz7cyZM1itVh555BEAcnNzqVq1qmk/U1ExLF68mKpVqzJz5kzWr19Pjx49SExMZMKECQQHB3Ps2DG6du1Kz549GTVqFACtW7emW7duPPfcc472z549y8yZMxkyZIhpMXubBpaLiN/p2xdmzDDGRa1a1YvNmzdz/fXX+zosKY369IGpU41ZePmXOYiONhKoPn288rGvv/46r7/+erHaGDNmDM888wxDhgxh9erVxMfHc//99xdYEiEvL4+srCzAKIW1aNHC8dratWt58MEHixVD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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "element_u = basix.ufl.element(\"Lagrange\", \"triangle\", 3, shape=(2,))\n", - "element_p = basix.ufl.element(\"Lagrange\", \"triangle\", 2)\n", - "error_plot(element_u, element_p, 3)" - ] - }, - { - "cell_type": "markdown", - "id": "c78dee90", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "source": [ - "## Piecewise quadratic pressure space {cite}`crouzeix-falk`" - ] - }, - { - "cell_type": "markdown", - "id": "e0acefc6-4f80-482d-a26e-ffc837983793", - "metadata": { - "slideshow": { - "slide_type": "notes" - }, - "tags": [] - }, - "source": [ - "When using a piecewise quadratic space, we can use a cubic velocity space augmented with quartic bubbles." - ] - }, - { - "cell_type": "markdown", - "id": "1a5ab5e1", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "source": [ - "" - ] - }, - { - "cell_type": "markdown", - "id": "0018acce-5def-49ff-9c26-c11d52e7b95f", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "source": [ - "### Custom elements" - ] - }, - { - "cell_type": "markdown", - "id": "9b8dec8c-9eb4-4c2f-9cd2-050abffc1d2e", - "metadata": { - "slideshow": { - "slide_type": "notes" - }, - "tags": [] - }, - "source": [ - "We have to define this velocity element as a custom element (it cannot be created as an enriched element, as the basis functions of degree 3 Lagrange and degree 4 bubbles are not linearly independent). More examples of how custom elements can be created can be found [in the Basix documentation](https://docs.fenicsproject.org/basix/v0.5.0/python/demo/demo_custom_element.py.html)." - ] - }, - { - "cell_type": "markdown", - "id": "08bae35b", - "metadata": { - "slideshow": { - "slide_type": "notes" - }, - "tags": [] - }, - "source": [ - "#### Defining the polynomial space\n", - "\n", - "When creating a custom element, we must input the coefficients that define a basis of the set of polynomials that our element spans. In this example, we will represent the 9 functions in our space in terms of the 10 orthonormal polynomials of degree $\\leqslant3$ on a quadrilateral, so we create a 9 by 10 matrix.\n", - "\n", - "A polynomial $f$ on the triangle can be written as\n", - "$$f(x,y)=\\sum_i\\left(\\int_0^1\\int_0^{1-y}f(x, y)q_i(x, y) \\,\\mathrm{d}x\\,\\mathrm{d}y\\right)q_i(x,y),$$\n", - "where $q_0$, $q_1$, ... are the orthonormal polynomials. The entries of our coefficient matrix are these integrals." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "8eb61dbb", - "metadata": { - "slideshow": { - "slide_type": "notes" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "wcoeffs = np.zeros((12, 15))\n", - "pts, wts = basix.make_quadrature(basix.CellType.triangle, 8)\n", - "poly = basix.tabulate_polynomials(basix.PolynomialType.legendre, basix.CellType.triangle, 4, pts)\n", - "x = pts[:, 0]\n", - "y = pts[:, 1]\n", - "for j, f in enumerate(\n", - " [\n", - " 1,\n", - " x,\n", - " y,\n", - " x**2 * y,\n", - " x * y**2,\n", - " (1 - x - y) ** 2 * y,\n", - " (1 - x - y) * y**2,\n", - " x**2 * (1 - x - y),\n", - " x * (1 - x - y) ** 2,\n", - " x * y * (1 - x - y),\n", - " x**2 * y * (1 - x - y),\n", - " x * y**2 * (1 - x - y),\n", - " ]\n", - "):\n", - " for i in range(15):\n", - " wcoeffs[j, i] = sum(f * poly[i, :] * wts)" - ] - }, - { - "cell_type": "markdown", - "id": "4d73e102", - "metadata": { - "slideshow": { - "slide_type": "notes" - }, - "tags": [] - }, - "source": [ - "#### Interpolation\n", - "\n", - "Next, we compute the points and matrices that define how functions can be interpolated into this space. For this element, all the DOFs are point evaluations, so we create lists of these points and (reshaped) identity matrices." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "6ad29eb2", - "metadata": { - "slideshow": { - "slide_type": "notes" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "x = [[], [], [], []]\n", - "x[0].append(np.array([[0.0, 0.0]]))\n", - "x[0].append(np.array([[1.0, 0.0]]))\n", - "x[0].append(np.array([[0.0, 1.0]]))\n", - "x[1].append(np.array([[2 / 3, 1 / 3], [1 / 3, 2 / 3]]))\n", - "x[1].append(np.array([[0.0, 1 / 3], [0.0, 2 / 3]]))\n", - "x[1].append(np.array([[1 / 3, 0.0], [2 / 3, 0.0]]))\n", - "x[2].append(np.array([[1 / 4, 1 / 4], [1 / 2, 1 / 4], [1 / 4, 1 / 2]]))\n", - "\n", - "M = [[], [], [], []]\n", - "for _ in range(3):\n", - " M[0].append(np.array([[[[1.0]]]]))\n", - "for _ in range(3):\n", - " M[1].append(np.array([[[[1.0], [0.0]]], [[[0.0], [1.0]]]]))\n", - "M[2].append(np.array([[[[1.0], [0.0], [0.0]]], [[[0.0], [1.0], [0.0]]], [[[0.0], [0.0], [1.0]]]]))" - ] - }, - { - "cell_type": "markdown", - "id": "81994537", - "metadata": { - "slideshow": { - "slide_type": "notes" - }, - "tags": [] - }, - "source": [ - "#### Creating the element\n", - "\n", - "We now create the element by passing in the information we created above, as well as the cell type, value shape, number of derivatives used by the DOFs, map type, whether the element is discontinuous, the highest degree Lagrange space that is a subspace of the element, and the polynomial degree of the element." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "7c9c03cc", - "metadata": { - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "p3_plus_bubbles = basix.ufl.custom_element(\n", - " basix.CellType.triangle,\n", - " [],\n", - " wcoeffs,\n", - " x,\n", - " M,\n", - " 0,\n", - " basix.MapType.identity,\n", - " basix.SobolevSpace.H1,\n", - " False,\n", - " 3,\n", - " 4,\n", - ")\n", - "\n", - "element_u = basix.ufl.blocked_element(p3_plus_bubbles, shape=(2,))\n", - "element_p = basix.ufl.element(\"DG\", \"triangle\", 2)\n", - "error_plot(element_u, element_p, 3, refinements=4)" - ] - }, - { - "cell_type": "markdown", - "id": "94450f5a", - "metadata": { - "lines_to_next_cell": 0, - "slideshow": { - "slide_type": "skip" - }, - "tags": [] - }, - "source": [ - "## References\n", - "\n", - "The images of elements used in this example were taken from DefElement {cite}`defelement`.\n", - "\n", - "```{bibliography}\n", - ":style: unsrt\n", - "```" - ] - } - ], - "metadata": { - "jupytext": { - "formats": "ipynb" - }, - "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.10.12" - } + "cells": [ + { + "cell_type": "markdown", + "id": "51e6f0eb", + "metadata": { + "slideshow": { + "slide_type": "slide" }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file + "tags": [] + }, + "source": [ + "# The Stokes equations" + ] + }, + { + "cell_type": "markdown", + "id": "12afe587-a28c-.x.petsc_vecc0..x.petsc_vec_vecc_vec8a4be7", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "source": [ + "Authors: J.S. Dokken, M.W. Scroggs, S. Roggendorf" + ] + }, + { + "cell_type": "markdown", + "id": "120e279b", + "metadata": { + "tags": [] + }, + "source": [ + "\\begin{align*}\n", + "-\\Delta \\mathbf{u} + \\nabla p &= \\mathbf{f} &&\\text{in } \\Omega,\\\\\n", + "\\nabla \\cdot \\mathbf{u} &= 0 &&\\text{in } \\Omega,\\\\\n", + "\\mathbf{u} &= \\mathbf{0}&&\\text{on } \\partial\\Omega.\n", + "\\end{align*}" + ] + }, + { + "cell_type": "markdown", + "id": "6ad7e66d-a6e9-4670-bb9c-a3d2fddff7cf", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [] + }, + "source": [ + "In this tutorial you will learn how to:\n", + "\n", + "- Create manufactured solutions with UFL\n", + "- Use block-preconditioners" + ] + }, + { + "cell_type": "markdown", + "id": "1d0f852b-1099-4f9d-b60a-045a17cbb1c2", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "source": [ + "## Imports" + ] + }, + { + "cell_type": "markdown", + "id": "026d6390", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "source": [ + "We start by importing most of the modules we will use in this tutorial." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "eb7ac5d2", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "from mpi4py import MPI\n", + "from petsc4py import PETSc\n", + "\n", + "import matplotlib.pylab as plt\n", + "import numpy as np\n", + "\n", + "import basix.ufl\n", + "import dolfinx.fem.petsc\n", + "from dolfinx import fem, mesh" + ] + }, + { + "cell_type": "markdown", + "id": "56b7f168", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "source": [ + "However, we pay special attention to `UFL`, the unified form language package, which is used to represent variational forms.\n", + "As we will dependend on many functions from this package, we import the components that we will use in this code explicitly" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f735fd97-942e-42d9-8886-372210271d3d", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "from ufl import (\n", + " SpatialCoordinate,\n", + " TestFunction,\n", + " TrialFunction,\n", + " as_vector,\n", + " cos,\n", + " div,\n", + " dx,\n", + " grad,\n", + " inner,\n", + " pi,\n", + " sin,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "62b9c8f6-8d86-4757-bb82-d1086adbf5fc", + "metadata": { + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## Defining a manufactured solution" + ] + }, + { + "cell_type": "markdown", + "id": "340615e7-94c3-4779-bba5-04d99d9ba826", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "We will use a known analytical solution to the Stokes equations in this tutorial. We define the exact velocity and pressure as the following:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "db2a77d6-95c7-49d3-b39c-3750b6a7f8e4", + "metadata": {}, + "outputs": [], + "source": [ + "def u_ex(x):\n", + " sinx = sin(pi * x[0])\n", + " siny = sin(pi * x[1])\n", + " cosx = cos(pi * x[0])\n", + " cosy = cos(pi * x[1])\n", + " c_factor = 2 * pi * sinx * siny\n", + " return c_factor * as_vector((cosy * sinx, -cosx * siny))\n", + "\n", + "\n", + "def p_ex(x):\n", + " return sin(2 * pi * x[0]) * sin(2 * pi * x[1])" + ] + }, + { + "cell_type": "markdown", + "id": "c4e4f304-5fca-4860-a40f-ae292242dc7c", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "Here, the input to each function is the coordinates (x,y) of the problem. These will be defined by using `x = ufl.SpatialCoordinate(domain)`.\n", + "\n", + "We use the strong formulation of the PDE to compute the source function $\\mathbf{f}$ using UFL operators" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "b53ef52c-7761-48d5-8964-c26b4279b9f7", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "def source(x):\n", + " u, p = u_ex(x), p_ex(x)\n", + " return -div(grad(u)) + grad(p)" + ] + }, + { + "cell_type": "markdown", + "id": "9e101f42-0048-408d-a460-f3321797d432", + "metadata": { + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## Defining the variational form" + ] + }, + { + "cell_type": "markdown", + "id": "84d10fa8-adbb-4f2d-90b2-ed1122b98d6a", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "We will solve the PDE by creating a set of variational forms, one for each component of the problem. This leads to a blocked discrete system:" + ] + }, + { + "cell_type": "markdown", + "id": "51df1510-3a4e-4241-9240-7f1710a51597", + "metadata": {}, + "source": [ + "$$\\begin{align}\n", + "A w &= b,\\\\\n", + "\\begin{pmatrix}\n", + "A_{\\mathbf{u},\\mathbf{u}} & A_{\\mathbf{u},p} \\\\\n", + "A_{p,\\mathbf{u}} & 0\n", + "\\end{pmatrix}\n", + "\\begin{pmatrix} u\\\\ p \\end{pmatrix}\n", + "&= \\begin{pmatrix}\\mathbf{f}\\\\ 0 \\end{pmatrix}\n", + "\\end{align}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "b71c05e1-4f5e-489c-98e6-3b8acda98c61", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "def create_bilinear_form(V, Q):\n", + " u, p = TrialFunction(V), TrialFunction(Q)\n", + " v, q = TestFunction(V), TestFunction(Q)\n", + " a_uu = inner(grad(u), grad(v)) * dx\n", + " a_up = inner(p, div(v)) * dx\n", + " a_pu = inner(div(u), q) * dx\n", + " return fem.form([[a_uu, a_up], [a_pu, None]])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "d2708400-9078-420f-ae26-2209b5beb610", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "def create_linear_form(V, Q):\n", + " v, q = TestFunction(V), TestFunction(Q)\n", + " domain = V.mesh\n", + " x = SpatialCoordinate(domain)\n", + " f = source(x)\n", + " return fem.form([inner(f, v) * dx, inner(fem.Constant(domain, 0.0), q) * dx])" + ] + }, + { + "cell_type": "markdown", + "id": "63a64795-4ef8-48f5-85a9-f1062d35ef20", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "source": [ + "## Boundary conditions" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "d9a592d2-d725-4cea-b53a-e433d7379fdc", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "def create_velocity_bc(V):\n", + " domain = V.mesh\n", + " g = fem.Constant(domain, [0.0, 0.0])\n", + " tdim = domain.topology.dim\n", + " domain.topology.create_connectivity(tdim - 1, tdim)\n", + " bdry_facets = mesh.exterior_facet_indices(domain.topology)\n", + " dofs = fem.locate_dofs_topological(V, tdim - 1, bdry_facets)\n", + " return [fem.dirichletbc(g, dofs, V)]" + ] + }, + { + "cell_type": "markdown", + "id": "a26e672b-4739-4e40-841b-6b09c2bb26c2", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "source": [ + "In the problem description above, we have only added a boundary condition for the velocity.\n", + "This means that the problem is singular, ie the pressure is only determined up to a constant. We therefore create a PETSc nullspace operator for the pressure." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "3a71da5c-9500-4a1a-b55c-669bb9a14f04", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "def create_nullspace(rhs_form):\n", + " null_vec = fem.petsc.create_vector_nest(rhs_form)\n", + " null_vecs = null_vec.getNestSubVecs()\n", + " null_vecs[0].set(0.0)\n", + " null_vecs[1].set(1.0)\n", + " null_vec.normalize()\n", + " nsp = PETSc.NullSpace().create(vectors=[null_vec])\n", + " return nsp" + ] + }, + { + "cell_type": "markdown", + "id": "59ca9b22-0867-4846-ae05-cbb7925bc430", + "metadata": { + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## Create a block preconditioner" + ] + }, + { + "cell_type": "markdown", + "id": "60b998bd-b6d9-420a-bc6b-53c5bd5ca146", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "We create a nested matrix `P` to use as the preconditioner.\n", + "The top-left block of `P` is the top-left block of `A`. \n", + "The bottom-right diagonal entry is a mass matrix." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "08769ee5-fb56-4260-a958-326164f31d31", + "metadata": {}, + "outputs": [], + "source": [ + "def create_preconditioner(Q, a, bcs):\n", + " p, q = TrialFunction(Q), TestFunction(Q)\n", + " a_p11 = fem.form(inner(p, q) * dx)\n", + " a_p = fem.form([[a[0][0], None], [None, a_p11]])\n", + " P = dolfinx.fem.petsc.assemble_matrix_nest(a_p, bcs)\n", + " P.assemble()\n", + " return P" + ] + }, + { + "cell_type": "markdown", + "id": "f730e936-1263-401f-8983-0ce0888ddf9d", + "metadata": { + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## Assemble the nested system" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "a29fb3b0-f7ec-4e96-94eb-bda28adebd2c", + "metadata": {}, + "outputs": [], + "source": [ + "def assemble_system(lhs_form, rhs_form, bcs):\n", + " A = fem.petsc.assemble_matrix_nest(lhs_form, bcs=bcs)\n", + " A.assemble()\n", + "\n", + " b = dolfinx.fem.petsc.assemble_vector_nest(rhs_form)\n", + " dolfinx.fem.petsc.apply_lifting_nest(b, lhs_form, bcs=bcs)\n", + " for b_sub in b.getNestSubVecs():\n", + " b_sub.ghostUpdate(addv=PETSc.InsertMode.ADD, mode=PETSc.ScatterMode.REVERSE)\n", + " spaces = fem.extract_function_spaces(rhs_form)\n", + " bcs0 = fem.bcs_by_block(spaces, bcs)\n", + " dolfinx.fem.petsc.set_bc_nest(b, bcs0)\n", + " return A, b" + ] + }, + { + "cell_type": "markdown", + "id": "64ae9638-0bc7-4988-bda1-9255bbb5d374", + "metadata": { + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## PETSc Krylov Subspace solver" + ] + }, + { + "cell_type": "markdown", + "id": "7f4b0865-ebd8-44c1-bf0f-80ce8aa1b26e", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "In legacy DOLFIN, convenience functions were provided to interact with linear algebra packages such as PETSc.\n", + "In DOLFINx, we instead supply users with the appropriate data types, so that the user can access all of the features of the linear package rather than being constrained to functions in our wrapper. One can also leverage the detailed documentation of PETSc. For blocked systems, see: https://petsc.org/release/docs/manual/ksp/?highlight=matnest#solving-block-matrices" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "6a474fb2-0f70-4d6d-aa55-cfc2402f8110", + "metadata": {}, + "outputs": [], + "source": [ + "def create_block_solver(A, b, P, comm):\n", + " ksp = PETSc.KSP().create(comm)\n", + " ksp.setOperators(A, P)\n", + " ksp.setType(\"minres\")\n", + " ksp.setTolerances(rtol=1e-9)\n", + " ksp.getPC().setType(\"fieldsplit\")\n", + " ksp.getPC().setFieldSplitType(PETSc.PC.CompositeType.ADDITIVE)\n", + "\n", + " nested_IS = P.getNestISs()\n", + " ksp.getPC().setFieldSplitIS((\"u\", nested_IS[0][0]), (\"p\", nested_IS[0][1]))\n", + "\n", + " # Set the preconditioners for each block\n", + " ksp_u, ksp_p = ksp.getPC().getFieldSplitSubKSP()\n", + " ksp_u.setType(\"preonly\")\n", + " ksp_u.getPC().setType(\"gamg\")\n", + " ksp_p.setType(\"preonly\")\n", + " ksp_p.getPC().setType(\"jacobi\")\n", + "\n", + " # Monitor the convergence of the KSP\n", + " ksp.setFromOptions()\n", + " return ksp" + ] + }, + { + "cell_type": "markdown", + "id": "ce65797c-f9d5-4b64-b46d-32c2102f6487", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "source": [ + "## Compute error estimates" + ] + }, + { + "cell_type": "markdown", + "id": "b50a0186-9307-44ce-928c-843bbef57de4", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "source": [ + "In DOLFINx, assembling a scalar value does require any MPI-communication. `dolfinx.fem.petsc.assemble_scalar` will only integrate over the cells owned by the process.\n", + "It is up to the user to gather the results, which can be gathered on for instance all processes, or a single process for outputting." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "c51b9d07-c380-48fe-8b41-911b93094438", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "def assemble_scalar(J, comm: MPI.Comm):\n", + " scalar_form = fem.form(J)\n", + " local_J = fem.assemble_scalar(scalar_form)\n", + " return comm.allreduce(local_J, op=MPI.SUM)\n", + "\n", + "\n", + "def compute_errors(u, p):\n", + " domain = u.function_space.mesh\n", + " x = SpatialCoordinate(domain)\n", + " error_u = u - u_ex(x)\n", + " H1_u = inner(error_u, error_u) * dx\n", + " H1_u += inner(grad(error_u), grad(error_u)) * dx\n", + " velocity_error = np.sqrt(assemble_scalar(H1_u, domain.comm))\n", + "\n", + " error_p = -p - p_ex(x)\n", + " L2_p = fem.form(error_p * error_p * dx)\n", + " pressure_error = np.sqrt(assemble_scalar(L2_p, domain.comm))\n", + " return velocity_error, pressure_error" + ] + }, + { + "cell_type": "markdown", + "id": "e2a17eaa-fce6-4390-8f57-6ede013f65c4", + "metadata": { + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## Solving the Stokes problem with a block-preconditioner" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12d85f47", + "metadata": {}, + "outputs": [], + "source": [ + "def solve_stokes(u_element, p_element, domain):\n", + " V = fem.functionspace(domain, u_element)\n", + " Q = fem.functionspace(domain, p_element)\n", + "\n", + " lhs_form = create_bilinear_form(V, Q)\n", + " rhs_form = create_linear_form(V, Q)\n", + "\n", + " bcs = create_velocity_bc(V)\n", + " nsp = create_nullspace(rhs_form)\n", + " A, b = assemble_system(lhs_form, rhs_form, bcs)\n", + " assert nsp.test(A)\n", + " A.setNullSpace(nsp)\n", + "\n", + " P = create_preconditioner(Q, lhs_form, bcs)\n", + " ksp = create_block_solver(A, b, P, domain.comm)\n", + "\n", + " u, p = fem.Function(V), fem.Function(Q)\n", + " w = PETSc.Vec().createNest([u.x.petsc_vec, p.x.petsc_vec])\n", + " ksp.solve(b, w)\n", + " assert ksp.getConvergedReason() > 0\n", + " u.x.scatter_forward()\n", + " p.x.scatter_forward()\n", + " return compute_errors(u, p)" + ] + }, + { + "cell_type": "markdown", + "id": "e325a904", + "metadata": { + "lines_to_next_cell": 0, + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "We now use the Stokes solver we have defined to experiment with a range of element pairs that can be used. First, we define a function that takes a pair of elements as input and plots a graph showing the error as $h$ is decreased." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "9ec19416", + "metadata": { + "lines_to_next_cell": 0, + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "def error_plot(element_u, element_p, convergence_u=None, convergence_p=None, refinements=5, N0=7):\n", + " hs = np.zeros(refinements)\n", + " u_errors = np.zeros(refinements)\n", + " p_errors = np.zeros(refinements)\n", + " comm = MPI.COMM_WORLD\n", + " for i in range(refinements):\n", + " N = N0 * 2**i\n", + " domain = mesh.create_unit_square(comm, N, N, mesh.CellType.triangle)\n", + " u_errors[i], p_errors[i] = solve_stokes(element_u, element_p, domain)\n", + " hs[i] = 1.0 / N\n", + " legend = []\n", + "\n", + " if convergence_u is not None:\n", + " y_value = u_errors[-1] * 1.4\n", + " plt.plot(\n", + " [hs[0], hs[-1]],\n", + " [y_value * (hs[0] / hs[-1]) ** convergence_u, y_value],\n", + " \"k--\",\n", + " )\n", + " legend.append(f\"order {convergence_u}\")\n", + " if convergence_p is not None:\n", + " y_value = p_errors[-1] * 1.4\n", + " plt.plot(\n", + " [hs[0], hs[-1]],\n", + " [y_value * (hs[0] / hs[-1]) ** convergence_p, y_value],\n", + " \"k--\",\n", + " )\n", + " legend.append(f\"order {convergence_p}\")\n", + "\n", + " plt.plot(hs, u_errors, \"bo-\")\n", + " plt.plot(hs, p_errors, \"ro-\")\n", + " legend += [r\"$H^1(\\mathbf{u_h}-\\mathbf{u}_{ex})$\", r\"$L^2(p_h-p_ex)$\"]\n", + " plt.legend(legend)\n", + " plt.xscale(\"log\")\n", + " plt.yscale(\"log\")\n", + " plt.axis(\"equal\")\n", + " plt.ylabel(\"Error in energy norm\")\n", + " plt.xlabel(\"$h$\")\n", + " plt.xlim(plt.xlim()[::-1])\n", + " plt.grid(True)" + ] + }, + { + "cell_type": "markdown", + "id": "5089c8cf", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "source": [ + "## Piecewise constant pressure spaces" + ] + }, + { + "cell_type": "markdown", + "id": "859895f1-dfb1-4fbc-be34-f7ec01a65ac8", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "source": [ + "For our first element, we pair piecewise linear elements with piecewise constants." + ] + }, + { + "cell_type": "markdown", + "id": "f8de7f59", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "id": "a09fbb43-76c9-454e-be51-2b09b1cf2d3b", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "source": [ + "Using these elements, we do not converge to the solution." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "0a7d18cc", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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de3aVVOmTPHp51oedHr27HnKJRtuv/123X777R77zNTUVKWmpsrpdHpsnwAQUMpCzpo1hJzTcOmll6pdu3aaM2fOSbfZtGmTnE6nYmNjy7VPnz5dw4YNC4qQI0n333+/Lr/8ct10001q2LChzz7Xr8foeEtycrKysrK0ceNGq0sBAN+zY8hxOs3jeest87sP/iNbWlqqzZs368ILLzzpNgcOHNDYsWMrBKGCggLNnTtXN954o7fL9Bvt27dXq1at9Prrr/v0c4My6ABA0LJjyElLk+LipF69pNGjze9xcWa7F3333XfKz88/adApLCzU8OHDNXXqVF1yySXlXluyZIlq166ti477t9+7d68cDodmzZqlCy64QBEREWrXrp0++eQTrx7H8U6nhrfeekt16tRRdna2q238+PHq2LGjDh06JEkaMmSI3n77ba/VXxmCDgAEixNDjh3urkpLk0aOlHbtKt++e7fZ7sWwk5GRobCwMHXs2LHCa4ZhaNy4cerdu7fGjBlT4fX09HR17ty5XFvZnHAvv/yyUlJSlJmZqRYtWui6667z2Vpgp1PDNddco/POO0+PP/64JOmhhx7SypUrtXTpUtelqm7dumnDhg3l1p30NsvH6AAAfKCykOOP03QYhlRQUL1tnU5p4kTzPZXtx+GQJk2S+vSRjlsQ8qQiI833VFNGRobi4+MrXb7i008/1fz589WxY0ctWrRIkvTaa6+5Zu7/5Zdf1Lx583Lv2bx5s8LDw/X++++7xu089thj6tKli3bv3l1hjI83nE4NDodD06dP18iRI9WsWTPNnj1b6enpOvvss13bNG/eXEVFRdq7d69atmzp7cORRNABAPvLz5eGDPH/kCOZIadePc/syzDMnp7qDnzNy5PcuP07IyPjpJetLrvssip7QI4cOVIhIGVmZioxMbHc4OQTF6x8//33tXr1aqWkpJx031OnTtWTTz5ZZe3ffPON2rZtW6G9OjVUZfDgwYqPj9c///lPrVixQu3atSv3ep06dSSZY5R8haADAHZWFnJWr/b/kBNgMjMzddVVV9XovVFRUfrjjz8q7C8pKalc2/r16xUVFeXqFdmyZYsSEhKq3PeUKVM0bty4Krf5y1/+Uml7dWqoyrJly/Ttt99Wuk6lZA7OlqSzzjrrlPvyFIIOANhVIIacyEizZ6U61q2TBg489XZL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U0pKiuu5w+FQXl6eHnroIQ3kFyjgPwxD+sc/pOeeM+fE+e9/JaaGABBk3L509fTTT6t///6Kj4/X0aNHNXr0aG3fvl1RUVF66623vFEjgJr45z+lp54yHz//vHT99dbWAwAWcDvoxMTEaPPmzXr77be1ZcsW5eXl6cYbb9R1111XbnAyAAs99ZT08MPm42eekSZMsLQcALBKjebRCQsL0/X87xDwT6mp0t//bj6ePl26805LywEAK9Uo6Gzfvl2rV69WTk6OSktLy7324IMPeqQwADXwyivS7bebj++91/wCgCDmdtB58cUXdeuttyoqKkrNmjWTo2zhP5kDkwk6gEXmzzdvI5ekSZOkxx6zth4A8ANuB53HHntM06dP1z/+8Q9v1AOgJj74wBxsXFoq3XyzOS7nuP+EAECwcvv28j/++EOjRo3yRi0AamLFCmnUKKmkRLruOuk//yHkAMCf3A46o0aN0ooVK7xRCwB3rVsnDR8uFRVJiYnmxICsOA4ALm5fujr33HP1wAMP6PPPP1eHDh0UHh5e7vWJEyd6rDgAVfjiC2nQIOnIEXO247feksJqdH8BANiW278V58yZo3r16mnt2rVau3ZtudccDgdBB/CFzEzpyiulvDypd29p4ULphPXnAAA1CDo7duzwRh0Aquubb6S+faWDB6VLLpHef19isk4AqJTbY3TKFBUV6bvvvlNJSYkn6wFQhbrZ2Qq78kpp/37pwgulJUukevWsLgsA/JbbQaegoEA33nijIiMj1a5dO/3666+SpDvuuEMzZszweIEA/vTrr7rkwQflyM6W2rWTli+XGja0uioA8GtuB51p06Zp8+bNWrNmjSIiIlztffr00fz58z1aHIA//dmTE/nbbzLOPVdauVKKirK6KgDwe26P0Vm0aJHmz5+viy66qNysyO3atdOPP/7o0eIAyLxM1aePHD/8oIKzzlL48uUKb9bM6qoAICC43aPz22+/qUmTJhXa8/PzywUfAB5w8KDUr5+UlSWjeXN9+uijUmys1VUBQMBwO+h06dJFixcvdj0vCzcvvfSSLr74Ys9VBgS7w4elAQOkr76SzjpLJcuWqYCeHABwi9uXrh5//HENGDBAWVlZKikp0axZs5SVlaXPPvuswrw6AGroyBFp6FDp88+lM86QPvpIattW+uknqysDgIDido/OZZddpszMTJWUlKhDhw5asWKFmjRpovXr16tz587eqBEILoWF5nIOa9ZI9etLy5ZJnTpZXRUABKQazRffqlUrvfjii56upUZ27typMWPGKCcnR2FhYXrggQdYdBSBq6REuvZaM9zUqSMtXix162Z1VQAQsAJ+YZywsDClpKQoISFBe/fuVefOnTVw4EDVrVvX6tIA9zidUlKS9N575nIO778v9ehhdVUAENACPuhER0crOjpaktSsWTNFRUXpwIEDBB0EFsOQbrlFevNNc2HOhQvNZR4AAKelxktAeMq6des0ZMgQNW/eXA6HQ4sWLaqwTWpqquLi4hQREaHu3btrw4YNle5r06ZNcjqdiuX2WwQSw5DuvFN66SUpJER64w1pyBCrqwIAW7A86OTn56tTp05KTU2t9PX58+dr8uTJeuihh5SRkaFOnTqpf//+ysnJKbfdgQMHNHbsWM2ZM8cXZQOeYRjSvfdK//63+fzll6W//c3amgDARiy/dDVgwAANGDDgpK/PnDlTN998s8aPHy9Jev7557V48WK9/PLLmjp1qiSpsLBQw4cP19SpU3XJJZecdF+FhYUqLCx0Pc/NzZUkFRcXl/sO+ErI448r9M814pyzZ6t09GjpJOch5ykCAecpfMGd88vtoJOfn68ZM2Zo1apVysnJUWlpabnXf/LgPB9FRUXatGmTpk2b5moLCQlRnz59tH79ekmSYRgaN26cevfurTFjxlS5vyeeeEKPPPJIhfbVq1crMjJSH330kcdqB07lLx98oA4vvyxJ2jZunH6MjTVXIz8FzlMEAs5TeFNBQUG1t3U76Nx0001au3atxowZo+joaK8u+7B//345nU41bdq0XHvTpk317bffSpI+/fRTzZ8/Xx07dnSN73nttdfUoUOHCvubNm2aJk+e7Hqem5ur2NhY9erVS1988YX69u2r8PBwrx0PUCbkxRcV+mfIcT74oNrcf7/anOI9xcXF+uijjzhP4dc4T+ELZVdkqsPtoLN06VItXrxYl156qbtv9YrLLrusQq/SydSuXVu1a9eu0F72wxgeHs4PJrzv1Vel2283H//97wp9+GGFuvEfBs5TBALOU3iTO+eW24ORzzjjDDVu3Njdt9VIVFSUQkNDtW/fvnLt+/btUzPW/EEgeucdafx4cxDy7bdLM2ZILIYLAF7jdtB59NFH9eCDD7p1faym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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "element_u = basix.ufl.element(\"Lagrange\", \"triangle\", 1, shape=(2,))\n", + "element_p = basix.ufl.element(\"DG\", \"triangle\", 0)\n", + "error_plot(element_u, element_p)" + ] + }, + { + "cell_type": "markdown", + "id": "ef29de3f-9102-4241-b52f-f35b62ed82fa", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "source": [ + "## P2-DG0 {cite}`fortin-phd`" + ] + }, + { + "cell_type": "markdown", + "id": "46c61d53-dfda-4e13-8ef4-8cdc59175df6", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "source": [ + "One way to obtain convergence with a piecewise constant pressure space is to use a piecewise quadratic space for the velocity." + ] + }, + { + "cell_type": "markdown", + "id": "afdb0478", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "1bc5a774", + "metadata": { + "lines_to_next_cell": 2, + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "element_u = basix.ufl.element(\"Lagrange\", \"triangle\", 2, shape=(2,))\n", + "element_p = basix.ufl.element(\"DG\", \"triangle\", 0)\n", + "error_plot(element_u, element_p, convergence_p=1)" + ] + }, + { + "cell_type": "markdown", + "id": "f827d1e3-7ffa-422c-97e9-16eae8c2da55", + "metadata": { + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## Crouzeix-Raviart " + ] + }, + { + "cell_type": "markdown", + "id": "be88c5c0-43cf-492e-b6c8-2f4ab7689f97", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "Alternatively, the same order convergence can be achieved using fewer degrees of freedom if a Crouzeix-Raviart {cite}`crouzeix-raviart` element is used for the velocity space." + ] + }, + { + "cell_type": "markdown", + "id": "ede4beca", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "7b8e5628", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAG2CAYAAACTTOmSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABWTUlEQVR4nO3deVhU5d8G8HsYNkHFBVEQCnNHUcw1ZQoXVFJBUXMX90rMvX5qqW2WVvpiipVp2uaSG+aCa2JaFibhhuVuinsqKAjCcN4/nmZg2AfOzBmY+3Ndc83MmcM5X/SAt895FpUkSRKIiIiIrJCN0gUQERERKYVBiIiIiKwWgxARERFZLQYhIiIisloMQkRERGS1GISIiIjIajEIERERkdViECIiIiKrZat0AZYsKysL169fR6VKlaBSqZQuh4iIiIpBkiQ8fPgQHh4esLEpvM2HQagQ169fh5eXl9JlEBERUQlcvXoVnp6ehe7DIFSISpUqARB/kJUrVzb4LCMjA3v27EHXrl1hZ2enRHlE+eK1SZaK1yaZS3JyMry8vPT/jheGQagQutthlStXzjcIOTk5oXLlyvyBJovCa5MsFa9NMrfidGthZ2kiIiKyWgxC+YiMjISPjw9at26tdClERERkQrw1lo/w8HCEh4cjOTkZLi4uSpdDRGT1tFotMjIylC6DLIidnR3UanWpj8MgREREFkuSJNy8eRMPHjxQuhSyQFWqVEGtWrVKNcUNgxAREVksXQhyc3ODk5MT53QjACIgp6am4vbt2wAAd3f3Eh+LQYiIiCySVqvVh6Dq1asrXQ5ZmAoVKgAAbt++DTc3txLfJmNnaSIiski6PkFOTk4KV0KWSndtlKb/GIMQERFZNN4Oo4LIcW0wCBEREZHVYhAiIiIiq8UgREREZMECAgIwefJkpcsotxiEiIiIrNTEiRPRsmVLODg4wM/PT+lyFMEgRGRG58+fx+PHj5Uug4gsjCRJyMzMNMmxtVotsrKyCvx81KhRGDBggEnOXRYwCOWDa42RKSQkJKBDhw4ICQlhGCIqpZSUlAIfaWlpxd43989iQfsZKz09HRMnToSbmxscHR3h7++Po0eP6j+PiYmBSqVCdHS0vkXm8OHDSElJwfDhw1GxYkW4u7tj4cKF+R57+vTpqF27NpydndG2bVvExMToP1+9ejWqVKmCH3/8ET4+PnBwcMA///yTb52ffvopwsPD8cwzzxj9PZYXDEL5CA8PR0JCgsFFS1Ra9+7dQ0pKCvbu3cswRFRKFStWLPDRt29fg33d3NwK3DcoKMhgX29v73z3M9Ybb7yBTZs24euvv0ZcXBzq1auHbt264d69ewb7zZgxA/Pnz8eZM2fQrFkzvP766zh48CC2bt2KPXv2ICYmBnFxcQZfM2HCBBw5cgTr1q3DiRMn0L9/f3Tv3h3nzp3T75OamooFCxZgxYoVOH36NNzc3Iz+HqwFgxCRmfj7+yM6OhrOzs4MQ0TlWEpKCj777DN8/PHHCAoKgo+PD7788ktUqFABK1euNNj33XffRWBgIOrWrQt7e3usXLkSn3zyCTp37gxfX198/fXXBrfM/vnnH6xatQobNmyARqNB3bp1MX36dPj7+2PVqlX6/TIyMrBs2TK0b98eDRs25KSUheASG0RmpNFoEB0djaCgIH0Y2rp1q36qeCIqnkePHhX4We6lFnTrUeXHxsawPeDy5culqgsALly4gIyMDHTo0EG/zc7ODm3atMGZM2cM9m3VqpXB1z158gRt27bVb6tWrRoaNmyof3/y5ElotVo0aNDA4Djp6ekGy5DY29ujWbNmpf5erAGDEJGZMQwRlZ6zs7Pi+8rB2PM9evQIarUax44dyxP4ct7Cq1ChAmfkLibeGiNSgC4MOTs74+HDh6VaJ4eILIvuNtcvv/yi35aRkYGjR4/Cx8en0K+zs7PD77//rt92//59nD17Vv++RYsW0Gq1uH37NurVq2fwqFWrlmm+oXKOLUJECtFoNDhw4AAaNGiAypUrK10OEcnE2dkZr776Kl5//XVUq1YNTz31FD766COkpqZi9OjRBX5dxYoVMXr0aLz++uuoXr063Nzc8OabbxrcvmvQoAGGDBmC4cOHY+HChWjRogXu3LmD/fv3o1mzZujRo4dRtZ4/fx6PHj3CzZs38fjxY8THxwMAfHx8YG9vX6Lvv6xhECJSUO4pGn744Qf06tWLt8mIyrj58+cjKysLw4YNw8OHD9GqVSvs3r0bVatWLfTrPv74Yzx69Ai9evVCpUqVMG3aNCQlJRnss2rVKrz//vuYNm0aEhMT4erqinbt2qFnz55G1zlmzBgcPHhQ/75FixYAgEuXLsHb29vo45VFKkmSJKWLsFTJyclwcXFBUlJSnv+xZ2RkYOfOnXjxxRdhZ2enUIVUnkRERGDKlCkIDAwsVZ8hXptkqYy9NtPS0nDp0iXUqVMHjo6OZqiQypqCrpHC/v3OjX2EiCxEy5YtObSeiMjMGISILETODtQMQ0RE5sEgRGRBGIaIiMyLQYjIwuQXhrRardJlERGVSwxC+eCiq6S0nGGoW7dueSZOIyIieXD4fD7Cw8MRHh6u73VOpASNRoOzZ8/Cw8ND6VKIiMottggRWbCcISgpKQnTpk1jnyEiIhmxRYioDJAkCX379sX+/ftx8uRJrk1GRCQTtggRlQEqlQpz587laDIiIpkxCBGVERxaT0QkPwYhojKEYYiofOrTpw+qVq2Kfv36KV2K1WEQIipjcoehsWPHKl0SEZXSpEmT8M033yhdhlViECIyA60WiIkB1q4Vz6WdH1EXhurVq4c333xTjhKJSEEBAQGoVKlSvp/9+++/cHNzw+XLl81blIIGDhyIhQsXmuVcDEJEJrZ5M+DtDXTsCAweLJ69vcX20tBoNDhz5gwaN24sR5lEZAIvvPACRo0alWf7smXLULFiRWRlZRV5jHnz5iEkJATe3t4mqNAyvfXWW5g3bx6SkpJMfi4GISIT2rwZ6NcPuHbNcHtiothe2jBka5s9A8a+ffvYZ4ioAHK3yhaHJEn4888/0bJlyzyf/fHHH/Dz84ONTeH/DKempmLlypUYPXq0qcq0SE2bNkXdunXx3XffmfxcDEJEJqLVApMmAZKU9zPdtsmT5fmFnJKSgsGDB+PHH39E3759kZ6eXvqDEpUTpmqVLcq5c+fw8OHDAoNQfttz27lzJxwcHNCuXTuD7d7e3lCpVHj77bf120aMGAGVSoWAgIDSll5spqyjV69eWLduXekKLAYGISITOXQob0tQTpIEXL0q9istZ2dnbNq0Cc7Ozti3bx8++OADtgwRwfStsoU5duwY1Go1mjdvbrD98ePHSEhIwLPPPlvkMQ4dOlSswFQetWnTBrGxsSb/jx2DEJGJ3Lgh735FyTma7Pjx4+jbty/DEJU7kgSkpBTvkZwMTJxYeKvspEliv+IcL7/jFCYuLg5arRZOTk5QqVT6h5OTE7RarUEQ6tKlC/r374+dO3fC09MTR44cAQBcuXLFatcb9PDwwJMnT3Dz5k2TnodBiMhE3N3l3a84NBoNtm3bBkdHR/YZonIpNRWoWLF4DxcX0fJTEEkSLUUuLsU7XmqqcbXGxcWhT58++PPPPw0e//vf/1ChQgX4+Pjo9923bx/u3LmD1NRUXLt2Dc899xwA0Xrk6OhYkj8qXL58GSqVCgMHDixy3xkzZhiEtfwef/31V4nqKCndMkKpxv7BG4lBiMhENBrA0xNQqQrex91d7Ccnf39/zJ49Wz/P0OLFi+U9AREVS1xcHAICAuDn52fwuHfvHpo1awa1Wl3kMVxdXXH//v0821X//WLR5uhkWJoRVtOmTcOZM2cKfTzzzDMmryOne/fuAQBq1Kghy/EKwiCUj8jISPj4+KB169ZKl0JlmFoN6DJIQWFIqxX9hOTWpEkTbNu2DSNGjMC0adPkPwGRQpycgEePivfYubN4x9y5s3jHc3Iqfp0XL17EgwcP8u0HFBcXV+x+Py1atEBCQkKe7W5ubgCAs2fPAgDu3r2LmJiYfI9x9+5ddO3aFS4uLpg4cWK++9SoUQONGjUq9GFvb1/iOs6dO4cePXqgZcuWeP7553H79m0AQIcOHfD7778DAEaPHo3/+7//03/NqVOn4OnpCVdX13xrlguDUD7Cw8ORkJCAo0ePKl0KlXGhocDGjUDt2obb3d2BmjWB27eBF14ALl6U/9z+/v5YtWoV7OzsAABZWVlIS0uT/0REZqRSAc7OxXt07Vp4q6xKBXh5if2Kc7zCWndzO3bsGGxsbODn52ewPSMjA6dOnSpWR2kA6NatG06fPp2nVahz584AgB9++AEajQa+vr5ITk7O9xg///wzunbtiqeffhpLlizBuXPniv+NFKE4daSnp2P8+PH44osvcOzYMQwePBjLly8HAMyePRvz58/HokWLYGNjgylTpui/7tChQ+jatatstRaEQYjIxEJDgcuXgQMHgDVrxPPVq8CxY0CDBsA//wDPPw/I+Lspj6ysLLz88ssIDg5mnyGyGoW1yureR0SI/eQWFxeH+vXro2LFigbbExISkJ6eXuwg5Ovri2effRY//PCDwfaZM2di6NChqFKlCs6ePYvhw4cX2BcoICAA06dPR3BwMADIOkN1ceqIiorC6dOn0bNnT/j5+WHx4sX6/6B1794d//zzD3bs2IFly5bpvyYtLQ1RUVHmWUJIogIlJSVJAKSkpKQ8nz158kSKioqSnjx5okBlVF7cuCFJPj6SBEiSu7skJSSU/pj5XZtnzpyRnJ2dJQBSYGCglJqaWvoTERnJ2N+bjx8/lhISEqTHjx+X6rybNkmSp6f4OdM9vLzE9rJg+/btUuPGjSWtVmvU1126dEkCIA0YMECSJEmaO3euBECKjo42RZkFevPNN6U1a9bk+1lsbKzk7e0t9enTx2D7smXLpMDAwCKPXdA1Uti/37mxRYhIQbVqiRYiX18xjD4gADh1Sv7zNGrUiKvWk9XKr1X20iWxvSzo0aMHxo0bh8TChsBZsFq1amH37t369ydOnAAAJCYmYsyYMfjpp59w+fJlnMrxy8/Ozg5LliwxS30MQkQKc3MTv5hbtBB9hgICgPh4+c+Te9V6hiGyJmq1+NkaNEg8m+J2mClNnjwZXl5eSpdRIiNHjsSDBw/QqFEjNG/eHN999x0eP36M/v37Y8mSJahTpw5mzpyJ9957T/81Y8aMQcOGDc1Sn0qSjJ0iynokJyfDxcUFSUlJqFy5ssFnGRkZ2LlzJ1588UX9vU6i0rh/H+jWDTh6FKhaFdi7FyjJhLJFXZuHDh1CUFAQUlJSEBgYiK1bt+rn6yAyJWN/b6alpeHSpUuoU6dOiefSofKtoGuksH+/c2OLEJGF0IWf554ToahzZ+C/UaWyytkydODAAcTGxsp/EiKiMoJBiMiCuLgAu3cD/v5AUhIQGAj88ov859GFoQ0bNuCFF16Q/wRERGUEgxCRhalUCYiOFv0YHj4Ut8t+/ln+82g0GvTu3Vv//tq1a+wzRERWh0GIyAJVrAjs2AF06SIWe+zeHdi/33Tnu3z5MjQaDTtQE5HVYRAislBOTsC2bUBQEPD4MdCzp7htZgqJiYm4c+cOR5MRkdVhECKyYI6OwJYtQK9eQFoaEBwMbN8u/3k6dOjAofVEZJUYhIgsnIODWK8sNBR48kQ8R0XJfx7OM0RE1ohBiKgMsLcH1q0DBgwAMjKA/v1FOJIbwxARWRsGIaIyws4O+O47YMgQIDMTGDgQWLtW/vPkDEM3btxASkqK/CchIrIQtkoXQETFZ2sLfP21CEWrVwNDh4oWouHD5T2PRqPBvn378Mwzz8DV1VXegxMRWRC2CBGVMWo1sHIlMHYskJUFjBgh3sutXbt2cHNz07/fsWMHb5MRUbnDIERUBtnYAJ9/DoSHA5IEjBkj3pvKqlWr0LNnT/YZIpLJ1atXERAQAB8fHzRr1gwbNmxQuiSrxSBEVEbZ2ABLlgCTJ4v3r74q3ptCvXr12IGaSEa2traIiIhAQkIC9uzZg8mTJ7M/nkIYhIjKMJUKWLQIeOMN8X7iRCAiQv4fa44mI5KXu7s7/Pz8AAC1atWCq6sr7t27Z7DPv//+Czc3N1y+fNn8BSpg4MCBWLhwodnPyyCUj8jISPj4+KB169ZKl0JUJJUKmD8feOst8f6NN9TYtKm+7OdhGCIyXocOHTBu3LhC9zl27Bi0Wi28vLwMts+bNw8hISHw9vY2YYWW46233sK8efOQlJRk1vMyCOUjPDwcCQkJOHr0qNKlEBWLSgW89x7wzjvi/bff+uD9983TMpSRkSH7eYhkp9UCMTFizomYGPHexLKysnD8+HE8++yzBe5z7949DB8+HMuXLzfYnpqaipUrV2L06NGmLtNiNG3aFHXr1sV3331n1vMyCBGVI3PmAO+9J37Bv/uuGrNni87UcsoZhlq1agVbW87CQRZu82bA2xvo2BEYPFg8e3uL7Sb0999/IyUlpcAglJ6ejt69e2PGjBlo3769wWc7d+6Eg4MD2rVrp9928+ZNqFQqLF68GC1atICjoyOaNGmCw4cPm/T7yKk0NaxduxYVKlTAjRs39NtGjhyJZs2a6VuBevXqhXXr1pms/vwwCBGVM//7XxZGjDgFAHj/fWDGDNOEoZMnT2LevHlQqVTyHpxITps3A/36AdeuGW5PTBTbTRiG4uLiYGtri2bNmuX5TJIkjBgxAp06dcKwYcPyfH7o0CG0bNnSYFt8fDwA4KuvvkJERATi4+Px1FNPYciQIcjKyjLJ95BbaWoYOHAgGjRogA8++AAAMHfuXOzbtw/R0dFwcXEBALRp0waxsbFIT0836feRE/8rR1QO9e59Ac2bN8aUKWp89JFYo2zRInELTS516tTRv378+DE++OADzJo1CxUqVJDvJES5SRKQmlq8fbVaMYIgv/8JSJL4gZg0CejSRUzQVRQnJ6N+iOLi4uDj4wNHR8c8n/3yyy9Yv349mjVrhqj/Fg/89ttv4evrCwC4cuUKPDw8DL7m+PHjsLOzw9atW/X9ht5//320atUKiYmJefoYmUJpalCpVJg3bx769euHWrVqYcmSJTh06BBq166t38fDwwNPnjzBzZs38fTTT5v62wHAIERUboWHZ8HRUY1XXwUiIsQM1J9+Kobdy23IkCHYsmULfv/9d2zdupVhiEwnNRWoWFGeY0mSaCn6rzWiSI8eAc7OxT58XFxcgbfF/P39C21Befz4cZ4AFR8fj9DQUIPO05UrVzbYZ+vWrThw4AAiIiIKPPaMGTOwYMGCQms/c+YMGjVqlGd7cWooTM+ePeHj44N3330Xe/bsQZMmTQw+1/3uSC1u2JUBb40RlWOvvCJmnVapgMhIMdeQKVrQp0yZwtFkRLnEx8fnub1VXK6urrh//36e4+mG3OscOXIErq6u+laVEydO5Nknt2nTpuHMmTOFPp555pkCv6eiaijMrl278Ndff0Gr1aJmzZp5PtdNIVCjRo0ijyUXBiGicm7UKLEumY0NsHw5MHq0/ANmOLSezMbJSbTMFOexc2fxjrlzZ/GO5+RU7DIvXLiABw8eFDpirDAtWrRAQkKC/v3jx49x7tw5aHP88GZlZSEiIgJhYWGw+a+p98SJEzh79iw6dOiAZ555BqdOncpz7Bo1aqBRo0aFPuzt7fN8XXFqOHfuHHr06IGWLVvi+eefx+3bt/X7xsXF4aWXXsLKlSvRuXNnzJ49O885Tp06BU9PT7OuccggRGQFhg8Hvv1WdINYvRoICxMr2MuJYYjMQqUSt6eK8+jaFfD0LLhfj0oFeHmJ/YpzPCP7BwGAWq3GqVOn9I+zZ88W6+u7deuG06dP61uFTp48CZVKhe+++w5HjhzBmTNnMGDAADx48ABv6SYRgwhC3t7e+OWXXzBx4kRs3bq12DUXpaga0tPTMX78eHzxxRc4duwYBg8erJ8W4PLly+jRowdmzZqFQYMG4d1338WmTZv0f046hw4dQteuXWWruTgYhIisxODBYgoVW1vg+++zV66XU+4wFBYWJu8JiIyhVgOLF4vXuUOM7n1ERPE6ShtJ9w98u3bt4Ovrq38Ud14gX19fPPvss/jhhx8AiFtSjRo1wqxZs9C3b1+0atUKWq0WBw8eRJUqVQCIFhutVqufwDEjI0P/mRyKqiEqKgqnT59Gz5494efnh8WLF8POzg737t1D9+7dERISghkzZgAA2rZti6CgIMyaNUt//LS0NERFRWHs2LGy1VwsEhUoKSlJAiAlJSXl+ezJkydSVFSU9OTJEwUqIypYUdfmli2SZGcnSYAkhYZKUnq6/DX8/PPPkqenpxQbGyv/wanMMvb35uPHj6WEhATp8ePHpTvxpk2S5OkpLnrdw8tLbLdg27dvlxo3bixptVpp/Pjx0qBBgwrdPzY2VhowYID+/bBhw6QDBw7IVk9RNbz55pvSmjVrSnz8ZcuWSYGBgUZ9TUHXSGH/fufGFiEiK9O7N7BlC2Bvnz3FitxTdmg0Gpw/f57L1JBlCA0FLl8GDhwA1qwRz5cuie0WrEePHhg3bhwSExMRHx+f73xEOZ04cUI//B4Qt7Jyvi+tomqoVasWdu/ebVCPMezs7LDEVCtHF4JBiMgK9egB/Pgj4OgIbNsG9OkDpKXJew4HBwf969jYWPTv3599hkg5ajUQEAAMGiSeTXA7zBQmT54MT09PnDx50qgglJmZiQcPHqB69eqy1CFJUpE1jBw5Eg8ePECjRo3QvHlzo5fKGDNmDBo2bFjaUo3GeYSIrFS3bsD27UCvXkB0NBAcDERFGTUwpljS0tIQGhqKxMREJCUlcZ4hIiOpVCokJycXud9iXX8oALa2trh06ZJZa3B2dtZPDlmWsEWIyIp17ixCkLMzsHevaCl69Ejeczg6OmLt2rUcTUZEFolBiMjKvfACsHs3UKmSWJQ7KAh4+FDec3BoPRFZKgYhIkKHDqJFyMUFOHxYTKvy32LQsmEYIiJLxCBERACAtm2B/fuBqlWB334T61DmmuG/1HKHoQ8//FDeExARGYlBiIj0WrYUI4tdXYE//gA6dQL+/Vfec+jCUGhoKGbOnCnvwYmIjMQgREQGmjcXYcjNDYiPBzp2BHIsFyQLjUaDTZs26UePSZKEJ0+eyHsSKjckSVK6BLJQclwbDEJElEfTpqLjdK1awMmTIgzdvCkWa42JEUt1xMTIs3irJEmYOXMmevbsyT5DZMDOzg4AkJqaqnAlZKl014buWikJziNERPlq3Bg4eFDcHktIAHSLaN+4kb2Pp6dYyqk0E/RevnwZS5cuRUpKCkJCQjjPEOmp1WpUqVJFv4K5k5MTVEYsfErllyRJSE1Nxe3bt1GlShWoSzFBJoMQERWoQQMRhtq1MwxAOomJYomOjRtLHobq1KmD6OhoBAUF6UeTMQyRTq1atQBAH4aIcqpSpYr+GikpBiEiKpS3t1ixPj+SJBbxnjwZCAkp+aoFug7UDEOUm0qlgru7O9zc3JCRkaF0OWRB7OzsStUSpMMgRESFOnRI9A8qiCQBV6+K/QICSn4ehiEqjFqtluUfPaLc2FmaiAqV3y2x0uxXmJzzDO3btw8xMTGlPygRUSHYIkREhXJ3l3e/oujC0MWLFxEUFCTPQYmICsAgRESF0mjE6LDERHEbLD/u7mI/+c6pgSbHAe/cuYOKFSvyNhkRyY63xoioUGq1GCIPiI7R+UlLAy5cMM35b926hYCAAK5NRkQmwSCUj8jISPj4+KB169ZKl0JkEUJDxRD52rUNt3t4AF5eYk2ygADg77/lP/elS5dw5coVLtRKRCbBIJSP8PBwJCQk4OjRo0qXQmQxQkOBy5fF8htr1ojnf/4Bjh0TM1HfuCFmoJY7DLVr146r1hORyTAIEVGxqdWi5WfQIPGsVgM1agA//QT4+oowFBAA/PWXvOfNvWo9wxARyYVBiIhKTReGmjUTcw4FBABnzsh7DoYhIjIFBiEikoWrK7B/v1i9/tYtcZssIUHec+QMQ+fPn8e9e/fkPQERWR0GISKSjS4M+fllh6HTp+U9h0ajwZ49e3DgwAHUzt17m4jISAxCRCSr6tWBffuAFi2A27dFGDp1St5ztG/fHk8//bT+fUxMDG+TEVGJMAgRkex0YejZZ4E7d4BOneQPQzqbN29GYGAg+wwRUYkwCBGRSVSrBuzdC7RsKcJQx47AyZPyn6dGjRpwcHBgB2oiKhEGISIyGV0YatUKuHtXhKETJ+Q9B0eTEVFpMAgRkUlVrSrCUOvWwL//ittkx4/Lew6GISIqKQYhIjK5KlWAPXuANm2yw1B8vLznyC8Mpaeny3sSIip3GISIyCx0YahtW+DePaBzZ+DPP+U9R84wVKdOHdjZ2cl7AiIqdxiEiMhsXFyA3buBdu2yw1BcnLzn0Gg0OHbsGD777DPY2PBXHBEVjr8liMisdGHouefEqvVduoiFW+XUsGFDfQjKyMjAhx9+yD5DRJQvBiEiMrvKlYFdu4D27bPD0B9/mOZcY8eOxaxZs9iBmojyxSBERIrQhaEOHYAHD4DAQODoUfnPM3r0aI4mI6ICMQgRkWIqVQKiowF//+wwFBsr7zk4tJ6ICsMgRESKqlQJ2LkT0GiApCQRhn7/Xd5zMAwRUUFKHIRu376NU6dO4cSJEwYPIiJj6cLQ888DyclA167Ab7/Je47cYWjQoEHynoCIyiRbY7/g2LFjCAsLw5kzZyBJEgBApVJBkiSoVCpotVrZiySi8q9iRWDHDqBnT+DgQRGGdKPL5KILQ3379sXEiRPlOzARlVlGB6FRo0ahQYMGWLlyJWrWrAmVSmWKuojICuUMQzExQLdu2aPL5KLRaHDp0iU4OzvLd1AiKrOMvjV28eJFfPTRR2jbti28vb3x9NNPGzyIiErD2RnYvl0s0PrwoQhDv/wi9zmyQ1BCQgKGDh3KPkNEVsroINS5c2ccl3vFRCKiHHRhqFMn4NEjoHt34PBh+c+TkZGB4OBgfP/99+xATWSljL41tmLFCoSFheHUqVNo2rRpnrV8goODZSuOiKyXkxOwbRsQHAzs3y/CUHS0GF0mFzs7O6xatQpBQUH60WRbt25FhQoV5DsJEVk0o4PQkSNH8MsvvyA6OjrPZ+wsTURyyhmG9u0DgoKyR5fJRdeBmmGIyDoZfWvstddew9ChQ3Hjxg1kZWUZPBiCiEhuFSoAP/4o5hdKSQFefFGMKpMT5xkisl5GB6F///0XU6ZMQc2aNU1RDxFRHhUqAFu3io7TujAUEyPvOXKHodmzZ8t7AiKySEYHodDQUBw4cMAUtRARFahCBSAqSvQVSk0FevQA5P5VpAtDgYGBmDNnjrwHJyKLZHQfoQYNGmDmzJk4fPgwfH1983SW5iRlRGQqjo7Ali1AaKjoON2jR/boMrloNBrs3r3bYI60zMxM2Noa/euSiMqAEo0aq1ixIg4ePIiDuW7Uq1QqBiEiMilHR2DzZqBvX9FxumdP0aG6c2f5zpEzBH300UfYt28fO1ATlVNGBSFJkhATEwM3Nzf+QiAixeQMQ7qZqLdtA7p0kfc8iYmJePfdd5GSksLRZETllFF9hCRJQv369XHt2jVT1UNEVCwODsCmTSIEpaUBvXoBe/fKe47atWtzNBlROWdUELKxsUH9+vXx77//mqoeIqJic3AANm4UIUgXhvbskfccHFpPVL4ZPWps/vz5eP3113Hq1ClT1ENEZBRdGAoJAdLTxeSLu3fLew6GIaLyy+ggNHz4cMTGxqJ58+aoUKECqlWrZvAgIjI3e3vghx+A3r1FGAoJEavWyyl3GNq+fbu8JyAiRRg9aiwiIsIEZRARlY69PbB+PTBwoBhiHxIinl98Ub5z6MJQXFwc+vfvL9+BiUgxRgehsLAwU9RBRFRqOcPQ5s1Anz7iuUcP+c6h0WigybHya1JSEuzt7TmajKiMKtEMYVqtFlFRUThz5gwAoEmTJggODoZarZa1OCIiY9nZAevWAYMGiVFloaHZo8vklpSUhK5du8LFxYVD64nKKKP7CJ0/fx6NGzfG8OHDsXnzZmzevBlDhw5FkyZNcOHCBVPUSERkFDs7YO1aoH9/4MkTEYa2bZP/PGfPnsXp06fZgZqoDDM6CE2cOBF169bF1atXERcXh7i4OPzzzz+oU6cOZ5UmIothZwd8/z3w0ktARoaYfPHHH+U9R+vWrTmajKiMMzoIHTx4EB999JHBCLHq1atj/vz5eZbcICJSki4MDRggwlC/fmIVe61WrF6/dq141mpLfg4OrScq24wOQg4ODnj48GGe7Y8ePYK9vb0sRRERycXWFvjuO9GBOiND3CarWRPo2BEYPFg8e3uLTtUlxTBEVHYZHYR69uyJcePG4ffff4ckSZAkCb/99hteeeUVBAcHm6JGIqJSsbUFvv0W0GiArCwg9+T4iYmitUiuMHTixAlcv369dEUTkVkYHYQ+/fRT1K1bF8899xwcHR3h6OiIDh06oF69eli8eLEpaiQiKjWVCrh0Kf/PJEk8T55c+ttku3btwoEDB1C3bt2SH4iIzMboIFSlShVs3boVf//9NzZu3IiNGzfi77//xpYtW+Di4mKKGktl+/btaNiwIerXr48VK1YoXQ4RKeTQIaCw9aIlCbh6VexXGv7+/mjcuLH+fWxsLG+TEVmwEs0jBAD169dH/fr15axFdpmZmZg6dSoOHDgAFxcXtGzZEn369EH16tWVLo2IzOzGDXn3K459+/ahV69e0Gg0nGeIyEIZHYS0Wi1Wr16N/fv34/bt28jKyjL4/KeffpKtuNKKjY1FkyZNULt2bQBAUFAQ9uzZg0GDBilcGRGZm7u7vPsVh4ODA9Rqtb4DNcMQkeUx+tbYpEmTMGnSJGi1WjRt2hTNmzc3eMjp559/Rq9eveDh4QGVSoWoqKg8+0RGRsLb2xuOjo5o27YtYmNj9Z9dv35dH4IAoHbt2khMTJS1RiIqGzQawNNT9BUqSPXqYj/5zsnRZESWzugWoXXr1uGHH37Ai3KuZFiAlJQUNG/eHKNGjUJoaGiez9evX4+pU6fi888/R9u2bREREYFu3brh77//hpubm9HnS09PR3p6uv59cnIyACAjIwMZGRkG++re595OlC+tFqrDh8V9F3d3SP7+gImWpOG1WbCFC1UYOFANlQqQpJyJSAKgwv37En74QYt+/STZztmuXTts27YNvXr1wt69exEcHIxNmzZZZcsQr00yF2OuMZUkSUb9xHt4eCAmJgYNGjQwurDSUKlU2LJlC3r37q3f1rZtW7Ru3RpLly4FAGRlZcHLywuvvfYaZsyYgV9//RUff/wxtmzZAgCYPHky2rRpg8GDB+d7jrfffhvvvPNOnu1r1qyBk5OT/N8UWQX3I0fgu2IFKuQYs/24enWcHDMGN557TsHKrNORI+5YscIX//6bHUSqV0+Fu3sKTp2qARubLEydegz+/vIOfz99+jTee+89pKWloXnz5pg1axYcHBxkPQcRCampqRg8eDCSkpJQuXLlQvc1OggtXLgQFy9exNKlS6EqrI1ZZrmD0JMnT+Dk5ISNGzcahKOwsDA8ePAAW7duRWZmJho3boyYmBh9Z+lff/21wM7S+bUIeXl54e7du3n+IDMyMrB3714EBgbCzs5O9u+XygfVli1QDxwISBIM2h/++9nRrlsHqU8fWc/Ja7NoWi1w+LBK10AHf3/xa3DcODW+/dYGarWEb77Ron9/+VqGAODw4cPo1asXunfvjm+//Ra2tiUer1Im8dokc0lOToarq2uxgpDRP4WHDx/GgQMHEB0djSZNmuS5mDeXZkYyI9y9exdarRY1a9Y02F6zZk389ddfAABbW1ssXLgQHTt2RFZWFt54441CR4w5ODjk+z80Ozu7An9oC/uMrJxWC0yblj1JTQ4qSQJUKthOny4WwTLBbTJemwWzswO6dMm7fdUq8VexerUKw4fbQq0Wy3PIpWPHjvjtt9/QqFEjqwtBOfHaJFMz5voy+iexSpUq6CPz/2BNKTg4mDNekzKMmbgmIMBsZVHB1GpAN93Y6tXAkCHitZxhqGnTpvrXWVlZWLp0KcaOHWuVfYaILIHRQWjVqlWmqMNorq6uUKvVuHXrlsH2W7duoVatWgpVRZSDEhPXUKnpwpBKJVqITBGGdKZMmYJPP/0U27dv59B6IoUYPXzeUtjb26Nly5bYv3+/fltWVhb279+P59gBlSyBEhPXkCx0YWjkSHGHc8gQYP16+c/Tr18/Dq0nUphFB6FHjx4hPj4e8fHxAIBLly4hPj4e//zzDwBg6tSp+PLLL/H111/jzJkzePXVV5GSkoKRI0cqWDXRf4ozcY2Hh7wT15BsbGwMw9DgwfKHIc4zRKQ8iw5Cf/zxB1q0aIEWLVoAEMGnRYsWmDNnDgBgwIAB+OSTTzBnzhz4+fkhPj4eu3btytOBmkgRajWgW4i4oDAkScDt2+ariYySMwxlZYkwtG6dvOdgGCJSlkUHoYCAAEiSlOexevVq/T4TJkzAlStXkJ6ejt9//x1t27Yt9XkjIyPh4+OD1q1bl/pYZOVCQ4GNG4EcM5wDELfDXF1F/6AuXYA7d5Spj4qUOwwNGWL6MNSvXz8YObMJEZWQ0UHo4sWLpqjDooSHhyMhIQFHjx5VuhQqD0JDgcuXgQMHgDVrxPPVq8Dvv4uAlJAgwlCOCRfJspgzDFWtWhVjx4416zxtRNbM6FFj9erVwwsvvIDRo0ejX79+cHR0NEVdROWLWp13iPwzzwA//QS88AJw4gTQtSuwfz9QpYoSFVIRdGFIpQK++kqEIUkC5FzDWaPR4NKlS3BxcZHvoERUKKNbhOLi4tCsWTNMnToVtWrVwssvv2yw0CkRGaFBAxF+atQA4uKA7t2B/9a4I8tjYwN8+SUwapRoGRo6FFi7Vt5z5AxBly9fxujRo9lniMiEjA5Cfn5+WLx4Ma5fv46vvvoKN27cgL+/P5o2bYpFixbhDvs6EBnHxwfYtw+oVk3cLuvRA3j0SOmqqAC6MDR6dHYYWrNG/vNotVr06tULX331FTtQE5lQiTtL29raIjQ0FBs2bMCCBQtw/vx5TJ8+HV5eXhg+fDhucJI4ouJr1gzYuxdwcQEOHwaCg4HUVKWrogLY2ADLl2eHoWHD5A9DarUay5Yt42gyIhMrcRD6448/MH78eLi7u2PRokWYPn06Lly4gL179+L69esICQmRs06i8u/ZZ4Hdu4FKlUSH6j59gLQ0pauiApgjDHFoPZHpGR2EFi1aBF9fX7Rv3x7Xr1/HN998gytXruD9999HnTp1oNFosHr1asTFxZmiXqLyrW1bYOdOwNkZ2LMH6NcPePJE6aqoALowNGZMdhj6/nt5z8EwRGRaRgehzz77DIMHD8aVK1cQFRWFnj17wsbG8DBubm5YuXKlbEWaG+cRIkX5+wPbtgGOjsCOHcDAgUBGhtJVUQFsbIAvvsgOQ8OHmz4Mvf766/KegMiKGR2Ezp07h5kzZ8K9kPWR7O3tERYWVqrClMR5hEhxHTsCW7cC9vbAli2iqSEzU+mqqAC6MDR2bHYY+u47ec+hC0Pt2rXTz65PRKVn9DxCJ06cyHe7SqWCo6MjnnrqKTg4OJS6MCKr17UrsHmz6Cu0fr0IRatWiTmJyOLY2ACffy5ef/kloPu/4NCh8p1Do9Hg119/NZhsMSsrK0+rPBEVn9FByM/Pr9AZT+3s7DBgwAB88cUXnGyRqLR69BAhqH9/4NtvRRhavlz8q0sWxxxhKOfv35UrV2LDhg3YsmULKlSoIN9JiKyI0b9Nt2zZgvr162P58uX6leGXL1+Ohg0bYs2aNVi5ciV++uknvPXWW6aol8j69OkjhiPZ2AArVwITJogpjcki6cLQuHHiNllYmPy3yQDgzp07mDJlCnbv3s0O1ESlYHSL0Lx587B48WJ069ZNv83X1xeenp6YPXs2YmNj4ezsjGnTpuGTTz6RtVgiq/XSS2L02PDhwGefAQ4OwKJFBa9qT4qysRF/TYBowBs+XLyWs2WoRo0a2LFjB4KCgvSjybZu3cqWISIjGd0idPLkSTz99NN5tj/99NM4efIkAHH7jBMqEsls6FCx2BUAREQAM2eyZciC6cLQuHHir2n4cHF3U04cWk9UekYHoUaNGmH+/Pl4kmNuk4yMDMyfPx+NGjUCACQmJqJmzZryVUlEwqhRwLJl4vWCBcDbbytaDhVOF4ZeflmEobAwhiEiS2P0rbHIyEgEBwfD09MTzZo1AyBaibRaLbZv3w4AuHjxIsaPHy9vpUQkvPqquE02eTLw7rviNtmsWUpXRQWwscnOrl98kd2Betgw+c6hC0O622Tr1q3DyJEj5TsBUTlmdBBq3749Ll26hO+//x5nz54FAPTv3x+DBw9GpUqVAADD5PwJJ6K8Jk0C0tOB//0PePNNEYamTVO6KiqALgypVKIjdVhY9u0yuejC0E8//YQRI0bId2Cics6oIJSRkYFGjRph+/bteOWVV0xVk+IiIyMRGRkJrVardClEBXvjDRGG5swBpk8XQ+tfe03pqqgANjZAZKR4/fnngC6ryB2GNBqN/n1qaipUKhU7UBMVwqg+QnZ2dkizgkUgObM0lRmzZ4sWIQCYOFEMUSKLpQtDr7wiWoRGjAC+/to050pNTUVISAj7DBEVwejO0uHh4ViwYAEyOd0/kWV47z3RIgQAL78M1TffKFsPFUoXhl59VYShkSNNE4b++usvHDlyhB2oiYpgdB+ho0ePYv/+/dizZw98fX3h7Oxs8PnmzZtlK46IikGlAj76SHSg/vRTqMeORe3Jk4EXX1S6MiqAjQ2wdKl4/dlnIgwB2R2p5fDss88adKDmPENE+TO6RahKlSro27cvunXrBg8PD7i4uBg8iEgBKpWYW+jll6GSJDy7eDFUmzYpXRUVQheGcrYMrV4t7zk4tJ6oaEa3CK1atcoUdRBRaalUwLJlyEpLg83XX0M1bBhQoQIQEqJ0ZVSAnB2oP/tMTBMFZHeklkPuofVsGSIyVKKVGzMzM7Fv3z588cUXePjwIQDg+vXrePTokazFEZGRbGyg/fxzXH3hBagyM8VirdHRSldFhVCpDPsMjRoFyP3/zZwtQ7Gxsbh48aK8JyAqw4xuEbpy5Qq6d++Of/75B+np6QgMDESlSpWwYMECpKen43Pd0stEpAy1Gn9OnIjarq6w2bRJLNq6fTvQpYvSlVEBdGHov0Y9jB4ttss5J6IuDFWoUAFNmjSR78BEZZzRLUKTJk1Cq1atcP/+fYOm1T59+mD//v2yFkdEJSOp1dB+8424LZaeDgQHAwcPKl0WFUKlEn2Gxo8XLUOjR5umZahVq1b69ydPnmSfIbJ6RgehQ4cO4a233oK9vb3Bdm9vbyQmJspWGBGVkp0dsH69GD32+DHQowfw669KV0WFyC8MffWVac4VGxsLf39/dqAmq2d0EMrKysp3xuVr167pl9ggIgvh4ABs2iRui6WkAEFBACcKtWi6MBQeLsLQmDGmCUPp6enQarUcTUZWz+gg1LVrV0REROjfq1QqPHr0CHPnzsWL5WTeksjISPj4+KB169ZKl0JUeo6OwNatwPPPA8nJQNeuwJ9/Kl0VFUKlApYsMW0Y4tB6IsHoILRw4UL88ssv8PHxQVpaGgYPHqy/LbZgwQJT1Gh2XGKDyh0nJ9Fh+rnngAcPgMBA4ORJpauiQjAMEZmH0UHI09MTx48fx6xZszBlyhS0aNEC8+fPx59//gk3NzdT1EhEcqhUSQylb90a+Pdfcbvsr7+UrooKoQtDEyYwDBGZitHD5wHA1tYWQ4cOlbsWIjI1Fxdg926gUycgPl48HzwI1K+vdGVUAJUK+PRT8XrpUtGBWteRWi45J120sbGBSqWS7+BEFq5EQejcuXM4cOAAbt++jaysLIPP5syZI0thRGQiVasCe/cCHTsCp06JMPTzz0CdOkpXRgXQhSFdC9GYMWL76NGAVgscOgTcuAG4uwMaDaBWG38OjUaDQ4cOoXHjxnB0dJT3GyCyYEYHoS+//BKvvvoqXF1dUatWLYP/OahUKgYhorLA1RXYtw8ICBC3x3QtQ089pXRlVACVCli8WLzWhaFjx4Bt24Br17L38/QU+4WGGn+OFi1a6F9LkoRVq1Zh0KBBXI6DyjWj+wi9//77mDdvHm7evIn4+Hj8+eef+kdcXJwpaiQiU6hZE9i/H6hXD7h8WYSh69eVrooKoQtDr70m3n/2mWEIAoDERKBfP2Dz5tKd6+2338bo0aPZZ4jKPaOD0P3799G/f39T1EJE5ubhAfz0E+DtDVy4AHTuDNy6pXRVVAiVCli0CKhYMf/PJUk8T54sbpuVVJcuXdiBmqyC0UGof//+2LNnjylqISIleHmJMOTlJW6TdekC3L2rdFVUiMOHgcLWuJYk4OpV0XeopDiajKyF0X2E6tWrh9mzZ+O3336Dr68v7OzsDD6fOHGibMURkZnUqSPC0PPPiw7UgYHitlm1akpXRvm4cUPe/QqSczSZLgxt3bqVfYaoXDE6CC1fvhwVK1bEwYMHcTDXIo4qlYpBiKisqldPhKEXXhBD67t1Ex2qXVyUroxycXeXd7/C5A5Dffr0QXR0NIfYU7lhdBC6dOmSKeogIkvQqJFoCQoIAP74Q6xNtnu3mIyRLIZGI0aHJSZm9wnKzctL7CfP+UQY6tGjBwYMGMAQROWK0X2EdJ48eYK///4bmZmZctZDREpr2lTMM1SlCnDkCNCzp1iwlSyGWp09lL6gTNKjR8nmEyqIRqPBxYsXMXLkSPkOSmQBjA5CqampGD16NJycnNCkSRP8888/AIDXXnsN8+fPl71AIlJAixbAnj1A5cpissWQEIAdZS1KaCiwcSNQu7bhdt1oss8/B778Ut5zurq66l/funUL48ePZwdqKvOMDkIzZ87E8ePHERMTYzD7aJcuXbB+/XpZi1MKV58ngliTLDoacHYWt8tCQ4HUVCAmBli7VjyXZnw2lVpoqJgC6sABYM0a8Xz/PjBpkvh83Dj5wxAgJlsMCQnBZ599xtFkVOYZHYSioqKwdOlS+Pv7G9wnbtKkCS5cuCBrcUrh6vNE/2nfHti5E6hQAdi1C6heXSzNMXiwePb2Lv3MfVQqarXo0jVokHi2tQX+7/9MG4ZUKhU+/vhjDq2ncsHoIHTnzp18V5lPSUlhBzqi8uj554HXXxev09IMP5NrGmOSlUpl+jDEeYaovDA6CLVq1Qo7duzQv9eFnxUrVuC5556TrzIisgxaLfDVV/l/Jtc0xiQ7hiGi4jF6+PwHH3yAoKAgJCQkIDMzE4sXL0ZCQgJ+/fXXPPMKEVE5cOhQ3gWtcso5jXFAgNnKoqLpwhAgRpmNGydejx0r3zlyzzP02muvYcWKFfKdgMjEjG4R8vf3R3x8PDIzM+Hr64s9e/bAzc0NR44cQcuWLU1RIxEpyVzTGJNJmLNlyNfXF7Nnz5b34EQmZnSLEADUrVsXX5piKAIRWR5zTmNMJmGulqH4+HjY2GT//1qSJPYdJYtX4gkVichK6KYxLuwftIoVAX9/89VERsuvZWj5cnnPkTMEbdq0CT179mSfIbJ4DEJEVLjiTGP86BEwbVrB6z2QRdCFocmTxfuXX5Y/DAHAgwcPMGbMGOzcuZMdqMniMQgRUdEKmsbYywsYP168/vRThqEyQKUCFi0ybRiqUqUKfvzxR44mozKBQYiIiie/aYwvXQIiI4EvvhD7/N//Af/7H8OQhTNHGOLQeiorGISIqPhyT2OsW9Vz3Dhg2TLx+uOPgbfeYhiycEqEob59+yI9PV3ekxCVktFBKCUlBbNnz0b79u1Rr149PPPMMwYPIrJSr74qbo8BwAcfAO+8o2w9VCRzh6F9+/Zh79698p6AqJSMHj4/ZswYHDx4EMOGDYO7uzuHRhJRttdeAzIzgalTRRBSqwHOK2PRdGEIACIiRBgCsofYy0EXhjZu3IgATrpJFsboIBQdHY0dO3agQ4cOpqiHiMq6KVNEGHrjDWDOHLEK6MyZSldFhTBXGGrXrh127twJAMjIyEBmZiYqVKgg30mISsDoW2NVq1ZFtWrVTFELEZUXr78ubo8BwKxZot8QWTRz3CbTycjIwKBBg9iBmiyC0UHovffew5w5c5CammqKeixCZGQkfHx80Lp1a6VLISq7Zs4E3n1XvH7jjeypjclimSsM/fXXX9i1axdHk5FFMPrW2MKFC3HhwgXUrFkT3t7esLOzM/g8Li5OtuKUEh4ejvDwcCQnJ8PFxUXpcojKrtmzgYwM4L33RL8hOztgwgSlq6JCmOM2ma+vr8FCrSEhIdi6dStvk5EijA5CvXv3NkEZRFRuvfOO6DP04YeiM7VaLUaYkcUyZwdqhiFSmtFBaO7cuaaog4jKK5UKmDdPhKGPPxYzUdvayrviJ8kuvzAkSdmhSA4MQ2QJOKEiEZmeSgUsWCBGlAGiaeGrr5StiYqUu8/QK69kTyIul5zzDB0+fBinT5+W9wRERShWi1C1atVw9uxZuLq6omrVqoXOHXTv3j3ZiiOickSlAhYuFC1DS5YAY8aIlqHhw5WujAqhC0O6BVtfeUVsN0XLUGZmJlq1aiXfgYmKoVhB6P/+7/9QqVIlAEBERIQp6yGi8kylEivZZ2YCn30GjBghwtDgwUpXRoXQZVjAtGGISAnFCkJhYWH5viYiMppKBSxdKsLQl18Cw4aJDtQDBihdGRXCHGGISAnsI0RE5mdjA3z+OTByJJCVBQwZAmzapHRVVARdGNJ19TJFnyEic2MQIiJl2NiIFqHhwwGtFhg4EIiKUroqKgLDEJU3DEJEpBy1WoweGzxY3Cp76SVg2zalq6IiMAxRecIgRETKUquBr78WfYQyMoB+/YDoaKWroiIwDFF5YVQQysjIgK2tLU6dOmWqeojIGtnaAt9+C/TtCzx5AvTpA+zZo3RVVASGISoPjApCdnZ2eOqpp6DVak1VDxFZKzs7YO1aoHdvID0dCAkB9u9XuioqAsMQlXVG3xp78803MWvWLE6cSETys7MD1q8HevUC0tLEc0yM0lVRERiGqCwzeq2xpUuX4vz58/Dw8MDTTz8NZ2dng8/Lw+rzRKQge3tgwwYgNBTYuRPo0QPYtQvghHsWjfMMUVnF1eeJyPI4OIh5hUJCRF+hoCDx3L690pVRIfILQ5KUHYqILBFXnyciy+ToKOYV6tkT+OknoHt3YO9eoG1bpSujQuQOQ6++Kl4zDJGlMjoI6Rw7dgxnzpwBADRp0gQtWrSQrSgiIgBAhQpiXqEePURfoa5dgX37gNatla6MCqELQ7oFW3VhaPRoZesiyo/RQej27dsYOHAgYmJiUKVKFQDAgwcP0LFjR6xbtw41atSQu0YismZOTiIMvfgicOiQCEP79wPPPqt0ZVQIlQr45BPxWheGtFobeHoqWxdRbkaPGnvttdfw8OFDnD59Gvfu3cO9e/dw6tQpJCcnY+LEiaao0ewiIyPh4+OD1vxfJ5FlqFgR2LFD9BF68ADo0gWIj1e6KiqCLgxNnSreT5igxq5d3orWRJSb0UFo165dWLZsGRo3bqzf5uPjg8jISESXk9lgw8PDkZCQgKNHjypdChHpVKokZpxu2xa4f1+EoZMnla6KipA7DH3+eXMsX85FDchyGH01ZmVlwc7OLs92Ozs7ZGVlyVIUEVG+KlcGdu8GWrUC/v0X6NwZSEhQuioqgi4MTZ4sJuOdMEGNzz9XuCii/xgdhDp16oRJkybh+vXr+m2JiYmYMmUKOnfuLGtxRER5uLiIofQtWgB37gCdOgF//aV0VVQElQpYsCALwcHnAYg+QwxDZAmMDkJLly5FcnIyvL29UbduXdStWxd16tRBcnIylixZYooaiYgMVa0qhtI3bw7cuiXC0NmzSldFRVCpgJEjT+tbhnKGIa1WDAxcu1Y8cyUnMhejR415eXkhLi4O+/btw1///S+scePG6NKli+zFEREVqHp1MZS+UyfRV6hjR+DgQaBePaUro0LoWoZsbNT60WR//ikmEb92LXs/T09g8WIxwTiRKRkVhDIyMlChQgXEx8cjMDAQgYGBpqqLiKhorq4iDHXsKPoKdeokwlCdOkpXRoXIPbR++fK8+yQmAv36ARs3MgyRaXH1eSIq29zcxLxCDRsCV6+KUHTlitJVURFEy5CYGSE/kiSeJ0/mbTIyLa4+T0RlX61aYhmO+vVFCOrYUYQismiHDwOPHhX8uSSJv8ZDh8xXE1kfrj5PROWDhwdw4ADwwgvAhQvZfYZq11a6MirAjRvy7kdUElx9nojKj9q18w9D7u5KV0b5KO5fC//6yJSMCkKZmZlQqVQYNWoUPLlgDBFZIi+v7DB07pzoQB0TA9SsqXRllItGI0aHJSZm9wnKSaUSn2s05q+NrIdRfYRsbW3x8ccfIzMz01T1EBGV3tNPiz5Dnp5issVOnYDbt5WuinJRq8UQeUCEnpx07yMixH5EplKimaUPHjxoilqIiOTzzDOiZcjDQwyt79IFuHtX6aool9BQMUQ+d1cuT08OnSfzMLqPUFBQEGbMmIGTJ0+iZcuWeTpLBwcHy1YcEVGp1KuXfZvs5EkRhn76CahWTenKKIfQUCAkRIwOu3FD9AnSaNgSROZhdBAaP348AGDRokV5PlOpVJxjiIgsS4MGIgwFBADHjwOBgWLh1lOn+K+uBVGrxV8RkbkZHYS4wjwRlTmNGolJFzt2BOLixO2yjIzsz7meA5HVMrqPEBFRmdSkCTBzpnidMwQB2es5bN5s/rqISFHFDkIvvvgikpKS9O/nz5+PBw8e6N//+++/8PHxkbU4IiLZaLViYav8cD0HIqtV7CC0e/dupKen699/8MEHBstsZGZm4u+//5a3OiIiuRw6ZLi8eW5cz4HIKhU7CEm5ZrvK/Z6IyKJxPQciygf7CBGRdeB6DkSUj2IHIZVKBVWuqT9zvycisli69RwK+73l4AA8+6z5aiIixRV7+LwkSRgxYgQcHBwAAGlpaXjllVf0Eyrm7D9ERGRxdOs59OsnwlB+t/fT08XMftu3A7kmiyWi8qnYLUJhYWFwc3ODi4sLXFxcMHToUHh4eOjfu7m5Yfjw4aaslYiodApaz8HLC/jgA6BSJbFAa69eQGqqIiUSkXkVu0Vo1apVpqyDiMg8ClvP4YUXgG7dxEzUvXoB27YBTk5KV0xEJmT0zNJERGVeQes5tG8P7NoFdO8u1iQLDhZhqEIFs5dIRObBUWNERDl16ABER4s+Qvv3izD0+LHSVRGRiTAIERHl5u8vWoacnYF9+8StNIYhonKJQYiIKD/+/tktQ3v3Ar17A2lpSldFRDJjEMpHZGQkfHx80Lp1a6VLISIlaTTAzp2iw/SePQxDROUQg1A+wsPDkZCQgKNHjypdChEp7fnns8PQ7t1Anz4MQ0TlCIMQEVFRXngB2LFDjB7btUsMweckskTlAoMQEVFxBARkh6HoaIYhonKCQYiIqLg6dhTLbzg6ittlffsyDBGVcQxCRETG6NQpOwzt2AH0788wRFSGMQgRERmrc2cx47Sjo3ju3x948kTpqoioBBiEiIhKoksX4McfAQcHEYZeeolhiKgMYhAiIiqpwMDsMLR1KzBgAMMQURnDIEREVBpdu4oQ5OAAREUBAwcCGRlKV0VExcQgRERUWt26iRBkbw9s2cIwRFSGMAgREcmhe/fsMLR5MzBoEMMQURnAIEREJJegINEiZG8PbNoEDB7MMERk4RiEiIjk9OKLokXIzg7YuBEYMgTIzFS6KiIqAIMQEZHcevTIDkMbNjAMEVkwBiEiIlPo2VPcHrOzA374ARg2jGGIyAIxCBERmUqvXqJFyM4OWLcOGD6cYYjIwjAIERGZUkiICEO2tsDatUBYGMMQkQVhECIiMrWQEHF7zNYWWLMGGDEC0GqVroqIwCBERGQeffoA69eLMPT99wxDRBaCQYiIyFxCQ0VfIbUa+O47YORIhiEihTEIERGZU9++2WHo22+BUaMYhogUxCBERGRu/fqJjtNqNfDNN8CYMQxDRAqxVboAIiKr1L8/IEliGY7VqwGVClixArDh/0+JzIlBiIhIKS+9lB2GVq0SYejLLxmGiMyIP21EREoaMECMIrOxAb76Chg3DsjKUroqIqvBIEREpLSBA0XHaRsbYOVK4OWXGYaIzIRBiIjIEgweLDpO29iIvkKvvsowRGQGDEJERJZiyBDg669FGFq+HBg/nmGIyMTYWZqIyJIMHSo6UIeFAV98ITpQL1smnolIdmwRIiKyNMOGZQ+p//xzIDxchCMikh2DEBGRJRo+PHtI/WefARMmMAwRmQCDEBGRpQoLE0PqdbfHJk5kGCKSGYMQEZElGzFCjCJTqYClS4FJkxiGiGTEIEREZOlGjRIzTgPAkiXAlCkMQ0Qy4agxIqKyYPRoEX7GjgUWLxYtRIsWieH1hw4BN24A7u6ARiMWcyWiYmEQIiIqK8aMEWFo3DggIgI4fx6IjweuXcvex9NTBKXQUKWqJCpTeGuMiKgsGTtWzC8EANu3G4YgAEhMBPr1AzZvNn9tRGUQgxARUVkzejRQpUr+n+n6Dk2eDGi15qqIqMxiECIiKmsOHQIePCj4c0kCrl4V+xFRoRiEiIjKmhs35N2PyIoxCBERlTXu7vLuR2TFGISIiMoajUaMDitsIVYvL7EfERWKQYiIqKxRq8UQeaDgMNSyJWDDX/FERbGKn5I+ffqgatWq6Nevn9KlEBHJIzQU2LgRqF3bcLtuNFlUFDBzJmegJiqCVQShSZMm4ZtvvlG6DCIieYWGApcvAwcOAGvWiOe7d8UyHACwYAEwaxbDEFEhrGJm6YCAAMTExChdBhGR/NRqICDAcNuECeL5tdeA+fPF6w8+KLxPEZGVUrxF6Oeff0avXr3g4eEBlUqFqKioPPtERkbC29sbjo6OaNu2LWJjY81fKBFRWTJhAvDpp+L1/PnAm2+yZYgoH4oHoZSUFDRv3hyRkZH5fr5+/XpMnToVc+fORVxcHJo3b45u3brh9u3b+n38/PzQtGnTPI/r16+b69sgIrI8r72WHYY+/JBhiCgfit8aCwoKQlBQUIGfL1q0CGPHjsXIkSMBAJ9//jl27NiBr776CjNmzAAAxMfHy1JLeno60tPT9e+Tk5MBABkZGcjIyDDYV/c+93YipfHaJAOvvAKbzEyop04FPvwQWq0WWe+9p8htMl6bZC7GXGOKB6HCPHnyBMeOHcPMmTP122xsbNClSxccOXJE9vN9+OGHeOedd/Js37NnD5ycnPL9mr1798peB5EceG2S3jPP4JkxY+C7YgXUH32ECxcv4syQIYr1GeK1SaaWmppa7H0tOgjdvXsXWq0WNWvWNNhes2ZN/PXXX8U+TpcuXXD8+HGkpKTA09MTGzZswHPPPZdnv5kzZ2Lq1Kn698nJyfDy8kLXrl1RuXJlg30zMjKwd+9eBAYGws7OzsjvjMh0eG1Svl58EVofH6inTkWDjRtRt25dZL37rlnDEK9NMhfdHZ3isOggJJd9+/YVaz8HBwc4ODjk2W5nZ1fgD21hnxEpidcm5TFliphkcfJkqBcsgFqtBt5/3+wtQ7w2ydSMub4U7yxdGFdXV6jVaty6dctg+61bt1CrVi2FqiIiKsMmTQIiIsTrDz4AZs9mB2qyahYdhOzt7dGyZUvs379fvy0rKwv79+/P99YWEREVQ84wNG8ewxBZNcVvjT169Ajnz5/Xv7906RLi4+NRrVo1PPXUU5g6dSrCwsLQqlUrtGnTBhEREUhJSdGPIiMiohKYNEmEnylTRBhSqQAz9xkisgSKB6E//vgDHTt21L/XdVYOCwvD6tWrMWDAANy5cwdz5szBzZs34efnh127duXpQE1EREaaPFk8T5ki+goBDENkdRQPQgEBAZCKaJKdMGECJuimjCciIvlMnixahqZOZRgiq2TRfYSUEhkZCR8fH7Ru3VrpUoiITG/KFGDRIvH6/feBuXPZZ4isBoNQPsLDw5GQkICjR48qXQoRkXnkDEPvvccwRFaDQYiIiIQpU4CFC8Xr994D3n6bYYjKPQYhIiLKNnVqdhh6912GISr3FO8sTUREFka31NC0aSIMAUA+6zASlQdsESIiorymTgU++US81rUMEZVDDEJERJS/adOyw9A77zAMUbnEIERERAWbNg34+GPxmmGIyiEGoXxwHiEiohymT2cYonKLQSgfnEeIiCiX3GGInaepnGAQIiKi4pk+HfjoI/H67bcZhqhcYBAiIqLie/11wzCkG15PVEYxCBERkXFyhqG5cxmGqExjECIiIuO9/jqwYIF4zTBEZRiDEBERlcwbbxiGoffeU7YeohJgECIiopLLGYbmzGEYojKHQYiIiErnjTeA+fPFa4YhKmMYhIiIqPT+9z/DMPT++8rWQ1RMDEL54MzSREQl8L//AR9+KF7Pns0wRGUCg1A+OLM0EVEJzZhhGIbmzVO2HqIiMAgREZG8coaht95iGCKLZqt0AUREVA7NmAFIEjBrlghDgOhUTWRhGISIiMg0Zs4Uz/+FIZusLKBZM2VrIsqFt8aIiMh0Zs4EPvgAAKCeMwf1N2xQuCAiQwxCRERkWjNn6vsJ+Xz/PWx0EzASWQAGISIiMr1Zs6D9bz0y9ezZ2Z2piRTGIERERGaRNWMGzgwZIt7MmsUwRBaBQYiIiMzmbP/+0L7zjngza1b2bNRaLRATA6xdK561WqVKJCvDUWNERGRWWTNnQq1Wi2H1M2cCp04BBw8C165l7+TpCSxeDISGKlcoWQW2COWDS2wQEZnYm29mL876/feGIQgAEhOBfv2AzZvNXxtZFQahfHCJDSIiM5g5E6hcOf/PJEk8T57M22RkUgxCRESkjEOHgOTkgj+XJODqVbEfkYkwCBERkTJu3JB3P6ISYBAiIiJluLvLux9RCTAIERGRMjQaMTpMpcr/c5UK8PIS+xGZCIMQEREpQ60WQ+SBvGFI9z4iQuxHZCIMQkREpJzQUGDjRqB2bcPtnp5iO+cRIhPjhIpERKSs0FAgJESMDrtxQ/QJ0mjYEkRmwSBERETKU6uBgAClqyArxFtjREREZLUYhIiIiMhqMQgRERGR1WIQygcXXSUiIrIODEL54KKrRERE1oFBiIiIiKwWgxARERFZLQYhIiIisloMQkRERGS1OLN0ISRJAgAkJyfn+SwjIwOpqalITk6GnZ2duUsjKhCvTbJUvDbJXHT/buv+HS8Mg1AhHj58CADw8vJSuBIiIiIy1sOHD+Hi4lLoPiqpOHHJSmVlZeH69euoVKkSVCqVwWfJycnw8vLC1atXUbly5Xy/vnXr1oUOwS/qc2P3M3bf0nyNKY5hyuNZ+nnlxGtTvq831zEt8ZymUNS1WZzvU659SrN/Sb9Gzq831zEt8ZzFIUkSHj58CA8PD9jYFN4LiC1ChbCxsYGnp2eh+1SuXLnAf2zUanWBnxXnc2P3M3bf0nyNKY5hyuNZ+nlNgdemaf4+lbhGytN1CRR8bRbn+5Rrn9LsX9KvkfPrzXVMSzxncRXVEqTDztImFB4eXqrPjd3P2H1L8zWmOIYpj2fp5zU3a7k2TfH3qcQ1wutS/n1Ks39Jv0bOrzfXMS3xnHLjrbESSk5OhouLC5KSkiw2DZN14rVJlorXJlkitgiVkIODA+bOnQsHBwelSyEywGuTLBWvTbJEbBEiIiIiq8UWISIiIrJaDEJERERktRiEiIiIyGoxCBEREZHVYhAiIiIiq8UgZCLbt29Hw4YNUb9+faxYsULpcojy1adPH1StWhX9+vVTuhQivatXryIgIAA+Pj5o1qwZNmzYoHRJVI5x+LwJZGZmwsfHBwcOHICLiwtatmyJX3/9FdWrV1e6NCIDMTExePjwIb7++mts3LhR6XKIAAA3btzArVu34Ofnh5s3b6Jly5Y4e/YsnJ2dlS6NyiG2CJlAbGwsmjRpgtq1a6NixYoICgrCnj17lC6LKI+AgABUqlRJ6TKIDLi7u8PPzw8AUKtWLbi6uuLevXvKFkXlFoNQPn7++Wf06tULHh4eUKlUiIqKyrNPZGQkvL294ejoiLZt2yI2Nlb/2fXr11G7dm39+9q1ayMxMdEcpVM5UtrrkMhUzHltHjt2DFqtFl5eXqWsmih/DEL5SElJQfPmzREZGZnv5+vXr8fUqVMxd+5cxMXFoXnz5ujWrRtu375t5kqpPJPjOvTz80PTpk3zPK5fv26ub4PKIXNdm/fu3cPw4cOxfPlyk39PZMUkKhQAacuWLQbb2rRpI4WHh+vfa7VaycPDQ/rwww8lSZKkX375Rerdu7f+80mTJknff/+9Weql8qkk12FxHThwQOrbt68cZZIVMtW1mZaWJmk0Gumbb76Rq1SifLFFyEhPnjzBsWPH0KVLF/02GxsbdOnSBUeOHAEAtGnTBqdOnUJiYiIePXqE6OhodOvWTamSqRwqznVIpAQ5rk1JkjBixAh06tQJw4YNM1WpRAB4a8xod+/ehVarRc2aNQ2216xZEzdv3gQA2NraYuHChejYsSP8/Pwwbdo0jhgjWRXnOiyOLl26oH///ti5cyc8PT0ZoqjU5Lg2f/nlF6xfvx5RUVHw8/ODn58fTp48aYpyiWCrdAHlVXBwMIKDg5Uug6hQ+/btU7oEojz8/f2RlZWldBlkJdgiZCRXV1eo1WrcunXLYPutW7dQq1Ythaoia8PrkCwVr00qaxiEjGRvb4+WLVti//79+m1ZWVnYv38/nnvuOQUrI2vC65AsFa9NKmt4aywfjx49wvnz5/XvL126hPj4eFSrVg1PPfUUpk6dirCwMLRq1Qpt2rRBREQEUlJSMHLkSAWrpvKG1yFZKl6bVK4oPWzNEh04cEACkOcRFham32fJkiXSU089Jdnb20tt2rSRfvvtN+UKpnKJ1yFZKl6bVJ5wrTEiIiKyWuwjRERERFaLQYiIiIisFoMQERERWS0GISIiIrJaDEJERERktRiEiIiIyGoxCBEREZHVYhAiIiIiq8UgRERERFaLQYiIrNL06dPRu3dvpcsgIoUxCBGRVYqPj0ezZs2ULoOIFMYgRERW6fjx42jevLnSZRCRwhiEiMjqXLt2DXfv3gUABAYGwsnJCQ0bNsTvv/+ucGVEZG4MQkRkdeLj4wEAkZGRmDVrFo4fP46nnnoKM2bMULYwIjI7BiEisjrx8fGoVq0afvjhB3Ts2BH169dHcHAw7ty5o3RpRGRmDEJEZHXi4+MREhICV1dX/bZLly6hXr16ClZFREpgECIiqxMfH4927drl2ebn56dMQUSkGAYhIrIqDx8+xMWLF9GiRQuD7QxCRNaJQYiIrMrx48ehVqvh6+ur33blyhXcv3+fQYjICjEIEZFViY+PR8OGDeHo6Kjf9ueff6JKlSrw9vZWrjAiUoRKkiRJ6SKIiIiIlMAWISIiIrJaDEJERERktRiEiIiIyGoxCBEREZHVYhAiIiIiq8UgRERERFaLQYiIiIisFoMQERERWS0GISIiIrJaDEJERERktRiEiIiIyGoxCBEREZHV+n9kfr7baBP1hgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "element_u = basix.ufl.element(\"CR\", \"triangle\", 1, shape=(2,))\n", + "element_p = basix.ufl.element(\"DG\", \"triangle\", 0)\n", + "error_plot(element_u, element_p, 1)" + ] + }, + { + "cell_type": "markdown", + "id": "e9b946c3", + "metadata": { + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## Piecewise linear pressure space" + ] + }, + { + "cell_type": "markdown", + "id": "ce167a13-8fcc-468a-bb13-59ae6d2108d8", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "When using a piecewise linear pressure space, we could again try using a velocity space one degree higher, but we would again observe that there is no convergence. In order to achieve convergence, we can augment the quadratic space with a cubic bubble function on the triangle {cite}`crouzeix-falk`." + ] + }, + { + "cell_type": "markdown", + "id": "97b57bb0", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "090c7af3", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "enriched_element = basix.ufl.enriched_element(\n", + " [\n", + " basix.ufl.element(\"Lagrange\", \"triangle\", 2),\n", + " basix.ufl.element(\"Bubble\", \"triangle\", 3),\n", + " ]\n", + ")\n", + "element_u = basix.ufl.blocked_element(enriched_element, shape=(2,))\n", + "element_p = basix.ufl.element(\"DG\", \"triangle\", 1)\n", + "error_plot(element_u, element_p, 2)" + ] + }, + { + "cell_type": "markdown", + "id": "c9a4e794-6119-48a9-9127-230c05273800", + "metadata": { + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## Taylor-Hood Element" + ] + }, + { + "cell_type": "markdown", + "id": "86fde2e2-05ef-40d3-939d-11d8936f34d1", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "Continuous Lagrange spaces for pressure and velocity." + ] + }, + { + "cell_type": "markdown", + "id": "deada6db-5ead-4a1c-8a27-5d951840212a", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "0cebf437-cd21-4221-bf2e-29ccfd85fbed", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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qZLLzWdkZBRZymvbtu1lr9ycOXPGKfnKzMykT58+BQaaV7mkL2bNmsXChQsZP358kW2PGjWKN95447Kxb9y4kUaNGjkddyWGy+nRowdxcXH8/e9/Z968eTRu3LjA6xUrVgSMMWGlgcp5RdDeeSIlLzwcunc3HudfeDMtLU0lPSl1MjMznUpyroqMjOTPP/90as++LILdsmXLqF69uuNqzpo1a5zOudTTTz/Nxo0bL3u75pprivyZCoshMjKywBWlonz33Xds2rQJq9VKrVq1nF63L/NQo0aNK7blD5REFUF754n4Rt++xn3+hTftJT0RwsKMK0Ku3ObOda3NuXNday8szOUwt23bxvHjxy87M+9ymjVrxoYNGxzPz5w5w9atW7Hmm1WYl5fHP//5T+655x4CAoz/na9Zs4YtW7Zwyy23cM0117Bu3TqntmvUqEGjRo0uewsJCXF6X1ExjB8/nkGDBhEQEMDWrVu54447aN68Oe3bt+fw4cOOczMyMujXrx+ffPIJHTt25IUXXnD6jHXr1hEdHU1kZKRH/VbSlESJiF/p0QMqVICtWy+W9EB76ckFFotRUnPl1rkzREcXPY7JYoGYGOM8V9pzczwUQGBgIOvWrXPctmzZ4tL7u3Tpwvr16x1Xo9auXYvFYuHzzz9n2bJlbNy4kf79+3P8+HFGjhzpeN+aNWuIjY3lp59+4qmnnmLWrFkux3wll4vh+eefJycnh8cff5wPPviAVatWMWDAAMfSDTt37uSOO+7gueee45577uHvf/8706ZNc/ST3dKlS+ncubNpMXubkigR8SuXztKzl/Ty/6tcxCWBgWBfuPXSBMj+fPx41waVu8meHNx0003Ex8c7bq6u+xQfH8+NN95IWloaYJTRGjVqxHPPPcedd95JixYtsFqtLFy40DGz7cyZM1itVh555BEAcnNzqVq1qmk/U1ExLF68mKpVqzJz5kzWr19Pjx49SExMZMKECQQHB3Ps2DG6du1Kz549GTVqFACtW7emW7duPPfcc472z549y8yZMxkyZIhpMXubBpaLiN/p2xdmzDDGRa1a1YvNmzdz/fXX+zosKY369IGpU41ZePmXOYiONhKoPn288rGvv/46r7/+erHaGDNmDM888wxDhgxh9erVxMfHc//99xdYEiEvL4+srCzAKIW1aNHC8dratWt58MEHixVD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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "element_u = basix.ufl.element(\"Lagrange\", \"triangle\", 3, shape=(2,))\n", + "element_p = basix.ufl.element(\"Lagrange\", \"triangle\", 2)\n", + "error_plot(element_u, element_p, 3)" + ] + }, + { + "cell_type": "markdown", + "id": "c78dee90", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "source": [ + "## Piecewise quadratic pressure space {cite}`crouzeix-falk`" + ] + }, + { + "cell_type": "markdown", + "id": "e0acefc6-4f80-482d-a26e-ffc837983793", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "When using a piecewise quadratic space, we can use a cubic velocity space augmented with quartic bubbles." + ] + }, + { + "cell_type": "markdown", + "id": "1a5ab5e1", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "id": "0018acce-5def-49ff-9c26-c11d52e7b95f", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "source": [ + "### Custom elements" + ] + }, + { + "cell_type": "markdown", + "id": "9b8dec8c-9eb4-4c2f-9cd2-050abffc1d2e", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "We have to define this velocity element as a custom element (it cannot be created as an enriched element, as the basis functions of degree 3 Lagrange and degree 4 bubbles are not linearly independent). More examples of how custom elements can be created can be found [in the Basix documentation](https://docs.fenicsproject.org/basix/v0.5.0/python/demo/demo_custom_element.py.html)." + ] + }, + { + "cell_type": "markdown", + "id": "08bae35b", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "#### Defining the polynomial space\n", + "\n", + "When creating a custom element, we must input the coefficients that define a basis of the set of polynomials that our element spans. In this example, we will represent the 9 functions in our space in terms of the 10 orthonormal polynomials of degree $\\leqslant3$ on a quadrilateral, so we create a 9 by 10 matrix.\n", + "\n", + "A polynomial $f$ on the triangle can be written as\n", + "$$f(x,y)=\\sum_i\\left(\\int_0^1\\int_0^{1-y}f(x, y)q_i(x, y) \\,\\mathrm{d}x\\,\\mathrm{d}y\\right)q_i(x,y),$$\n", + "where $q_0$, $q_1$, ... are the orthonormal polynomials. The entries of our coefficient matrix are these integrals." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "8eb61dbb", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "wcoeffs = np.zeros((12, 15))\n", + "pts, wts = basix.make_quadrature(basix.CellType.triangle, 8)\n", + "poly = basix.tabulate_polynomials(basix.PolynomialType.legendre, basix.CellType.triangle, 4, pts)\n", + "x = pts[:, 0]\n", + "y = pts[:, 1]\n", + "for j, f in enumerate(\n", + " [\n", + " 1,\n", + " x,\n", + " y,\n", + " x**2 * y,\n", + " x * y**2,\n", + " (1 - x - y) ** 2 * y,\n", + " (1 - x - y) * y**2,\n", + " x**2 * (1 - x - y),\n", + " x * (1 - x - y) ** 2,\n", + " x * y * (1 - x - y),\n", + " x**2 * y * (1 - x - y),\n", + " x * y**2 * (1 - x - y),\n", + " ]\n", + "):\n", + " for i in range(15):\n", + " wcoeffs[j, i] = sum(f * poly[i, :] * wts)" + ] + }, + { + "cell_type": "markdown", + "id": "4d73e102", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "#### Interpolation\n", + "\n", + "Next, we compute the points and matrices that define how functions can be interpolated into this space. For this element, all the DOFs are point evaluations, so we create lists of these points and (reshaped) identity matrices." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "6ad29eb2", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "x = [[], [], [], []]\n", + "x[0].append(np.array([[0.0, 0.0]]))\n", + "x[0].append(np.array([[1.0, 0.0]]))\n", + "x[0].append(np.array([[0.0, 1.0]]))\n", + "x[1].append(np.array([[2 / 3, 1 / 3], [1 / 3, 2 / 3]]))\n", + "x[1].append(np.array([[0.0, 1 / 3], [0.0, 2 / 3]]))\n", + "x[1].append(np.array([[1 / 3, 0.0], [2 / 3, 0.0]]))\n", + "x[2].append(np.array([[1 / 4, 1 / 4], [1 / 2, 1 / 4], [1 / 4, 1 / 2]]))\n", + "\n", + "M = [[], [], [], []]\n", + "for _ in range(3):\n", + " M[0].append(np.array([[[[1.0]]]]))\n", + "for _ in range(3):\n", + " M[1].append(np.array([[[[1.0], [0.0]]], [[[0.0], [1.0]]]]))\n", + "M[2].append(np.array([[[[1.0], [0.0], [0.0]]], [[[0.0], [1.0], [0.0]]], [[[0.0], [0.0], [1.0]]]]))" + ] + }, + { + "cell_type": "markdown", + "id": "81994537", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "#### Creating the element\n", + "\n", + "We now create the element by passing in the information we created above, as well as the cell type, value shape, number of derivatives used by the DOFs, map type, whether the element is discontinuous, the highest degree Lagrange space that is a subspace of the element, and the polynomial degree of the element." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "7c9c03cc", + "metadata": { + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "p3_plus_bubbles = basix.ufl.custom_element(\n", + " basix.CellType.triangle,\n", + " [],\n", + " wcoeffs,\n", + " x,\n", + " M,\n", + " 0,\n", + " basix.MapType.identity,\n", + " basix.SobolevSpace.H1,\n", + " False,\n", + " 3,\n", + " 4,\n", + ")\n", + "\n", + "element_u = basix.ufl.blocked_element(p3_plus_bubbles, shape=(2,))\n", + "element_p = basix.ufl.element(\"DG\", \"triangle\", 2)\n", + "error_plot(element_u, element_p, 3, refinements=4)" + ] + }, + { + "cell_type": "markdown", + "id": "94450f5a", + "metadata": { + "lines_to_next_cell": 0, + "slideshow": { + "slide_type": "skip" + }, + "tags": [] + }, + "source": [ + "## References\n", + "\n", + "The images of elements used in this example were taken from DefElement {cite}`defelement`.\n", + "\n", + "```{bibliography}\n", + ":style: unsrt\n", + "```" + ] + } + ], + "metadata": { + "jupytext": { + "formats": "ipynb" + }, + "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.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/heat_eq.ipynb b/heat_eq.ipynb index 7c920a4..bf0034d 100644 --- a/heat_eq.ipynb +++ b/heat_eq.ipynb @@ -729,7 +729,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "id": "54d60e10-5b23-4d53-b38d-a499ba7cc67a", "metadata": { "lines_to_next_cell": 0 @@ -744,15 +744,15 @@ "\n", " # Assemble RHS\n", " b.x.array[:] = 0\n", - " petsc.assemble_vector(b.vector, compiled_L)\n", + " petsc.assemble_vector(b.x.petsc_vec, compiled_L)\n", "\n", " # Apply boundary condition\n", - " petsc.apply_lifting(b.vector, [compiled_a], [bcs])\n", + " petsc.apply_lifting(b.x.petsc_vec, [compiled_a], [bcs])\n", " b.x.scatter_reverse(la.InsertMode.add)\n", - " fem.petsc.set_bc(b.vector, bcs)\n", + " fem.petsc.set_bc(b.x.petsc_vec, bcs)\n", "\n", " # Solve linear problem\n", - " solver.solve(b.vector, uh.vector)\n", + " solver.solve(b.x.petsc_vec, uh.x.petsc_vec)\n", " uh.x.scatter_forward()\n", "\n", " # Update un\n",