{ "cells": [ { "cell_type": "markdown", "id": "4fde2871-5b1c-4688-a33d-dcaa05f11be8", "metadata": {}, "source": [ "# Overview of python functions from helmholtz.selfinteractions" ] }, { "cell_type": "markdown", "id": "a9e0379a-bc38-4ac4-a94c-e500c04ff67f", "metadata": {}, "source": [ "Overview of python functions from `biosspheres.helmholtz.selfinteractions`." ] }, { "cell_type": "code", "execution_count": 1, "id": "1bc0f84e-fa6e-4813-97b3-19dbd2ff491b", "metadata": {}, "outputs": [], "source": [ "import biosspheres.helmholtz.selfinteractions as selfinteractions" ] }, { "cell_type": "code", "execution_count": 2, "id": "5697bae2-4e3e-4125-a379-cbc08d7a9c15", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import scipy.sparse as sparse\n", "import matplotlib.pyplot as plt\n", "from matplotlib import cm, colors" ] }, { "cell_type": "markdown", "id": "1ca34bb6-8bbc-42c0-98a7-db55bc11c726", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "## Preliminaries" ] }, { "cell_type": "markdown", "id": "6678dd5e-3a41-484d-9c2f-71697935f913", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Geometry" ] }, { "cell_type": "markdown", "id": "0fcaf5ee-5ff5-46ce-bc8b-41e0e148712d", "metadata": {}, "source": [ "$N$ disjoint spheres in $\\mathbb{R}^3$:\n", "- Position vectors of the sphere centers: $\\mathbf{p_j} \\in \\mathbb{R}^3$, with $j \\in \\{1,...,N\\}$. \n", "- Radii: $\\tilde{r}_j\\in \\mathbb{R}^+$, with $j \\in \\{1,...,N\\}$.\n", "- Interior of sphere $j$: $\\Omega_j:=\\{ \\mathbf{x} \\in \\mathbb{R}^3:||\\mathbf{x}-\\mathbf{p_j}||_2<\\tilde{r}_j \\}$.\n", "- Boundary of sphere $j$: $\\Gamma_j:=\\partial \\Omega_j$.\n", "- Exterior medium, $\\Omega_0$: defined as $\\mathbb{R}^3$ without the spheres and their boundaries. " ] }, { "cell_type": "markdown", "id": "b4c59961-49df-4d1f-9b6d-059e5649980d", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Free space fundamental solution for the Helmholtz equation" ] }, { "cell_type": "markdown", "id": "ae31a336-9c01-4fba-b72d-8c879d1e3aa5", "metadata": {}, "source": [ "The free space fundamental solution of the Helmholtz equation with $k>0$, which satisfies the **radiation condition** is:\n", "$$g_j\\left(\\mathbf{r},\\mathbf{r'}\\right):= \\frac{e^{ik_j||\\mathbf{r}-\\mathbf{r}'||}}{4\\pi ||\\mathbf{r}-\\mathbf{r}'||}, \\quad \\text{with } \\mathbf{r}\\not = \\mathbf{r'}, \\quad \\text{and } -\\left( \\Delta + k_j^2 \\right) g_j \\left(\\mathbf{r},\\mathbf{r'}\\right)=\\delta \\left(\\mathbf{r}-\\mathbf{r'}\\right).$$" ] }, { "cell_type": "markdown", "id": "e115f064-4c82-43dd-88bf-60fca4498076", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Layer operators" ] }, { "cell_type": "markdown", "id": "07d9cc0d-3d3a-4516-95e6-af3388a2e62b", "metadata": {}, "source": [ "Single and double layer operators defined for smooth densities:\n", "$$DL_{0j} \\left(\\psi\\right)\\left(\\mathbf{r}\\right):=\\int_{\\Gamma_j} \\psi\\left(\\mathbf{r}'\\right) \\nabla g_0\\left(\\mathbf{r},\\mathbf{r'}\\right) \\cdot \\widehat{\\mathbf{n}}_{0j} \\ dS',$$\n", "$$SL_{0j} \\left(\\psi\\right)\\left(\\mathbf{r}\\right):=\\int_{\\Gamma_j} {\\psi\\left(\\mathbf{r}'\\right) g_0\\left(\\mathbf{r},\\mathbf{r'}\\right) dS'},$$\n", "$$DL_j \\left(\\psi\\right)\\left(\\mathbf{r}\\right):=\\int_{\\Gamma_j} {\\psi\\left(\\mathbf{r}'\\right) \\nabla g_j\\left(\\mathbf{r},\\mathbf{r'}\\right) \\cdot \\widehat{\\mathbf{n}}_{j} \\ dS'},$$\n", "$$SL_j \\left(\\psi\\right)\\left(\\mathbf{r}\\right):=\\int_{\\Gamma_j} {\\psi\\left(\\mathbf{r}' \\right) g_j\\left(\\mathbf{r},\\mathbf{r'}\\right) dS'}$$\n", "\n", "with the gradient being taken with respect to $\\mathbf{r}'$, $\\widehat{\\mathbf{n}}_j$ being the exterior normal vector of $\\Omega_j$, and $\\widehat{\\mathbf{n}}_j=-\\widehat{\\mathbf{n}}_{0j}$.\n", "\n", "These operators are linear and continuous in the following Sobolev spaces:\n", "$$DL_{0j}: H^{\\frac{1}{2}}(\\Gamma_j) \\rightarrow H^1_{loc} \\left(\\mathbb{R}^3 \\setminus \\cup_{j=1}^{N}\\Gamma_j\\right),$$\n", "$$SL_{0j}: H^{-\\frac{1}{2}}(\\Gamma_j) \\rightarrow H^1_{loc} \\left(\\mathbb{R}^3 \\setminus \\cup_{j=1}^{N}\\Gamma_j\\right) , $$\n", "$$DL_{j}: H^{\\frac{1}{2}}(\\Gamma_j)\\rightarrow H^1_{loc} \\left(\\mathbb{R}^3 \\setminus \\cup_{j=1}^{N}\\Gamma_j\\right),$$\n", "$$SL_{j}: H^{-\\frac{1}{2}}(\\Gamma_j) \\rightarrow H^1_{loc}\\left(\\mathbb{R}^3 \\setminus \\cup_{j=1}^{N}\\Gamma_j\\right).$$" ] }, { "cell_type": "markdown", "id": "248c240c-6d9c-426a-9de9-8842648dacd8", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Boundary integral operators" ] }, { "cell_type": "markdown", "id": "9efc74e7-4a08-4906-919b-dbcfdc7e9aa4", "metadata": {}, "source": [ "For $u\\in C^\\infty(\\overline\\Omega)$, Dirichlet and Neumann traces operators are defined as \n", "$$\\gamma_d u := u|_{\\Gamma},\\qquad \\gamma_n u := \\nabla u|_{\\Gamma} \\cdot \\widehat{n},$$\n", "where $\\widehat{n}$ is the exterior unit normal.\n", "\n", "By density arguments, the definition of Dirichlet and Neumann traces operator can be extended to $u_j \\in H^1_{loc}(\\Omega_j)$, with $j \\{0, ..., N \\}$. We extend the notation as follows\n", "\n", "$$\\gamma_d^{0j} u_0 := u_0|_{\\Gamma_j},$$\n", "$$\\gamma_d^{j} u_j := u_j|_{\\Gamma_j},$$\n", "$$\\gamma_n^{0j} u_0 := \\nabla u_0|_{\\Gamma_j} \\cdot \\widehat{n}_{0j},$$\n", "$$\\gamma_n^{j} u_j := \\nabla u_j|_{\\Gamma_j}\\cdot \\widehat{n}_{j},$$\n", "where $\\widehat{n}_{j}$ is the exterior normal of $\\Omega_j$, with $j\\in \\{ 1, ..., N\\}$ and $\\widehat{n}_{0j}=-\\widehat{n}_{j}$.\n", "\n", "Now, we recall the definition of the boundary integral operators:\n", "$$\\begin{aligned}\n", "\tV_{s,j}^0 &:= \\frac{1}{2} \\left( \\gamma_d^{s} SL_{0j} + \\gamma_d^{0s} SL_{0j} \\right) ,\n", "\t& V_{j}&:= \\frac{1}{2} \\left( \\gamma_d^{0j} SL_{j} + \\gamma_d^{j} SL_{j} \\right) ,\\\\\n", "\tK_{s,j}^0&:= \\frac{1}{2} \\left(\\gamma_d^{s} DL_{0j} + \\gamma_d^{0s} DL_{0j} \\right) ,\n", "\t&K_{j}&:= \\frac{1}{2} \\left(\\gamma_d^{0j} DL_{j} + \\gamma_d^{j} DL_{j} \\right),\\\\\n", "\tK^{*0}_{s,j}&:= \\frac{1}{2} \\left( - \\gamma_n ^{s} SL_{0j} + \\gamma_n ^{0s} SL_{0j} \\right),\n", "\t & K^{*}_{j} &:= \\frac{1}{2} \\left( -\\gamma_n ^{0j} SL_{j} + \\gamma_n ^{j} SL_{j} \\right), \\\\\n", "\tW_{s,j}^0 &:= -\\frac{1}{2} \\left( - \\gamma_n^{s} DL_{0j} + \\gamma_n^{0s} DL_{0j} \\right) ,\n", "\t& W_{j} &:=- \\frac{1}{2} \\left( -\\gamma_n^{0j} DL_{j} + \\gamma_n^{j} DL_{j} \\right).\n", "\\end{aligned}$$\n", "\n", "These operators are linear and continuous in the following Sobolev spaces: \n", "$$\\begin{aligned}\n", "\tV_{s,j}^0 &: H^{-\\frac{1}{2}}(\\Gamma_j) \\rightarrow H^{\\frac{1}{2}}(\\Gamma_s),\n", "\t&V_{j}&: H^{-\\frac{1}{2}}(\\Gamma_j) \\rightarrow H^{\\frac{1}{2}}(\\Gamma_j),\\\\\n", "\tW_{s,j}^0&: H^{\\frac{1}{2}}(\\Gamma_j) \\rightarrow H^{-\\frac{1}{2}}(\\Gamma_s),\n", "\t&W_{j}&: H^{\\frac{1}{2}}(\\Gamma_j) \\rightarrow H^{-\\frac{1}{2}}(\\Gamma_j) ,\\\\\n", "\tK_{s,j}^0&: H^{\\frac{1}{2}}(\\Gamma_j) \\rightarrow H^{\\frac{1}{2}}(\\Gamma_s),\n", "\t&K_{j}&: H^{\\frac{1}{2}}(\\Gamma_j) \\rightarrow H^{\\frac{1}{2}}(\\Gamma_j) ,\\\\\n", "\tK^{*0}_{s,j}&: H^{-\\frac{1}{2}}(\\Gamma_j) \\rightarrow H^{-\\frac{1}{2}}(\\Gamma_s),\n", "\t&K^*_{j}&: H^{-\\frac{1}{2}}(\\Gamma_j) \\rightarrow H^{-\\frac{1}{2}}(\\Gamma_j).\n", "\\end{aligned}$$\n", "\n", "Since the domains are smooth, the jump relations for the potentials across a closed boundary yield\n", "$$\\begin{aligned}\n", "\tV_{s,j}^0 &= \\gamma_d^{0{s}} SL_{0j},\n", "\t& V_{j}&= \\gamma_d^{j} SL_{j},\\\\\n", "\tW_{s,j}^0 &=- \\gamma_n^{0s} DL_{0j},\n", "\t& W_{j} &=- \\gamma_n^{j} DL_{j}, \\\\\n", "\t K_{s,j}^0&= \\gamma_d^{0s} DL_{0j}, s \\not=j,\n", "\t & K^{*0}_{s,j} &= \\gamma_n ^{0s} SL_{0j}, s \\not=j,\n", "\\end{aligned}$$\n", "and\n", "$$\\begin{aligned}\n", "\tK_{j,j}^0(\\psi) &= \\frac{1}{2}\\psi +\\gamma_d^{0j} {DL_{0j}(\\psi)} ,\n", "\t&K_{j}(\\psi) &= \\frac{1}{2} \\psi +\\gamma_d^{j} {DL_{j}(\\psi)} ,\\\\\n", "\t K^{*0}_{j,j}(\\psi) &= -\\frac{1}{2} \\psi + \\gamma_n^{0j} {SL_{0j}(\\psi)},\n", "\t&K^*_{j}(\\psi) &= -\\frac{1}{2} \\psi + \\gamma_n^j {SL_{j}(\\psi)}.\n", "\\end{aligned}$$" ] }, { "cell_type": "markdown", "id": "bd2157b7-2941-4b98-a3d3-1b9086b05702", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Calderón operator" ] }, { "cell_type": "markdown", "id": "a7c741a9-5d4a-4d1f-a42c-874746213b65", "metadata": {}, "source": [ "$$A_{s,j}^0 = \\begin{bmatrix} - K^0_{s,j} & V^0_{s,j} \\\\\n", "W^0_{s,j} & K^{*0}_{s,j}\\end{bmatrix}, \\quad A_{j,j}= \\begin{bmatrix} - K_{j,j} & V_{j,j} \\\\\n", "W_{j,j} & K^{*}_{j,j}\\end{bmatrix}. $$" ] }, { "cell_type": "markdown", "id": "3838f4e9-fd30-4f1b-9bc7-6584652d8656", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Spherical coordinate system" ] }, { "cell_type": "markdown", "id": "d4c26fbe-38b3-4e8d-83e1-4cbb363a6332", "metadata": {}, "source": [ "A vector is written as $\\mathbf{r}=\\left(r,\\varphi,\\theta\\right)^t$, with $r \\in [0,\\infty)$, $\\varphi \\in [0,2\\pi)$ and $\\theta \\in [0,\\pi]$, which in Cartesian coordinates is equivalent to $\\mathbf{r}=r\\left(\\sin \\theta \\cos \\varphi,\\sin \\theta \\sin \\varphi,\\cos \\theta\\right)^t$. The unitary vectors of the spherical coordinate system can be written in Cartesian coordinates as\n", "$$\\begin{aligned}\n", " &\\widehat{\\mathbf{e}}_r= (\\sin \\theta \\cos \\varphi , \\sin \\theta \\sin \\varphi , \\cos \\theta )^t, \\\\\n", " &\\widehat{\\mathbf{e}}_\\theta=(\\cos \\theta \\cos \\varphi , \\cos \\theta \\sin \\varphi , -\\sin \\theta )^t, \\\\\n", " &\\widehat{\\mathbf{e}}_{\\varphi}=(-\\sin \\varphi , \\cos \\varphi , 0 )^t.\n", "\\end{aligned}$$\n", "\n", "Also, the gradient operator in spherical coordinates:\n", "$$\\begin{aligned}\n", " \\nabla f&=\\frac{\\partial f}{\\partial r} \\widehat{\\mathbf{e}}_r+\\frac{1}{r} \\frac{\\partial f}{\\partial \\theta} \\widehat{\\mathbf{e}}_\\theta+\\frac{1}{r \\sin \\theta} \\frac{\\partial f}{\\partial \\varphi} \\widehat{\\mathbf{e}}_{\\varphi}\n", "\\end{aligned}$$" ] }, { "cell_type": "markdown", "id": "db7aaba4-7856-4a26-9414-15bf1a05a999", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Legendre functions" ] }, { "cell_type": "markdown", "id": "a3fbf1d7-4e84-49c8-b066-ecdba7389cf9", "metadata": {}, "source": [ " $P_l^m$ are the associated Legendre functions of degree $l$ and order $m$ defined as:\n", "$$P_{l}^m\\left(x\\right) := (-1)^m \\left( 1- x^2\\right)^{\\frac{m}{2}} \\frac{d^m}{dx^m}P_l(x), \\quad P_{l}\\left(x\\right) := \\frac{1}{2^ll!}\\frac{d^l}{dx^l}(x^2-1)^l.$$\n", "\n", "Here, the term $(-1)^m$ is the Condon-Shortley phase factor." ] }, { "cell_type": "markdown", "id": "23923b33-ce25-460f-bc7b-501a3c9d4c2d", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Complex spherical harmonics" ] }, { "cell_type": "markdown", "id": "38173a70-ce9b-4217-9ffb-d4dcebb81a47", "metadata": {}, "source": [ "Complex spherical harmonics of degree $l$ and order $m$ are defined using spherical coordinates:\n", "$$Y_{l,m}\\left(\\theta,\\varphi\\right) := \\sqrt{ \\frac{\\left(2l+1\\right)\\left(l-m\\right)!}{4 \\pi \\left(l+m\\right)!}} P_l^{m} \\left(\\cos\\left(\\theta\\right)\\right) e^{i m \\varphi},$$\n", "$$Y_{l,-m}\\left(\\theta,\\varphi\\right) := (-1)^m\\overline{Y}_{l,m}\\left(\\theta,\\varphi\\right),$$\n", "with $l\\in \\mathbb{N}_0$, $m\\in \\mathbb{Z}$ such that $0\\leq m\\leq l$. If $m=0$, then $\\delta_{m,0}=1$, and it is zero otherwise." ] }, { "cell_type": "markdown", "id": "e4ecaddf-7dc0-40c5-bc57-de4979760df0", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Orthonormality of spherical harmonics" ] }, { "cell_type": "markdown", "id": "fa2c911b-0f48-43a9-ab7b-219954bdff5d", "metadata": {}, "source": [ "Spherical harmonics are dense in $C(\\mathbb{S}^2)$, with $\\mathbb{S}^2$ the surface of the unit sphere, and form a complete orthonormal system in $L^2(\\mathbb{S}^2)$ with respect to the internal product defined by:\n", "$$\\left( \\psi , \\xi \\right)_{L^2(\\mathbb{S}^2)} = \\int_{0}^{2\\pi}\\int_{0}^{\\pi} \\psi\\left(\\theta,\\varphi\\right) \\overline{\\xi\\left(\\theta,\\varphi\\right) }\\sin\\left(\\theta\\right) d\\theta d\\varphi,$$\n", "with $\\overline{\\xi\\left(\\theta,\\varphi\\right)}$ the conjugate of $\\xi\\left(\\theta,\\varphi\\right)$.\n", "\n", "They also are orthogonal in $H^1(\\mathbb{S}^2)$." ] }, { "cell_type": "markdown", "id": "7dbaaa65-3dcc-4c82-b34a-4c3ce4e7f865", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Reference systems" ] }, { "cell_type": "markdown", "id": "15aace8a-b256-4647-a74a-1e05447ede88", "metadata": {}, "source": [ "Let be $j\\in \\{1,...,N\\}$. We define the reference system $j$ as the one centered at $\\mathbf{p_j}$ with the same orientation that the reference system centered in the origin. Furthermore, we denote by $Y_{l,m,j}$ the spherical harmonic $Y_{l,m}$ centered in the origin of the reference system $j$. Thus, if $\\left( r_j, \\varphi_j, \\theta_j \\right)$ are the vector spherical coordinates of $\\mathbf{r_j}$ in the reference system $j$, we have that $Y_{l,m,j}\\left(\\mathbf{r}_j\\right)=Y_{l,m}\\left(\\theta_j, \\varphi_j\\right)$." ] }, { "cell_type": "markdown", "id": "02e39017-e51a-443c-8882-fd7250ccfbca", "metadata": {}, "source": [ "#### Complex spherical harmonics and Helmholtz free space fundamental solution" ] }, { "cell_type": "markdown", "id": "3fda1e3b-cc2b-4ef9-8cf3-d1bb7c98e296", "metadata": {}, "source": [ "Let $\\mathbf{r}$, $\\mathbf{r}'$ be vectors, whose spherical coordinates in the reference system $j$ are $\\left(r_j,\\theta_j, \\varphi_j \\right)$ and $\\left(r_j',\\theta_j', \\varphi_j' \\right)$, respectively. For $r_j>r_j'$ we have\n", "$$g_j\\left(\\mathbf{r}, \\mathbf{r}'\\right) = i k_j \\sum_{l=0}^{\\infty} j_l(k_j r_j') h_l^{(1)}(k_j r_j) \\sum_{m=-l}^l Y_{l,m,j}\\left(\\mathbf{r}\\right) \\overline{Y_{l,m,j}}\\left(\\mathbf{r}'\\right),$$\n", "with $j_l$ and $h_l^{(1)}$ the spherical Bessel function and the spherical Hankel function of first kind. This series and its term by term first derivatives with respect to $r_j$ or $r_j'$ are absolutely and uniformly convergent on compact subsets with $r_j>r_j'$." ] }, { "cell_type": "markdown", "id": "52721f33-6093-4d4b-b39d-0a51c4da2ce3", "metadata": {}, "source": [ "Let be $j\\in \\{1,\\ldots,N\\}$, and $\\tilde{r}_j$ the radius of $\\Omega_j$.\n", "- Let $\\mathbf{r} \\in \\Omega_0$ and $\\mathbf{r}=(r,\\theta,\\varphi )$ be expressed in the $j$th spherical coordinate system, then\n", "$$\\begin{aligned}\n", " DL_{0j} ( Y_{l,m,j}) (\\mathbf{r}) &= -i \\left( k_0 \\tilde{r}_j \\right)^2 j_l' (k_0 \\tilde{r}_j) h_l^{(1)}(k_0 r) Y_{l,m}(\\theta, \\varphi ),\\\\\n", " SL_{0j} ( Y_{l,m,j}) (\\mathbf{r}) &= i k_0 \\tilde{r}_j^2 j_l (k_0 \\tilde{r}_j) h_l^{(1)}(k_0 r) Y_{l,m}(\\theta, \\varphi ).\n", "\\end{aligned}$$\n", "- Let $\\mathbf{r} \\in \\Omega_j$ and $\\mathbf{r}=(r,\\theta,\\varphi )$ expressed in the $j$th spherical coordinate system, then\n", "$$\\begin{aligned}\n", " DL_{j} ( Y_{l,m,j}) (\\mathbf{r}) &= i \\left( k_j \\tilde{r}_j \\right)^2 h_l^{(1)'}(k_j \\tilde{r}_j) j_l (k_j r) Y_{l,m}(\\theta, \\varphi ),\\\\\n", " SL_{j} ( Y_{l,m,j}) (\\mathbf{r}) &= i k_j \\tilde{r}_j^2 h_l^{(1)}(k_j \\tilde{r}_j) j_l (k_j r) Y_{l,m}(\\theta, \\varphi ).\n", "\\end{aligned}$$" ] }, { "cell_type": "markdown", "id": "e01b399f-ec58-4aa3-a872-c2568a3357d8", "metadata": {}, "source": [ "The diagonal forms of the BIOs are:\n", "$$\\begin{aligned}\n", "\tV_{j,j}^0\\left( Y_{l,m,j} \\right) &= i k_0 \\tilde{r}_j^2 j_l (k_0 \\tilde{r}_j) h_l^{(1)}(k_0 k_0 \\tilde{r}_j) Y_{l,m,j}, & V_{j}\\left( Y_{l,m,j} \\right)&= i k_0 \\tilde{r}_j^2 j_l (k_0 \\tilde{r}_j) h_l^{(1)}(k_0 \\tilde{r}_j) Y_{l,m,j}, \\\\\n", "\tK_{j,j}^0\\left( Y_{l,m,j} \\right) &= -\\frac{i}{2} (k_0 \\tilde{r}_j)^2 (j_l' (k_0 \\tilde{r}_j) h_l^{(1)}(k_0 \\tilde{r}_j) + j_l (k_0 \\tilde{r}_j) h_l^{(1)'}(k_0 \\tilde{r}_j)) Y_{l,m,j} , &\tK_{j}\\left( Y_{l,m,j} \\right) &= \\frac{i}{2} (k_0 \\tilde{r}_j)^2 (j_l' (k_0 \\tilde{r}_j) h_l^{(1)}(k_0 \\tilde{r}_j) + j_l (k_0 \\tilde{r}_j) h_l^{(1)'}(k_0 \\tilde{r}_j)) Y_{l,m,j},\\\\\n", "\tK^{*0}_{j,j}\\left( Y_{l,m,j} \\right) &= -\\frac{i}{2} (k_0 \\tilde{r}_j)^2 (j_l' (k_0 \\tilde{r}_j) h_l^{(1)}(k_0 \\tilde{r}_j) + j_l (k_0 \\tilde{r}_j) h_l^{(1)'}(k_0 \\tilde{r}_j))Y_{l,m,j}, & K^*_{j}\\left( Y_{l,m,j} \\right) &= \\frac{i}{2} (k_0 \\tilde{r}_j)^2 (j_l' (k_0 \\tilde{r}_j) h_l^{(1)}(k_0 \\tilde{r}_j) + j_l (k_0 \\tilde{r}_j) h_l^{(1)'}(k_0 \\tilde{r}_j))Y_{l,m,j},\\\\\n", "\tW_{j,j}^0\\left( Y_{l,m,j} \\right) &= i k_0^3 \\tilde{r}_j^2 j_l' (k_0 \\tilde{r}_j) h_l^{(1)'}(k_0 \\tilde{r}_j) Y_{l,m,j}, & \tW_{j}\\left( Y_{l,m,j} \\right)&= i k_0^3 \\tilde{r}_j^2 j_l' (k_0 \\tilde{r}_j) h_l^{(1)'}(k_0 \\tilde{r}_j) Y_{l,m,j}.\n", "\\end{aligned}$$" ] }, { "cell_type": "markdown", "id": "ff9a0d7f-a3fd-422f-9a03-31f41f64a5eb", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "## `v_jj_azimuthal_symmetry`" ] }, { "cell_type": "markdown", "id": "aa5054b7", "metadata": {}, "source": [ "This function returns a numpy array, which we will call `v`. Its length is `big_l + 1`. Each entry contains\n", "$$v[l] = ( V_{j,j}^0 Y_{l,0} , Y_{l,0} )_{L^2(\\mathbb{S_j})} = ( V_{j,j} Y_{l,0} , Y_{l,0} )_{L^2(\\mathbb{S_j})} = i \\tilde{r}_j^4 k_0 j_l(k_0\\tilde{r}_j) h_l^{(1)}(k_0\\tilde{r}_j).$$" ] }, { "cell_type": "markdown", "id": "f0604595-f6d2-4b39-85eb-2f0fd2d714bd", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Docstring" ] }, { "cell_type": "code", "execution_count": 3, "id": "217b1fa1-1c6d-4922-be19-9c92a89e6994", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " Returns a numpy array with the boundary integral operator V_{j,j}\n", " with Helmholtz kernel evaluated and tested with spherical harmonics\n", " of order 0 in a sphere of radius r.\n", "\n", " Notes\n", " -----\n", " v[l] = ( V_{j,j} Y_l,0 ; Y_l,0 )_L^2(surface sphere radius r).\n", " = i r**4 k j_l(kr) h_l(kr)\n", " for each l such that 0 <= l <= big_l, and with\n", " ( ., .)_L^2(surface sphere radius r): inner product where indicated.\n", " Y_l,0: spherical harmonic degree l, order 0.\n", " j_l: spherical Bessel function.\n", " h_l: spherical Hanckel function of first kind.\n", "\n", " Notice that the expression could also be computed as:\n", " 0.5 i r pi J_{l+0.5}(k r) H_{l+0.5}(k r)\n", " with J_{nu} the Bessel function and\n", " H_{nu} the Hanckel function of first kind.\n", "\n", " Parameters\n", " ----------\n", " big_l : int\n", " >= 0, max degree.\n", " r : float\n", " > 0, radius.\n", " k : float\n", " wave number.\n", "\n", " Returns\n", " -------\n", " v : np.ndarray\n", " with complex values. Length (big_l+1). See the section notes for\n", " the ordering of the array.\n", "\n", " \n" ] } ], "source": [ "print(selfinteractions.v_jj_azimuthal_symmetry.__doc__)" ] }, { "cell_type": "markdown", "id": "9f954f50-161b-486a-b08e-aec8629d302a", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Example" ] }, { "cell_type": "markdown", "id": "733b1b69", "metadata": {}, "source": [ "Definition of parameters:" ] }, { "cell_type": "code", "execution_count": 4, "id": "9ccd1cf2-7f81-432b-b4fe-0072d18200e0", "metadata": {}, "outputs": [], "source": [ "r = 2.5\n", "big_l = 50\n", "k = 7." ] }, { "cell_type": "markdown", "id": "4b701430", "metadata": {}, "source": [ "Calling of the function:" ] }, { "cell_type": "code", "execution_count": 5, "id": "a8882564-d134-4223-94c8-fef01042e018", "metadata": {}, "outputs": [], "source": [ "v = selfinteractions.v_jj_azimuthal_symmetry(big_l, r, k)" ] }, { "cell_type": "markdown", "id": "7ec6466a", "metadata": {}, "source": [ "Plot of the values:" ] }, { "cell_type": "code", "execution_count": 6, "id": "4147a5a8-c6fc-4bac-bdc5-f20d985d3a4a", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.plot(\n", " np.real(v),\n", " marker='x',\n", " label='Real part of V'\n", ")\n", "plt.plot(\n", " np.imag(v),\n", " marker='x',\n", " label='Imaginary part of V'\n", ")\n", "plt.title('V')\n", "plt.xlabel('l')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "afe48352-f95b-4776-a456-28755039028b", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "## `k_0_jj_azimuthal_symmetry`" ] }, { "cell_type": "markdown", "id": "e218901f", "metadata": {}, "source": [ "This function returns a numpy array, which we will call `data_k`. Its length is `big_l + 1`. Each entry contains\n", "$$\\begin{aligned}\n", "data_k[l] &= ( K_{j,j}^0 Y_{l,0} , Y_{l,0} )_{L^2(\\mathbb{S_j})} = ( K_{j,j}^{0*} Y_{l,0} , Y_{l,0} )_{L^2(\\mathbb{S_j})}\\\\\n", "&= -\\frac{i}{2} (k_0 \\tilde{r}_j)^2 (j_l' (k_0 \\tilde{r}_j) h_l^{(1)}(k_0 \\tilde{r}_j) + j_l (k_0 \\tilde{r}_j) h_l^{(1)'}(k_0 \\tilde{r}_j)) Y_{l,0}\n", "\\end{aligned}$$\n", "where $\\mathbb{S_j}$ is the surface of the sphere $j$ and $r_j$ its radius." ] }, { "cell_type": "markdown", "id": "ba6f9dfe-babb-45a7-ad3e-3f5bf5571526", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Docstring" ] }, { "cell_type": "code", "execution_count": 7, "id": "c6dc8092-f4b9-4ecb-ba56-bfd9b7e07d17", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " Returns a numpy array with the boundary integral operator K_{j,j}^0,\n", " with normals from out to in of the sphere, with Helmholtz kernel\n", " evaluated and tested with spherical harmonics of order 0.\n", "\n", " Notes\n", " -----\n", " k_0_jj[l] = (K_{j,j}^0 Y_l,0 ; Y_l,0)_L^2(surface sphere radius r).\n", " = -1j * k**2 * r**4 * 0.5\n", " * (j_l(r k) * h_l_d(r k) + j_l_d(r k) * h_l(r k))\n", " for each l such that 0 <= l <= big_l, and with\n", " ( ., .)_L^2(surface sphere radius r): inner product where indicated.\n", " Y_l,0: spherical harmonic degree l, order 0.\n", " j_l: spherical Bessel function, and j_l_d its derivative.\n", " h_l: spherical Hanckel function of first kind, and j_l_d its\n", " derivative.\n", "\n", " Notice that in this specific case\n", " ( K_{j,j}^0 Y_l,0 ; Y_l,0 )_L^2(surface sphere radius r)\n", " = ( K_{j,j}^{*0} Y_l,0 ; Y_l,0 )_L^2(surface sphere radius r)\n", " where K_{j,j}^{*0} has normals from out to in of the sphere, and\n", " with Helmholtz kernel.\n", "\n", " Parameters\n", " ----------\n", " big_l : int\n", " >= 0, max degree.\n", " r : float\n", " > 0, radius.\n", " k : float\n", " wave number.\n", "\n", " Returns\n", " -------\n", " k_0 : np.ndarray\n", " with complex values. Length (big_l+1). See the section notes for\n", " the ordering of the array.\n", "\n", " \n" ] } ], "source": [ "print(selfinteractions.k_0_jj_azimuthal_symmetry.__doc__)" ] }, { "cell_type": "markdown", "id": "a6f6d05f-3435-4977-b04e-f40855ccf281", "metadata": {}, "source": [ "### Example" ] }, { "cell_type": "markdown", "id": "7eef6fe4", "metadata": {}, "source": [ "Definition of parameters:" ] }, { "cell_type": "code", "execution_count": 8, "id": "6cd5e720-4890-48ef-8dce-679f18b323db", "metadata": {}, "outputs": [], "source": [ "r = 2.5\n", "big_l = 50\n", "k = 7." ] }, { "cell_type": "markdown", "id": "aed9b52d", "metadata": {}, "source": [ "Calling of the function:" ] }, { "cell_type": "code", "execution_count": 9, "id": "46a1efab-fc44-4c41-b56e-cbb31de35799", "metadata": {}, "outputs": [], "source": [ "k_0_jj = selfinteractions.k_0_jj_azimuthal_symmetry(big_l, r, k)" ] }, { "cell_type": "markdown", "id": "bf00c62c", "metadata": {}, "source": [ "Plotting the values:" ] }, { "cell_type": "code", "execution_count": 10, "id": "5fa243ea-0991-49d2-91fd-a43970a7abb3", "metadata": {}, "outputs": [ { "data": { "image/png": "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OAIA9OsEmINy880346WXXsKttxolrng8jueffx49evTQn/v+97+PhQsX4pJLLgEAvPDCC+jfvz8mTpzoej1Tp07F9773PQBsovibb76Jp59+Grfeequn9wEAysrK8NRTT1lKMpIkoaKiAr1793Y899tvv43PPvsMW7Zs0QXG888/j6OPPhoff/wxTjzxRHTr1g0A0KNHD9fXAoCf//znGDJkCD744AOUlmZwmPME7ZrpCMjUvpszCc0RyViaMYVVTZhniABAJCihd2UEAOVECAIAjj32WP1jSZLQrVs33fIHgF69egEA9uzZoz/3xz/+EWPHjkWPHj1QXl6OJ598Etu3bwcANDQ04JtvvsG3vvUty+uecMIJvq5FEAT07t3bct5XXnkFp556Knr37o3y8nLceeed+nk5AwcOtIgQALj22mvx1ltvYceOHQCAhQsX4kc/+pFrWQSAZTZWIBDA2LFj8eWXX3p6HzijRo3KKhfy5ZdfoqamxuJyHHXUUaiurrZcg1fOO+88rF+/Ho8//rjvr80W2r7bESBHJHd0R8SrELE6InpQtXu5/lxN1xLsboyirr4Nxw3okrdLJToxwVLmTPjlvfnM/ZBCrJR7+i3AqTMyf13quXMgNcwpCILlOX6zVhQW9H755ZcxY8YMPPjggxg3bhwqKirw29/+Fh9++GHa65jxUgq1uxZ+3hUrVuDyyy/HPffcg7PPPhtVVVV48cUX8eCDD1q+pqws3R067rjjMHr0aDz33HM4++yzsWbNGvzf//1fxuuxg39fXt8Hu+vxgqqqtkLJ6flM/OAHP8D555+Pa665BrIs4xe/+EVW1+UHEiIdARIiuRPXXIuMQsS+NGMeZsap6VKKj7fWkyNC5A9B8F8eqZ3LRAhvQedBVZs1BR2Jd999F+PHj9dLKACwadMm/eOqqir06tULH330EU477TQALNi5atUqjBkzJuvzvv/++xg4cCBmz56tP7dt2zbPX//Tn/4U8+fPx44dO3DmmWe65ik4K1aswOmnnw6ABXA/+eQTTJ3KNoJneh/cCIVCkGXZ9ZijjjoK27dvR11dnX6ta9euRUNDA4488khP50nlhz/8ISRJwtVXXw1FUSwlrULQqYTI/EXrIYmC7TbVBYs3QFZUzJgyov0vjLbv5k7CqxDhYVV7IcJLMwDQvyufJUJChCgSKVuiARh/p0wG7mgMGzYMzz33HP79739j8ODBeP755/Hxxx9j8ODB+jHTpk3DnDlzMGzYMBxxxBF45JFHUF9fn9Vv8ubzbt++HS+++CJOPPFEvPHGG3j99dc9f/2VV16JX/ziF3jyySfx3HPPefqa3//+9xg+fDiOPPJIzJ8/H/X19bjmmmv068n0PjgxaNAgvPPOO7j88ssRDofRvXv3tGPOPPNMHHvssbjyyivx0EMPIZlM4oYbbsCECRMwduxYz993KldeeSVEUcRVV10FRVFw++23Z/1amehUGRFJFDBv0XosWLzB8vyCxRswTxMpRYFGvOeO1/bdcHpppqEtgX3NTAyahYjewkv7ZohiYR7GZyZlGF9H5LrrrsNFF12Eyy67DCeddBL2799vcQUAFjS94oor8MMf/hDjxo1DeXk5zj77bEQikazPe8EFF2DGjBmYOnUqxowZg+XLl+POO+/0/PWVlZX43ve+h/Lycs9D3e6//3488MADGD16NN5991387W9/00WDl/fBiXvvvRdbt27F0KFD0/IsHD6ErEuXLjj99NNx5plnYsiQIXjppZc8ncONK664An/6059w55134je/+U3Or+eEoHbg3sTGxkZUVVWhoaEhb1NWueg466heuOj4/lj/TRPmLVqPmVNG2DolBUdOAr/uZjweMB645l/OxxP2LPwOsO094OKFwDEXOR+3dz3w+xOBSDVwO7NrV9cdxIW/fx+9KsP48I4z9UNXbN6Py59YgYHdSlF7y6QCfwPE4Ug0GsWWLVswePDgnG6unQVFUXDkkUfi0ksvLeo01SlTpuDII4/EggULXI/bunUrBg8enHM56VDF7efbz/27U5VmAGD65OHYsq8Fr6/agUVrv4EKFE+EAOkj3ckRyQ7fpZlGQFEAUTQFVa21ez5LZOfBNsiKWjzHjCAOU7Zt24a33noLEyZMQCwWw6OPPootW7bg+9//flGu58CBA3jrrbewZMkSPProo0W5hs5IpxMiAHDp2Bq8vmoHVAAhSSyeCAHSMyGUEckOv5NVVQWINwORSmzZayy7M9O7MoKgJCAhq9jdGNVnixAEkR9EUcQzzzyDX/ziF1BVFccccwzefvvtrEOWuXL88cejvr4eDzzwAEaOHFmUa+iMdEoh8rf/7NA/jssKFizeUERHJJ7ymIRIVnh1RAIRowUy1ghEKi3L7sxI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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.plot(\n", " np.real(k_0_jj),\n", " marker='x',\n", " label='Real part of K'\n", ")\n", "plt.plot(\n", " np.imag(k_0_jj),\n", " marker='x',\n", " label='Imaginary part of K'\n", ")\n", "plt.title('K')\n", "plt.xlabel('l')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "7238c09e-0aa4-46e0-b44b-782c298f56e0", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "## `k_1_jj_azimuthal_symmetry`" ] }, { "cell_type": "markdown", "id": "b3e73f61", "metadata": {}, "source": [ "This function returns a numpy array, which we will call `k_j`. Its length is `big_l + 1`. Each entry contains\n", "$$\\begin{aligned}\n", "k_j[l] &= ( K_{j,j} Y_{l,0} , Y_{l,0} )_{L^2(\\mathbb{S_j})} = ( K_{j,j}^* Y_{l,0} , Y_{l,0} )_{L^2(\\mathbb{S_j})}\\\\ &= \\frac{i}{2} (k_0 \\tilde{r}_j)^2 (j_l' (k_0 \\tilde{r}_j) h_l^{(1)}(k_0 \\tilde{r}_j) + j_l (k_0 \\tilde{r}_j) h_l^{(1)'}(k_0 \\tilde{r}_j)) Y_{l,0}\n", "\\end{aligned}$$\n", "where $\\mathbb{S_j}$ is the surface of the sphere $j$ and $r_j$ its radius." ] }, { "cell_type": "markdown", "id": "dd029cc7-d953-4e9b-969f-249c1f1b1725", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Docstring" ] }, { "cell_type": "code", "execution_count": 11, "id": "7de87fb8-bd36-4f91-90f5-9ea6ab1a181a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " Returns a numpy array with the boundary integral operator K_{j,j},\n", " with normals from in to out of the sphere, with Helmholtz kernel\n", " evaluated and tested with spherical harmonics of order 0.\n", "\n", " Notes\n", " -----\n", " k_jj[l] = ( K_{j,j} Y_l,0 ; Y_l,0 )_L^2(surface sphere radius r).\n", " = 1j * k**2 * r**4 * 0.5\n", " * (j_l(r k) * h_l_d(r k) + j_l_d(r k) * h_l(r k))\n", " for each l such that 0 <= l <= big_l, and with\n", " ( ., .)_L^2(surface sphere radius r): inner product where indicated.\n", " Y_l,0: spherical harmonic degree l, order 0.\n", " j_l: spherical Bessel function, and j_l_d its derivative.\n", " h_l: spherical Hanckel function of first kind, and j_l_d its\n", " derivative.\n", "\n", " Notice that in this specific case\n", " ( K_{j,j} Y_l,0 ; Y_l,0 )_L^2(surface sphere radius r)\n", " = ( K_{j,j}^{*} Y_l,0 ; Y_l,0 )_L^2(surface sphere radius r)\n", " where K_{j,j}^{*} has normals from in to out of the sphere, and with\n", " Helmholtz kernel.\n", "\n", " Parameters\n", " ----------\n", " big_l : int\n", " >= 0, max degree.\n", " r : float\n", " > 0, radius.\n", " k : float\n", " wave number.\n", "\n", " Returns\n", " -------\n", " k_jj : np.ndarray\n", " with complex values, length (big_l+1). See the section notes for\n", " the ordering of the array.\n", "\n", " \n" ] } ], "source": [ "print(selfinteractions.k_1_jj_azimuthal_symmetry.__doc__)" ] }, { "cell_type": "markdown", "id": "6fa91571-ad72-4cc7-b136-61887f126a1a", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Example" ] }, { "cell_type": "markdown", "id": "7da8b1b6", "metadata": {}, "source": [ "Definition of parameters:" ] }, { "cell_type": "code", "execution_count": 12, "id": "d1f8729f-66ef-4979-ac9a-d601bb77a724", "metadata": {}, "outputs": [], "source": [ "r = 2.5\n", "big_l = 50\n", "k = 7." ] }, { "cell_type": "markdown", "id": "124e18ba", "metadata": {}, "source": [ "Calling of the function:" ] }, { "cell_type": "code", "execution_count": 13, "id": "9f243486-8ca6-45e1-adb3-7bd247227358", "metadata": {}, "outputs": [], "source": [ "k_1_jj = selfinteractions.k_1_jj_azimuthal_symmetry(big_l, r, k)" ] }, { "cell_type": "markdown", "id": "ae9b6024", "metadata": {}, "source": [ "Plotting the values:" ] }, { "cell_type": "code", "execution_count": 14, "id": "8731be42-e4b9-463e-9895-9d4134b7efd8", "metadata": {}, "outputs": [ { "data": { "image/png": "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68eUl5fjqaeewhdffIEHH3wQTzzxBBYsWOD6+X/+85/jN7/5DZYvX46+ffvinHPO0QVNJBLBMcccg3/84x/473//i6uvvhqXXnopPvroo6THePrpp+Hz+fD+++/jsccew/LlywEwMVVfX69/nUp7ezvOPPNM9OzZE8uXL8df/vIXvPXWW5g2bRoA4Gc/+xkWLVoEAKivr0d9fX3Gn2X16tU48cQTcfDBB+ONN95AeXm569fjQENQc/nr9ECvXr3w61//Gj/+8Y+zHtvc3IzKyko0NTWhoqKiE86ua3Pry5/h+eVGnZEcEYIoLpFIBBs3bkRNTQ1CoRDaYwkccvu/i3IuX9x9BkoCzqrxl19+Of785z8jFApBlmVEIhEAwPz58zFjxgwAwODBg3H//ffj4osv1r/vV7/6Ff75z3/igw8+sHzcX//613jhhRewYsUKAMxNeO2115JyE2aWLl2KyZMn4/nnn8eFF14IANi3bx8GDRqEp556Ct/73vcsv+8b3/gGxowZg9/85jcAmCPS1NSElStXJh0nCAJeffVVnHfeebavxRNPPIFbbrkFW7duRWlpKQDgn//8J771rW9h+/bt6NevH1577TV8+9vfzij2Nm3apI9DnzBhAt566y1IkmR7fFcg9e/bjJvrd6dlRGRZxl/+8he0tbVh/PjxlsdEo1FEo1H96+bm5s46vS7PwsVrk0TIjNNGYr7WLUNihCAIt0yePBmPPPII2tvb8eSTT2LNmjW4/vrrAbB8w9atW/HjH/8YV111lf49iUQClZWV+tcvvfQSHnjgAaxbtw6tra1IJBKe3lSarxm9evXC6NGj8eWXXwJg15b77rsPL7zwArZt26ZfR7ho4IwbN8718wIsiHrkkUcmPd6JJ54IRVGwevVq9OvXz9XjnXvuuXj11Vfx8ssv2wqp7kbBhcjnn3+O8ePHIxKJoKysDK+++ioOOeQQy2PnzJmDu+66q9CndMDB68XnjR2I11ZuBwBcM2k4BEEgMUIQ+xFhv4Qv7j7D9fc9snQ9Hnp7HfySgLis4vpTR+DaScNdP7cbSktLMWLECADAwoULMXnyZNx11134v//7P32B3xNPPIHjjz8+6fv4u/wPP/wQF110Ee666y6cccYZqKysxPPPP4958+a5Og87eBZj3rx5WLBgAR544AEcfvjhKC0txY033pi27ThVmDhFVVXb3IeXgV6/+MUvcMQRR+CSSy6Bqqq609OdKbgQGT16NFatWoXGxka8/PLLuOyyy1BXV2cpRmbNmoWZM2fqXzc3N6O6urrQp9jlkRUVM6eOwsi+ZboQiSYUXXzISqdW3wiCsEEQBMflEc7CxWvx0Nvr9FIrf+Ph7+Qc2B133IGzzjoL1157LQYOHIiDDjoIGzZswCWXXGJ5/Pvvv48hQ4Zg9uzZ+m2bN2/29NwffvghBg8eDABoaGjAmjVrcPDBBwMA3n33XZx77rn4wQ9+AIAtY1u7di3GjBmT9XH9fn/W8eSHHHIInn76abS1teli5v3334coihg1ylvH0i9/+Uv4fD5ccsklUBQlqbzVHSm4EAkEArqqHjduHJYvX44HH3wQjz32WNqxwWAQwWCw0Kd0wMHb915d+bV+WyzB3rG4+h/VkjmAKAETb06/r24uoMjA5Fk5nStBEM7hosOc9zK365u/LjSTJk3CoYceinvvvRcPP/ww7rzzTkyfPh0VFRU466yzEI1GsWLFCjQ0NGDmzJkYMWIEtmzZgueffx7HHnssXn/9dbz66quenvvuu+9G79690a9fP8yePRtVVVV6rmPEiBF4+eWX8cEHH6Bnz56YP38+duzY4UiIDB06FIsXL8aJJ56IYDCInj17ph1zySWX4I477sBll12GO++8E7t378b111+PSy+91HVZxsytt94KSZJw6aWXQlEUW0HXHej0gWaqqiblQIj8EYkr+ufRhJLhSBtECVhyDxMdZurmstvFrh2sIoiuBnc7U8XG9CkjMXPqqE53O2fOnIknnngCW7duxZVXXoknn3wSTz31FA4//HBMnDgRTz31FGpqagCwLMSMGTMwbdo0HHXUUfjggw9w2223eXre++67DzfccAOOOeYY1NfX429/+5s+B+S2227D0UcfjTPOOAOTJk1C//79M4ZPzcybNw+1tbWorq7G2LFjLY8pKSnBv//9b+zbtw/HHnssLrjgAkyZMgUPP/ywp5/FzM9//nPMnTsXl112Gf70pz/l/HhdlYJ2zfziF7/AWWedherqarS0tOD555/HfffdhzfeeANTp07N+v3UNeOORe9vxF1//wIA8PZNEzGsT5n7B+Gi48iLgROuA9a8wb6ePNvaKSEIwpZMXQVEdnjXTENDA3r06FHs0yFS6BJdMzt37sSll16K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WqhXQOh17hzode4c6HXuHOh17jwK9VqrqoqWlhYMHDgQopg5BbJfOyKiKGLQoEEFfY6Kigr6Q+8E6HXuHOh17hzode4c6HXuPArxWmdzQjgUViUIgiAIomiQECEIgiAIomh0WyESDAZxxx13IBgMFvtUDmjode4c6HXuHOh17hzode489ofXer8OqxIEQRAEcWDTbR0RgiAIgiCKDwkRgiAIgiCKBgkRgiAIgiCKBgkRgiAIgiCKRrcUIr/73e9QU1ODUCiEY445Bu+++26xT6nL88477+Bb3/oWBg4cCEEQ8NprryXdr6oq7rzzTgwcOBDhcBiTJk3C//73v+KcbBdlzpw5OPbYY1FeXo6+ffvivPPOw+rVq5OOodc5PzzyyCM44ogj9CFP48ePx7/+9S/9fnqd88+cOXMgCAJuvPFG/TZ6nfPDnXfeCUEQkv71799fv7/Yr3O3EyIvvPACbrzxRsyePRsrV67EySefjLPOOgtbtmwp9ql1adra2nDkkUfi4Ycftrx/7ty5mD9/Ph5++GEsX74c/fv3x9SpU/V9QkR26urq8NOf/hQffvghamtrkUgkcPrpp6OtrU0/hl7n/DBo0CDcd999WLFiBVasWIFTTz0V5557rv4/Z3qd88vy5cvx+OOP44gjjki6nV7n/HHooYeivr5e//f555/r9xX9dVa7Gccdd5x6zTXXJN128MEHq7feemuRzujAA4D66quv6l8riqL2799fve+++/TbIpGIWllZqT766KNFOMMDg127dqkA1Lq6OlVV6XUuND179lSffPJJep3zTEtLizpy5Ei1trZWnThxonrDDTeoqkp/z/nkjjvuUI888kjL+/aH17lbOSKxWAyffPIJTj/99KTbTz/9dHzwwQdFOqsDn40bN2LHjh1Jr3swGMTEiRPpdc+BpqYmAECvXr0A0OtcKGRZxvPPP4+2tjaMHz+eXuc889Of/hTf+MY3cNpppyXdTq9zflm7di0GDhyImpoaXHTRRdiwYQOA/eN13q+X3uWbPXv2QJZl9OvXL+n2fv36YceOHUU6qwMf/tpave6bN28uxil1eVRVxcyZM3HSSSfhsMMOA0Cvc775/PPPMX78eEQiEZSVleHVV1/FIYccov/PmV7n3Hn++efx6aefYvny5Wn30d9z/jj++OPxxz/+EaNGjcLOnTvxq1/9ChMmTMD//ve//eJ17lZChCMIQtLXqqqm3UbkH3rd88e0adPw2Wef4b333ku7j17n/DB69GisWrUKjY2NePnll3HZZZehrq5Ov59e59zYunUrbrjhBrz55psIhUK2x9HrnDtnnXWW/vnhhx+O8ePHY/jw4Xj66adxwgknACju69ytSjNVVVWQJCnN/di1a1eaGiTyB09n0+ueH66//nr87W9/w5IlSzBo0CD9dnqd80sgEMCIESMwbtw4zJkzB0ceeSQefPBBep3zxCeffIJdu3bhmGOOgc/ng8/nQ11dHRYuXAifz6e/lvQ655/S0lIcfvjhWLt27X7x99ythEggEMAxxxyD2trapNtra2sxYcKEIp3VgU9NTQ369++f9LrHYjHU1dXR6+4CVVUxbdo0vPLKK3j77bdRU1OTdD+9zoVFVVVEo1F6nfPElClT8Pnnn2PVqlX6v3HjxuGSSy7BqlWrMGzYMHqdC0Q0GsWXX36JAQMG7B9/z50Sid2PeP7551W/36/+/ve/V7/44gv1xhtvVEtLS9VNmzYV+9S6NC0tLerKlSvVlStXqgDU+fPnqytXrlQ3b96sqqqq3nfffWplZaX6yiuvqJ9//rl68cUXqwMGDFCbm5uLfOZdh2uvvVatrKxUly5dqtbX1+v/2tvb9WPodc4Ps2bNUt955x1148aN6meffab+4he/UEVRVN98801VVel1LhTmrhlVpdc5X9x0003q0qVL1Q0bNqgffvih+s1vflMtLy/Xr3vFfp27nRBRVVX97W9/qw4ZMkQNBALq0Ucfrbc/Et5ZsmSJCiDt32WXXaaqKmsRu+OOO9T+/furwWBQPeWUU9TPP/+8uCfdxbB6fQGoixYt0o+h1zk/XHHFFfr/I/r06aNOmTJFFyGqSq9zoUgVIvQ654cLL7xQHTBggOr3+9WBAweq559/vvq///1Pv7/Yr7OgqqraOd4LQRAEQRBEMt0qI0IQBEEQxP4FCRGCIAiCIIoGCRGCIAiCIIoGCRGCIAiCIIoGCRGCIAiCIIoGCRGCIAiCIIoGCRGCIAiCIIoGCRGCIIrGpEmTcOONNxb7NAiCKCIkRAiCIAiCKBokRAiCIAiCKBokRAiCIAiCKBokRAiCIAiCKBokRAiCIAiCKBokRAiCIAiCKBokRAiCIAiCKBokRAiCIAiCKBokRAiCIAiCKBokRAiCIAiCKBqCqqpqsU+CIAiCIIjuCTkiBEEQBEEUDRIiBEEQBEEUDRIiBEEQBEEUDRIiBEEQBEEUDRIiBEEQBEEUDRIiBEEQBEEUDRIiBEEQBEEUDRIiBEEQBEEUDRIiBEEQBEEUDRIiBEEQBEEUDRIiBEEQBEEUDRIiBEEQBEEUjf8H2a/V5AQFxawAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.plot(\n", " np.real(k_1_jj),\n", " marker='x',\n", " label='Real part of K'\n", ")\n", "plt.plot(\n", " np.imag(k_1_jj),\n", " marker='x',\n", " label='Imaginary part of K'\n", ")\n", "plt.title('K')\n", "plt.xlabel('l')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "5576dd05-d209-4d3b-91cd-5dca89292fb7", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "## `w_jj_azimuthal_symmetry`" ] }, { "cell_type": "markdown", "id": "ca99f112", "metadata": {}, "source": [ "This function returns a numpy array, which we will call `w`. Its length is `big_l + 1`. Each entry contains\n", "$$w[l] = ( W_{j,j}^0 Y_{l,0} , Y_{l,0} )_{L^2(\\mathbb{S_j})} = ( W_{j,j} Y_{l,0} , Y_{l,0} )_{L^2(\\mathbb{S_j})} = i \\tilde{r}_j^4 k_0 j_l(k_0\\tilde{r}_j) h_l^{(1)}(k_0\\tilde{r}_j).$$" ] }, { "cell_type": "markdown", "id": "3058f002-4af4-4ca8-a4b6-8ee658b4241d", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Docstring" ] }, { "cell_type": "code", "execution_count": 15, "id": "7b894a08-7126-43d6-8c10-5d48bf4239da", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " Returns a numpy array with the boundary integral operator W_{j,j}\n", " with Helmholtz kernel evaluated and tested with spherical harmonics\n", " of order 0.\n", "\n", " Notes\n", " -----\n", " w[l] = ( W_{j,j} Y_l,0 ; Y_l,0 )_L^2(surface sphere radius r).\n", " = -1j k**3 * r**4 * j_l_d(k r) h_l_d(k r)\n", " for each l such that 0 <= l <= big_l, and with\n", " ( ., .)_L^2(surface sphere radius r): inner product where indicated.\n", " Y_l,0: spherical harmonic degree l, order 0.\n", " j_l_d: derivative of the spherical Bessel function.\n", " h_l_d: derivative of the spherical Hanckel function of first kind.\n", "\n", " Parameters\n", " ----------\n", " big_l : int\n", " >= 0, max degree.\n", " r : float\n", " > 0, radius.\n", " k : float\n", " wave number.\n", "\n", " Returns\n", " -------\n", " w: np.ndarray\n", " with complex values, length (big_l+1). See the section notes for\n", " the ordering of the array.\n", "\n", " \n" ] } ], "source": [ "print(selfinteractions.w_jj_azimuthal_symmetry.__doc__)" ] }, { "cell_type": "markdown", "id": "05f93433-a986-4ca0-adbd-4d046b5fce12", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Example" ] }, { "cell_type": "markdown", "id": "a0c598cd", "metadata": {}, "source": [ "Definition of parameters:" ] }, { "cell_type": "code", "execution_count": 16, "id": "58bc8c62-c2b2-4969-9ccd-4c2722244b07", "metadata": {}, "outputs": [], "source": [ "r = 2.5\n", "big_l = 50\n", "k = 7." ] }, { "cell_type": "markdown", "id": "46817013", "metadata": {}, "source": [ "Calling of the function:" ] }, { "cell_type": "code", "execution_count": 17, "id": "6ba494a1-b4d7-46f0-9dfc-52b3025ef2e5", "metadata": {}, "outputs": [], "source": [ "w = selfinteractions.w_jj_azimuthal_symmetry(big_l, r, k)" ] }, { "cell_type": "markdown", "id": "1e6f91ec", "metadata": {}, "source": [ "Plotting of the values:" ] }, { "cell_type": "code", "execution_count": 18, "id": "6b3237a0-b403-470a-bba0-7350553fb2b1", "metadata": {}, "outputs": [ { "data": { "image/png": "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IGZmZoq5ubliVlaW+OCDD4qiyD/P3vT444+Lo0ePdvhYILzPzKzYaW9vx+7duzFr1iyb47NmzcL27dv9dFV9X1FREcrKymzed71ej6ysLL7v3VBXVwcAiIuLA8D32ReMRiM2btyIpqYmTJ48me+xDzzwwAO46qqrcOmll9oc53vtXYWFhUhOTkZGRgZuvvlmHDt2DEBgvM+9fiNDb6usrITRaERiYqLN8cTERJSVlfnpqvo++b119L6fOHHCH5fU64miiAULFuCiiy7CyJEjAfB99qb9+/dj8uTJaG1tRUREBD788EOce+65yl/efI+9Y+PGjfjhhx+wc+fOTo/xz7P3TJo0Ca+//jqGDRuG8vJy/PWvf8WUKVNw4MCBgHifGaw4IQiCzfeiKHY6Rt7H99175s6di3379uGbb77p9Bjf5+4755xzsHfvXtTW1uL999/HHXfcgfz8fOVxvsfdV1JSggcffBCbNm1CSEiI0/P4XnffFVdcoXw9atQoTJ48GUOGDMGGDRtw4YUXAvDv+8xlIDsJCQnQarWdsigVFRWdokryHrnqnO+7d8ybNw8ff/wxtmzZgpSUFOU432fv0el0GDp0KCZMmIClS5di9OjR+Pvf/8732It2796NiooKjB8/HkFBQQgKCkJ+fj5Wr16NoKAg5f3ke+194eHhGDVqFAoLCwPizzSDFTs6nQ7jx49Hbm6uzfHc3FxMmTLFT1fV92VkZCApKcnmfW9vb0d+fj7fdxVEUcTcuXPxwQcf4KuvvkJGRobN43yffUcURbS1tfE99qIZM2Zg//792Lt3r/IxYcIE3Hbbbdi7dy8GDx7M99pH2tracOjQIQwYMCAw/kz3SBlvL7Nx40YxODhYfPXVV8WDBw+K8+fPF8PDw8Xjx4/7+9J6tYaGBnHPnj3inj17RADiihUrxD179ognTpwQRVEUn3nmGTE6Olr84IMPxP3794u33HKLOGDAALG+vt7PV9573H///WJ0dLSYl5cnlpaWKh/Nzc3KOXyfu2/RokXi119/LRYVFYn79u0T//jHP4oajUbctGmTKIp8j33JuhtIFPlee8vDDz8s5uXliceOHRN37Ngh/uIXvxAjIyOV+56/32cGK0784x//EAcNGiTqdDpx3LhxSusneW7Lli0igE4fd9xxhyiKUnvc448/LiYlJYl6vV6cNm2auH//fv9edC/j6P0FIK5fv145h+9z9/32t79V/n7o16+fOGPGDCVQEUW+x75kH6zwvfaOm266SRwwYIAYHBwsJicni9ddd5144MAB5XF/v8+CKIpiz+RwiIiIiNRjzQoREREFNAYrREREFNAYrBAREVFAY7BCREREAY3BChEREQU0BitEREQU0BisEBERUUBjsEJEAWv69OmYP3++vy+DiPyMwQoREREFNAYrREREFNAYrBAREVFAY7BCREREAY3BChEREQU0BitEREQU0BisEBERUUBjsEJEREQBjcEKERERBTQGK0RERBTQBFEURX9fBBEREZEzzKwQERFRQGOwQkRERAGNwQoREREFNAYrREREFNAYrBAREVFAY7BCREREAY3BChEREQU0BitEREQU0BisEBERUUBjsEJEREQBjcEKERERBTQGK0RERBTQ/h9H4RzHZNwVMQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.plot(\n", " np.real(w),\n", " marker='x',\n", " label='Real part of W'\n", ")\n", "plt.plot(\n", " np.imag(w),\n", " marker='x',\n", " label='Imaginary part of W'\n", ")\n", "plt.title('W')\n", "plt.xlabel('l')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "2506f0b0-7999-4f2d-a518-6fa524e6d36a", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "## `bio_jj`" ] }, { "cell_type": "markdown", "id": "b94b55e5-4a0a-4546-a9e1-bddc917fcb3e", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Docstring" ] }, { "cell_type": "code", "execution_count": 19, "id": "69c93056-b429-4f38-afdf-929daa595ca3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " Returns a numpy array with the corresponding boundary integral\n", " operator from the function bio_azimuthal with Helmholtz kernel\n", " evaluated and tested with spherical harmonics of all orders.\n", "\n", " Notes\n", " -----\n", " D[l*(2l+1) + m] = (D_{j,j}Y_l,m;Y_l,m)_L^2(surface sphere radius r).\n", " which in this case is equal to\n", " = D[l*(2l+1)]\n", " for each l such that 0 <= l <= big_l, and with\n", " ( ., .)_L^2(surface sphere radius r): inner product where indicated.\n", " D: boundary integral operator corresponding to the function\n", " bio_azimuthal\n", " Y_l,m: spherical harmonic degree l, order m.\n", "\n", " Parameters\n", " ----------\n", " big_l : int\n", " >= 0, max degree.\n", " r : float\n", " > 0, radius.\n", " k : float\n", " wave number.\n", " bio_azimuthal : Callable[[int, float, float]\n", " python function for computing the operator for m = 0. Must be\n", " one of the functions written before this one.\n", "\n", " Returns\n", " -------\n", " np.ndarray\n", " with complex values, length (big_l+1)**2. See the section notes\n", " for the ordering of the array.\n", "\n", " \n" ] } ], "source": [ "print(selfinteractions.bio_jj.__doc__)" ] }, { "cell_type": "markdown", "id": "10639492-7b74-4372-8dcf-dee6e41a62ac", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Example" ] }, { "cell_type": "markdown", "id": "0c7952a0", "metadata": {}, "source": [ "Definition of the parameters:" ] }, { "cell_type": "code", "execution_count": 20, "id": "e3bb07d7-fb53-452f-ae34-e51c76a16bd4", "metadata": {}, "outputs": [], "source": [ "r = 2.5\n", "big_l = 3\n", "k = 7.\n", "operator = selfinteractions.w_jj_azimuthal_symmetry" ] }, { "cell_type": "markdown", "id": "c40ce5a7", "metadata": {}, "source": [ "Calling of the function:" ] }, { "cell_type": "code", "execution_count": 21, "id": "3b2e6864-80b3-4385-b3d3-c725afbd46fc", "metadata": {}, "outputs": [], "source": [ "full = selfinteractions.bio_jj(big_l, r, k, operator)" ] }, { "cell_type": "code", "execution_count": 22, "id": "4c82cadb-fba9-4941-90a7-80d20b25fae6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[-11.59514193 -3.3131677j 13.61117226-39.00171561j\n", " 13.61117226-39.00171561j 13.61117226-39.00171561j\n", " -17.04878169 -8.25398472j -17.04878169 -8.25398472j\n", " -17.04878169 -8.25398472j -17.04878169 -8.25398472j\n", " -17.04878169 -8.25398472j 20.40932274-28.34521185j\n", " 20.40932274-28.34521185j 20.40932274-28.34521185j\n", " 20.40932274-28.34521185j 20.40932274-28.34521185j\n", " 20.40932274-28.34521185j 20.40932274-28.34521185j]\n" ] } ], "source": [ "print(full)" ] }, { "cell_type": "markdown", "id": "4939646f-fad4-47fb-af82-ce68d228befd", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "## `a_0j_matrix`" ] }, { "cell_type": "markdown", "id": "d9359b04-e322-4673-845f-9346fd8b1286", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Docstring" ] }, { "cell_type": "code", "execution_count": 23, "id": "9783fb36-b886-41ae-a0d1-35c4e228d855", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " Returns a numpy array that represents the following matrix boundary\n", " integral operator\n", " A_{j,j}^0 = [ -K_{j,j}^0 , V_{j,j}^0 ]\n", " [ W_{j,j}^0 , K*_{j,j}^0 ]\n", " with Helmholtz kernel evaluated and tested with spherical harmonics\n", " of order 0 if azimuthal = True, or all orders if azimuthal = False.\n", "\n", " Each block is a diagonal matrix.\n", "\n", " Parameters\n", " ----------\n", " big_l : int\n", " >= 0, max degree.\n", " r : float\n", " > 0, radius.\n", " k : float\n", " wave number.\n", " azimuthal : bool\n", " Default True.\n", "\n", " Returns\n", " -------\n", " matrix_0j : np.ndarray\n", " with complex values.\n", " If azimuthal = True\n", " Shape (2*(big_l+1), 2*(big_l+1))\n", " Else\n", " Shape (2*(big_l+1)**2, 2*(big_l+1)**2)\n", "\n", " See Also\n", " --------\n", " a_0j_linear_operator\n", " v_jj_azimuthal_symmetry\n", " k_0_jj_azimuthal_symmetry\n", " w_jj_azimuthal_symmetry\n", " bio_jj\n", "\n", " \n" ] } ], "source": [ "print(selfinteractions.a_0j_matrix.__doc__)" ] }, { "cell_type": "markdown", "id": "0493810d-8eb9-4f80-91c1-be2c797bbaac", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Example" ] }, { "cell_type": "markdown", "id": "704d2506", "metadata": {}, "source": [ "Definition of the parameters:" ] }, { "cell_type": "code", "execution_count": 24, "id": "273d7cc4-b753-425d-ae1f-77541c88570a", "metadata": {}, "outputs": [], "source": [ "r = 2.5\n", "big_l = 2\n", "k = 7." ] }, { "cell_type": "markdown", "id": "6414a768", "metadata": {}, "source": [ "Calling of the function with `azimuthal = True`:" ] }, { "cell_type": "code", "execution_count": 25, "id": "1ac1c466-314a-4faa-bd97-aac018eed5be", "metadata": {}, "outputs": [], "source": [ "a_0j = selfinteractions.a_0j_matrix(big_l, r, k) # azimuthal = True" ] }, { "cell_type": "markdown", "id": "2b6457e6", "metadata": {}, "source": [ "Plotting of the values:" ] }, { "cell_type": "code", "execution_count": 26, "id": "ddb000d0-e54c-40ef-b7d6-233e03ffb04f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlsAAAFPCAYAAAB6agthAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAAp1AAAKdQFKJd39AAAlyElEQVR4nO3dfXSU9Z3//9c1EwyYQCQhIPcogpFINiA3CYEhoiJLtVaKdDkimNYbqiusS0+XRbw50rr0YOsXta5FusE9ddOqZ8tx+bm7agsniiSHikXZohUFgmCAQIBwm7vP74+EISHJ3JD5zHUNPB/naGau65rres0keec110yCY4wxAgAAgBU+twMAAABczChbAAAAFlG2AAAALKJsAQAAWETZAgAAsIiyBQAAYBFlCwAAwCLKlocMGTJE1157rXJzc5WVlaXly5d3ep+FhYV68803Y5CuY7t27dJLL710wbf/1a9+paysLOXm5mrPnj0xyTN58mQNHz5cOTk5ev/994PrnnjiCf37v/97p48BIHJDhgzRn/70p7gd7+WXX47J/PSCtWvX6sMPP7yg29bW1ur222/XyJEjVVRUFJM8r732moYPH65rrrlGd911l2pqaoLrcnNzdeTIkZgc56Jj4BmDBw82mzdvNsYYs3fvXpOWlmbKy8s7tc/JkyebN954Ixbx2lVbW2vWr19vsrOzL3gfWVlZprS0NGaZpk6dal566SVjjDEbN240/fr1M2fOnInZ/gFEp+VsS1R1dXVxP2Ztba2ZN2+eWbFixQXdvqyszFx99dUxy1NRUWH69OljKioqjDHGPPDAA2bRokUx2//FjDNbHtWvXz9de+212r17tySpsrJS3/ve9zRu3Djl5ORo0aJFamxslCStXLlS48aN06hRo3TDDTdow4YNER3DcRw9+eSTmjRpkoYNG6af//znwXWh9jlkyBAtW7ZMN954o2bMmKH77rtPX375pXJzc3XjjTe2e6ySkhLl5OQoJydHN954o/7yl79Iku688059+eWXuu+++zR9+vQ2t9uwYYMmTJig0aNHKzs7Wy+++GLI+1RVVaUPPvhAP/jBDyRJEyZMUL9+/bR+/XpJ0r333qtnn302oscHQOwVFhZq0aJFmjx5sgYNGqSFCxfqgw8+0OTJk3X11Vdr0aJFwW1DzaFNmzZp1KhRGjlypO655x7l5+cHz+I/9dRT+vu//3tJ0po1azRlyhTdc889ysnJUW5urv7v//5PknTgwAFNmTJFN9xwg7Kzs3X//ferrq6u1e2+//3va/z48VqxYoWuuuqq4NyVpLvuuksvv/xym/u4Zs0aFRYW6nvf+55Gjx6tsWPH6s9//rMkqbGxUdOmTdOYMWN0/fXX66677gqeDdqwYYOuu+46LVq0SAUFBfrXf/1XvfXWW3ruueeUm5ur5557rs2xTpw4oQceeEDZ2dm6/vrrtXDhQtXW1urTTz/V3XffrX379ik3N7fdnIsXL9bYsWOVm5urgoICffLJJyE/d6+//rq+9a1vaeDAgZKkBQsW6LXXXguudxxHVVVVIfdxyXK77eGcls/+tm/fboYOHWoOHDhgjDHmlltuMe+8844xxpj6+npz5513mldeecUYY4LbGGPMJ598Yvr16xe8HurMliTzT//0T8YYYw4ePGgGDRoUPMMUap+DBw828+bNMw0NDcYYE/bM1rZt20xGRobZuXOnMcaYV1991WRlZQVvH+pZb3V1dfAZ5dGjR83QoUPN9u3bOzzWRx991OaZ3F133WV+9atfGWNMp54lArgwLb/HJ0+ebO644w5TX19vampqTGZmprn77rtNXV2dqampMb169TLbtm0zxnQ8h86cOWMGDBgQnIllZWXG5/MFZ92TTz5pHn74YWOMMcXFxSY1NdV88cUXxhhjfvrTn5qZM2caY4w5ffq0OXbsmDHGmIaGBjNr1izz8ssvB2/XtWvXYBZjjCksLDS///3vjTHG7Nmzx2RmZprjx4+3ub/FxcWmS5cuZuvWrcYYY15//XUzbNiw4Mw7ePBgcNsf/ehHZvHixcaYplkqybz33nvB9eFm1uLFi813v/tdU19fb86cOWOmTp1qnnnmmeD+Qs3mljn+67/+y+Tl5XW4rTHGPPLII+bpp58OXj9x4oRxHMecPn3aGNP0M6XlPnFOkstdD+e5++675fP59Pnnn+vFF19UZmamTpw4oT/+8Y86cOBAcLsTJ05o6NChkqSPP/5YzzzzjKqqqpSUlKTKykrt379fffr0CXu8++67T5LUq1cv3XnnnXrvvfc0adKksPu899575fNFdmL0j3/8o2699VYNGTJEkjR37lw98sgjqqioCC7rSFVVlX7wgx/o888/V1JSkg4ePKitW7cqKyur3e1NO//UpzFGjuNElBWAfTNnzpTf71dqaqquvfZaTZs2TUlJSUpNTVVWVpa++OILZWdndziH9u/fL0m65ZZbJEnjx49XTk5Oh8cbP368rrnmmuDl119/XZLU0NCgxYsX64MPPpAxRocOHVJ6enqr22VnZwev/8M//INWrlyp73znO/rlL3+pefPmKSUlpd1jnn0VQmo6A/bAAw9o9+7dGjx4sFauXKl169apvr5ex48fbzXPBg8erJtuuinix/Kdd97R8uXL5ff75ff7NX/+fK1cuVL//M//HPa27777rl544QUdO3ZMjuNox44dIbdvb75KYr5GgLLlMa+99prGjBmjd999V3fccYcmTZqkq666SsYYbdy4sc03dm1trWbMmKF3331X+fn5qq2t1eWXX65Tp05FdLzzv0kcx4lon6mpqVHdr/a+GSP5Bp0/f76mTp2qN954Qz6fT4FAIOR9Gzx4sCorK3XmzBklJydLanrD/KBBg6LKC8Cerl27Bi/7/f421+vr60POofaeQHVUBNo7Xn19vSTpF7/4hfbt26eysjJ169ZNTzzxhCoqKoLbnj/nbr/9dv3oRz/S5s2bVVxcrPLy8g6P2V4+x3H0H//xH3rnnXe0YcMGpaWl6d/+7d9a/dJOtLO1vWNFMlsrKir0wx/+UJs3b9awYcP01VdfBZ/Ad2Tw4MHavn178PrOnTvVp08fXXbZZVFnvtTwni2PuuWWWzR//nwtWbJEqampmjJlip555pngQDlw4IB27typ06dP6/Tp08Ey8dJLL6mhoSHi47zyyiuSms4g/f73v9fNN98c9T7T0tJ09OjRDtffdNNN+t///d/gEPvNb36j/v37R1SAqqurNWjQIPl8Pm3evFllZWUht+/Vq5cKCgr061//WpL04Ycfau/evR2+lwyAN4WaQ1lZWWpsbNQf/vAHSdLmzZv16aefRn2M6upq9enTR926dVNVVZVKSkpCbu/z+fTII4/ou9/9rgoKCjR48OAOty0vLw++B+qNN95Qnz59NGjQIFVXVys9PV09evTQyZMng7OqI+Hm69SpU7Vq1So1NDSorq5Or7zyim699daQ+5Sko0ePKikpSX379pUkvfDCC2FvM2vWLK1bty74W+PPP/+8Zs+eHfZ2oGx52uOPP64PP/xQmzZt0muvvaaKigqNHDlSI0eO1Le+9S198803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L7/8Mu75WnL7sWqprKxMEydOVEpKilJSUlRQUKDy8nJXM7V0+PBhFRYWavr06dq6davbcTRw4MBW173++OHS1KVLFzlO058tPXLkiMaMGSPJm/PwQvXt21c9evSQJHXr1k1JSU1/E/xiuo9SYv1s64x4z9K4/AX5WOvbt6927typHj166O2339bcuXM988fXDh061Oqvyqanp+vQoUOu5fHaY+W1x+d8u3fvVmZmprZs2aJZs2bps88+C/4Q8QKvP364dP35z3/Www8/rC+++EK//OUvJV2cX6+1tbV68MEH9dRTT0m6OO9jey62+xnv++N62crNzW2zrGfPniFfD05OTlZycrIkafr06XrwwQc9ky0jI0OHDx8OXq+urlZGRoaNeEGhcsbrsYpURkaGqqurg9fj8fhEIzMzU5I0evRo9ejRQ5WVlerbt6/Lqc7x+uOHi1e4eZibm6uNGzfqm2++0bhx43Trrbe6Mg87I9x9rK+v1+zZszVz5kzdeuutktyZ+Z2VKD/bbIr7LLX2AmUMnf/accvXVbds2WJyc3PdiGWMaZvtr3/9q8nPzzf19fVm//79ZsSIEa6+ru2lx8qYpjzZ2dnmxIkT5sSJE2bEiBGeec/RsWPHgp+riooKM3jwYE+8J+H892x59fHDpevUqVPByzU1NWbo0KHm9OnTnpuHndHQ0GBmz55tVqxY0Wr5xXQfW/L6z7bOivcsdf3MVjizZ8/WJ598opMnT6qsrEzr1q3Te++9p5/+9KdKTU2VJK1evdoz2YYNG6aZM2dq0qRJMsboxRdflN/vdyWfJM88VmelpaXpscce00033SRjjJYuXaq0tDRXM521bds2PfTQQ+revbtqa2u1atUqVz93kvToo4+qtLRU+/bt080336zVq1d79vHDpeu///u/9dxzz8nv96u2tlY/+9nPlJyc7Ll52Bmvv/661q5dq3379mndunVKTU315MyPhUT42dZZ8f5ZxF+QBwAAsMjTv40IAACQ6ChbAAAAFlG2AAAALKJsAQAAWETZAgAAsIiyBQAAYBFlCwAAwKL/H12OaFZJfiTmAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=plt.figaspect(.5), dpi=68., layout='constrained')\n", "ax_1 = fig.add_subplot(121)\n", "ax_1.set_title(\"Real part of a_0j\")\n", "ax_1.imshow(np.real(a_0j), vmin=np.min(np.real(a_0j)), vmax=np.max(np.real(a_0j)))\n", "fig.colorbar(cm.ScalarMappable(norm=colors.Normalize(vmin=np.min(np.real(a_0j)), vmax=np.max(np.real(a_0j)))), ax=ax_1, orientation=\"horizontal\", shrink=0.75)\n", "ax_1 = fig.add_subplot(122)\n", "ax_1.imshow(np.imag(a_0j), vmin=np.min(np.imag(a_0j)), vmax=np.max(np.imag(a_0j)))\n", "ax_1.set_title(\"Imaginary part of a_0j\")\n", "fig.colorbar(cm.ScalarMappable(norm=colors.Normalize(vmin=np.min(np.imag(a_0j)), vmax=np.max(np.imag(a_0j)))), ax=ax_1, orientation=\"horizontal\", shrink=0.75)" ] }, { "cell_type": "markdown", "id": "8a46ccb0", "metadata": {}, "source": [ "Calling of the function with `azimuthal = False`:" ] }, { "cell_type": "code", "execution_count": 27, "id": "3c6a823c-f28b-4295-98cb-b5d62288f369", "metadata": {}, "outputs": [], "source": [ "a_0j = selfinteractions.a_0j_matrix(big_l, r, k, azimuthal=False)" ] }, { "cell_type": "markdown", "id": "31a5625f", "metadata": {}, "source": [ "Plotting of the values:" ] }, { "cell_type": "code", "execution_count": 28, "id": "d3b5afde-c314-4eb8-a4a9-06f32b093e20", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmwAAAFPCAYAAADwRZIgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAAp1AAAKdQFKJd39AAAsIUlEQVR4nO3de3RUVZr//0+lEi6Ga0Kgwy0oilwkBhpIIJBEQHDwDmgPC7xkGpWZHqAZetYwiOKS1Q492M0XtR1a01PMrNaouKZZDj9nRG1cGaPJRO0GGfECRqKkuYUACQGTVPbvj0CRkFvVSV12kfdrLU2dc/au/ZxN5clTu+pUuYwxRgAAALBWTKQDAAAAQPso2AAAACxHwQYAAGA5CjYAAADLUbABAABYjoINAADAchRsAAAAlqNgiwIjRozQ9ddfr7S0NI0ePVobN27s9H3m5OTo9ddfD0J0bfvmm2/0/PPPO+7/m9/8RqNHj1ZaWpq+/fbboMSTnZ2tUaNGKTU1Vf/zP//jO/b444/r3//93zs9BgD/jRgxQh999FHYxtu6dWtQ8qcNduzYoQ8++MBR39raWt1+++0aP368cnNzgxLPSy+9pFGjRunaa6/VPffco6qqKt+xtLQ0nTp1KijjdGkG1ktJSTElJSXGGGMOHz5s+vbta4qLizt1n9nZ2Wb79u3BCK9VtbW1Zvfu3WbcuHGO72P06NGmoKAgaDHNmTPHPP/888YYYwoLC83gwYPN999/H7T7BxCYprktWtXV1YV9zNraWvPAAw+YTZs2OepfVFRkrrnmmqDFU1ZWZgYNGmTKysqMMcY8/PDDZvXq1UG7fzRihS3KDB48WNdff70OHTokSTpy5Ih+9KMfacqUKUpNTdXq1avV0NAgSdqyZYumTJmiCRMm6Ic//KHee+89v8ZwuVxav369ZsyYoeuuu06//OUvfcfau88RI0Zow4YNuummmzR//nwtXbpUBw8eVFpamm666aZWx8rPz1dqaqpSU1N100036bPPPpMk3X333Tp48KCWLl2qefPmtej33nvvadq0aZo4caLGjRun5557rt1zOnHihN5//339+Mc/liRNmzZNgwcP1u7duyVJDz74oJ5++mm/5gdA8OXk5Gj16tXKzs7W8OHDtXLlSr3//vvKzs7WNddco9WrV/vatpeHPvzwQ02YMEHjx4/Xfffdp6lTp/peTXjiiSf0t3/7t5Kkbdu2aebMmbrvvvuUmpqqtLQ0/d///Z8k6dixY5o5c6Z++MMfaty4cXrooYdUV1fXrN9f/dVfKT09XZs2bdLVV1/ty7uSdM8992jr1q0tznHbtm3KycnRj370I02cOFGTJ0/Wn/70J0lSQ0ODbrnlFk2aNEk33HCD7rnnHt+q1HvvvacxY8Zo9erVyszM1L/8y7/ojTfe0ObNm5WWlqbNmze3GOvs2bN6+OGHNW7cON1www1auXKlamtr9emnn2rx4sUqLy9XWlpaq3GuWbNGkydPVlpamjIzM7V37952/+1ee+013XrrrRo2bJgkacWKFXrppZd8x10ul06cONHufcAPka4Y0bGmz0L3799vRo4caY4dO2aMMebmm282u3btMsYYU19fb+6++27z4osvGmOMr40xxuzdu9cMHjzYt93eCpsk8w//8A/GGGOOHz9uhg8f7lvpau8+U1JSzAMPPGC8Xq8xxnS4wrZv3z6TmJhoSktLjTHG/Nu//ZsZPXq0r397z74rKyt9z2xPnz5tRo4cafbv39/mWB9//HGLZ5T33HOP+c1vfmOMMZ16tgrAmaa/49nZ2ebOO+809fX1pqqqyiQlJZnFixeburo6U1VVZQYMGGD27dtnjGk7D33//fdm6NChvpxYVFRkYmJifLlu/fr15ic/+YkxxhiPx2N69eplvvrqK2OMMT//+c/NwoULjTHGnD9/3pw5c8YYY4zX6zX33nuv2bp1q69fjx49fLEYY0xOTo75/e9/b4wx5ttvvzVJSUmmurq6xfl6PB4TFxdn9uzZY4wx5rXXXjPXXXedL+cdP37c1/ZnP/uZWbNmjTGmMZdKMu+8847veEc5a82aNWbBggWmvr7efP/992bOnDnmqaee8t1fe7m5aRz/+Z//aTIyMtpsa4wxy5cvN08++aRv++zZs8blcpnz588bYxr/pjS9TzgTG+F6EX5avHixYmJi9MUXX+i5555TUlKSzp49qz/84Q86duyYr93Zs2c1cuRISdIf//hHPfXUUzpx4oRiY2N15MgRHT16VIMGDepwvKVLl0qSBgwYoLvvvlvvvPOOZsyY0eF9Pvjgg4qJ8W/h9g9/+IPmzp2rESNGSJLuv/9+LV++XGVlZb59bTlx4oR+/OMf64svvlBsbKyOHz+uPXv2aPTo0a22N618Za4xRi6Xy69YAYTewoUL5Xa71atXL11//fW65ZZbFBsbq169emn06NH66quvNG7cuDbz0NGjRyVJN998syQpPT1dqampbY6Xnp6ua6+91nf7tddekyR5vV6tWbNG77//vowxqqioUEJCQrN+48aN823/9Kc/1ZYtW3TXXXfp17/+tR544AHFx8e3OubFV0OkxpW4hx9+WIcOHVJKSoq2bNminTt3qr6+XtXV1c3yWUpKimbNmuX3XO7atUsbN26U2+2W2+3WsmXLtGXLFv3jP/5jh33ffvttPfvsszpz5oxcLpcOHDjQbvvW8qsk8muQUbBFiZdeekmTJk3S22+/rTvvvFMzZszQ1VdfLWOMCgsLWySH2tpazZ8/X2+//bamTp2q2tpaXXXVVTp37pxf413+i+Zyufy6z169egV0Xq39QvvzS75s2TLNmTNH27dvV0xMjLKysto9t5SUFB05ckTff/+9unfvLqnxIoThw4cHFC+A0OnRo4fvttvtbrFdX1/fbh5q7UlYW8VEa+PV19dLkn71q1+pvLxcRUVF6tmzpx5//HGVlZX52l6e526//Xb97Gc/U0lJiTwej4qLi9scs7X4XC6XXn75Ze3atUvvvfee+vbtq3/9139tdiFUoLm1tbH8ya1lZWX667/+a5WUlOi6667T119/7VsEaEtKSor279/v2y4tLdWgQYPUrVu3gGNG23gPW5S5+eabtWzZMq1du1a9evXSzJkz9dRTT/mS0rFjx1RaWqrz58/r/PnzvoLk+eefl9fr9XucF198UVLjStbvf/97zZ49O+D77Nu3r06fPt3m8VmzZumtt97yJcLf/e53GjJkiF9FVGVlpYYPH66YmBiVlJSoqKio3fYDBgxQZmamfvvb30qSPvjgAx0+fLjN99YBsFN7eWj06NFqaGjQu+++K0kqKSnRp59+GvAYlZWVGjRokHr27KkTJ04oPz+/3fYxMTFavny5FixYoMzMTKWkpLTZtri42PeesO3bt2vQoEEaPny4KisrlZCQoD59+qimpsaXq9rSUX6dM2eOXnjhBXm9XtXV1enFF1/U3Llz271PSTp9+rRiY2OVnJwsSXr22Wc77HPvvfdq586dvqv5n3nmGS1atKjDfggMBVsUeuyxx/TBBx/oww8/1EsvvaSysjKNHz9e48eP16233qo///nP6tOn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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=plt.figaspect(.5), dpi=68., layout='constrained')\n", "ax_1 = fig.add_subplot(121)\n", "ax_1.set_title(\"Real part of a_0j\")\n", "ax_1.imshow(np.real(a_0j), vmin=np.min(np.real(a_0j)), vmax=np.max(np.real(a_0j)))\n", "fig.colorbar(cm.ScalarMappable(norm=colors.Normalize(vmin=np.min(np.real(a_0j)), vmax=np.max(np.real(a_0j)))), ax=ax_1, orientation=\"horizontal\", shrink=0.75)\n", "ax_1 = fig.add_subplot(122)\n", "ax_1.imshow(np.imag(a_0j), vmin=np.min(np.imag(a_0j)), vmax=np.max(np.imag(a_0j)))\n", "ax_1.set_title(\"Imaginary part of a_0j\")\n", "fig.colorbar(cm.ScalarMappable(norm=colors.Normalize(vmin=np.min(np.imag(a_0j)), vmax=np.max(np.imag(a_0j)))), ax=ax_1, orientation=\"horizontal\", shrink=0.75)" ] }, { "cell_type": "markdown", "id": "74758bd0-1325-4cd8-aaea-25ce678ea667", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "## `a_j_matrix`" ] }, { "cell_type": "markdown", "id": "0c4d8ff5-97f4-4c65-ba65-3dc19b7b5356", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Docstring" ] }, { "cell_type": "code", "execution_count": 29, "id": "56708e7d-8fad-46d8-a5d1-8c9047aec9f3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " Returns a numpy array that represents the following matrix boundary\n", " integral operator\n", " A_{j,j}^0 = [ -K_{j,j} , V_{j,j} ]\n", " [ W_{j,j} , K*_{j,j} ]\n", " with Helmholtz kernel evaluated and tested with spherical harmonics\n", " of order 0 if azimuthal = True, or all orders if azimuthal = False.\n", "\n", " Each block is a diagonal matrix.\n", "\n", " Parameters\n", " ----------\n", " big_l : int\n", " >= 0, max degree.\n", " r : float\n", " > 0, radius.\n", " k : float\n", " wave number.\n", " azimuthal : bool\n", " Default True.\n", "\n", " Returns\n", " -------\n", " matrix_j : np.ndarray\n", " with complex values.\n", " If azimuthal = True\n", " Shape (2*(big_l+1), 2*(big_l+1))\n", " Else\n", " Shape (2*(big_l+1)**2, 2*(big_l+1)**2)\n", "\n", " See Also\n", " --------\n", " a_j_linear_operator\n", " v_jj_azimuthal_symmetry\n", " k_1_jj_azimuthal_symmetry\n", " w_jj_azimuthal_symmetry\n", " bio_jj\n", "\n", " \n" ] } ], "source": [ "print(selfinteractions.a_j_matrix.__doc__)" ] }, { "cell_type": "markdown", "id": "f256b53d-77c6-4e7b-b61b-f0364c2b5b52", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Example" ] }, { "cell_type": "markdown", "id": "55c7f201", "metadata": {}, "source": [ "Definition of the parameters:" ] }, { "cell_type": "code", "execution_count": 30, "id": "49954cfc-0a98-484d-a538-2c46a154570e", "metadata": {}, "outputs": [], "source": [ "r = 2.5\n", "big_l = 2\n", "k = 7." ] }, { "cell_type": "markdown", "id": "ed5b004e", "metadata": {}, "source": [ "Calling of the function with `azimuthal = True`:" ] }, { "cell_type": "code", "execution_count": 31, "id": "bc1b8810-ef05-4c6a-afbe-1755e71f3470", "metadata": {}, "outputs": [], "source": [ "a_j = selfinteractions.a_j_matrix(big_l, r, k) # azimuthal = True" ] }, { "cell_type": "markdown", "id": "97aeaa6d", "metadata": {}, "source": [ "Plotting of the values:" ] }, { "cell_type": "code", "execution_count": 32, "id": "ac675f20-5fd1-4655-923c-8494cd76d242", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlsAAAFPCAYAAAB6agthAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAAp1AAAKdQFKJd39AAAkoElEQVR4nO3df3RU9Z3/8dfMhBMwIRFCQAQhSqmRQDYgPxICQwwKHKqlUkqXA0LTVUvtKuvS02URW4+0Lj20ZfFH10XaYE/btOppOZav3VVbOGkpycFiQdYfFQSCxEAIIYSf+fX5/pFkSEgyP8x85t6B5+Mczcy9d+59zSR555U7k8FjjDECAACAFV6nAwAAAFzNKFsAAAAWUbYAAAAsomwBAABYRNkCAACwiLIFAABgEWULAADAIsqWi2VkZOjWW29VTk6OMjMztW7dul7vs6CgQK+88koU0vXs8OHD+vGPf/ypb//f//3fyszMVE5Ojo4ePdrrPHPnztW7777b6/0AiI6MjAy99dZbMTve888/H5X56QZbt27VX/7yl09124aGBt1zzz0aN26cioqKep3lrbfe0oIFC3q9n2tBgtMBENwvfvELTZw4UZWVlRozZowKCws1efJkp2P1qLGxMVC2HnrooU+1j//8z//UCy+8oOnTp0cl02uvvRaV/QCIT8uXL4/6PpuampSQENsfoY2Njdq6davGjh2rqVOnRnz7t99+W++++64OHjwYlTwTJ060/sv71YIzW3Hixhtv1K233qojR45IkqqqqvTlL39ZkydPVnZ2tlauXKmWlhZJ0saNGzV58mSNHz9et99+u3bs2BHWMTwej77zne9o+vTpGj16tH74wx8G1gXbZ0ZGhtauXas77rhD8+fP1/3336+DBw8qJydHd9xxR7fHKikpUXZ2trKzs3XHHXcEzjzde++9OnjwoO6//37NnTu3y+127NihqVOnasKECcrKytKzzz4b8n7F+rdoAOErKCjQypUrNWPGDI0YMUIrVqzQn//8Z82YMUO33HKLVq5cGdg22BzatWuXxo8fr3Hjxum+++5TXl5eoAg88cQT+ud//mdJ0pYtW1RYWKj77rtP2dnZysnJ0f/93/9Jkk6cOKHCwkLdfvvtysrK0gMPPKDGxsZOt/vqV7+qKVOmaP369br55psDc1eSvvSlL+n555/vch+3bNmigoICffnLX9aECRM0adIk/e1vf5MktbS0aM6cOZo4caLGjh2rL33pSzp9+rSk1nl32223aeXKlcrPz9d//dd/6dVXX9WGDRuUk5OjDRs2dDnWuXPn9OCDDyorK0tjx47VihUr1NDQoHfeeUeLFy9WZWWlcnJyus25atUqTZo0STk5OcrPz9e+ffuCfu527NihsWPHBt0GbQxca+TIkWb37t3GGGPee+89M2rUKHPixAljjDF33XWXef31140xxjQ1NZl7773XvPDCC8YYE9jGGGP27dtnbrzxxsD1GTNmmJdffrnb40ky//Zv/2aMMaa6utqMGDHClJaWhtznyJEjzbJly0xzc7Mxxpjt27ebrKysHu/X/v37TVpamjl06JAxxpgXX3zRZGZmBm7f8X5fqba21jQ2NhpjjKmrqzOjRo0y7733Xo/HCrU/ALHX8XtyxowZZt68eaapqcnU19eb9PR0s3jxYtPY2Gjq6+vNoEGDzP79+40xPc+hS5cumeHDhwdmYllZmfF6vYFZ953vfMd84xvfMMYYU1xcbJKTk82HH35ojDHme9/7nlmwYIExxpiLFy+aM2fOGGOMaW5uNgsXLjTPP/984HZ9+/YNZDHGmIKCAvPb3/7WGGPM0aNHTXp6ujl79myX+1tcXGz69Olj9u7da4wx5qWXXjKjR48OzLzq6urAtt/85jfNqlWrjDGts1SSefPNNwPrly1bZtavX9/jY7tq1SrzxS9+0TQ1NZlLly6ZWbNmmaeeeiqwv2CzuWOO3/3udyY3N7fHbcPZHy7jaUSXW7x4sbxerz744AM9++yzSk9P17lz5/THP/5RJ06cCGx37tw5jRo1SlLrqeKnnnpKJ0+eVEJCgqqqqnT8+HENGTIk5PHuv/9+SdKgQYN077336s0339T06dND7vMrX/mKvN7wTpT+8Y9/1OzZs5WRkSFJWrp0qR5++GFVVFQElvXk5MmT+qd/+id98MEHSkhIUHV1tfbu3avMzMywjg3AfRYsWCCfz6fk5GTdeuutmjNnjhISEpScnKzMzEx9+OGHysrK6nEOHT9+XJJ01113SZKmTJmi7OzsHo83ZcoUfeYznwlcfumllyRJzc3NWrVqlf785z/LGKOamhoNHDiw0+2ysrIC1//lX/5FGzdu1Be+8AU999xzWrZsmZKSkro9ZvuzEFLrGbAHH3xQR44c0ciRI7Vx40Zt27ZNTU1NOnv2bKd5NnLkSM2cOTPsx/L111/XunXr5PP55PP5tHz5cm3cuFH//u//HvK2b7zxhp555hmdOXNGHo9HBw4cCPu4CI6y5XLtr9l64403NG/ePE2fPl0333yzjDHauXNnl2/shoYGzZ8/X2+88Yby8vLU0NCg6667ThcuXAjreB6Pp8v1cPaZnJwc0f268jg9LbvS8uXLNWvWLL388svyer3y+/1h3zcA7tS3b9/AZZ/P1+V6U1NT0DlkjOkyP4wxYR+vqalJkvSjH/1IlZWVKisrU79+/fTtb39bFRUVgW2vnHP33HOPvvnNb2r37t0qLi5WeXl5j8fsLp/H49Evf/lLvf7669qxY4dSU1P105/+VD/72c96PGY4upvjoVRUVOjrX/+6du/erdGjR+ujjz4K/AKP3uM1W3Hirrvu0vLly7V69WolJyersLBQTz31VGCgnDhxQocOHdLFixd18eJFjRgxQpL04x//WM3NzWEf54UXXpDUegbpt7/9re68886I95mamqq6uroe18+cOVP/+7//GxhiP//5zzVs2LDA/oOpra3ViBEj5PV6tXv3bpWVlYV93wDEr2BzKDMzUy0tLfrDH/4gSdq9e7feeeediI9RW1urIUOGqF+/fjp58qRKSkqCbu/1evXwww/ri1/8ovLz8zVy5Mgety0vLw+8Burll1/WkCFDNGLECNXW1mrgwIFKSUnR+fPn9ZOf/CToMUPN11mzZmnTpk1qbm5WY2OjXnjhBc2ePTvoPiWprq5OCQkJGjp0qCTpmWeeCXkbhI+yFUcef/xx/eUvf9GuXbv0i1/8QhUVFRo3bpzGjRunz33uc/rkk0+UkpKi//iP/9DUqVPl9/t15syZHk9rdyctLU3Tp09Xbm6uHnnkEU2bNi3ifWZnZwdewN7dC+THjBmjp59+Wnfffbeys7O1efNmvfLKK2H99rVu3To9/vjjmjJlip5++mlNmzYtrPsVzr4BuFewOZSYmKhf/epXWrlypSZOnKjNmzcrJydH119/fUTHWLFihd5++239wz/8g+67774e/8Cno6KiIlVVVemRRx4Jup3f79cPf/hDTZgwQd///vf161//Wl6vV0uXLlVTU5PGjBmje+65R3l5eUH3s3TpUv3mN7/p8QXya9as0fXXX6/s7GyNHz9en/nM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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=plt.figaspect(.5), dpi=68., layout='constrained')\n", "ax_1 = fig.add_subplot(121)\n", "ax_1.set_title(\"Real part of a_j\")\n", "ax_1.imshow(np.real(a_j), vmin=np.min(np.real(a_j)), vmax=np.max(np.real(a_j)))\n", "fig.colorbar(cm.ScalarMappable(norm=colors.Normalize(vmin=np.min(np.real(a_j)), vmax=np.max(np.real(a_j)))), ax=ax_1, orientation=\"horizontal\", shrink=0.75)\n", "ax_1 = fig.add_subplot(122)\n", "ax_1.imshow(np.imag(a_j), vmin=np.min(np.imag(a_j)), vmax=np.max(np.imag(a_j)))\n", "ax_1.set_title(\"Imaginary part of a_j\")\n", "fig.colorbar(cm.ScalarMappable(norm=colors.Normalize(vmin=np.min(np.imag(a_j)), vmax=np.max(np.imag(a_j)))), ax=ax_1, orientation=\"horizontal\", shrink=0.75)" ] }, { "cell_type": "markdown", "id": "a6ff4ba0", "metadata": {}, "source": [ "Calling of the function with `azimuthal = False`:" ] }, { "cell_type": "code", "execution_count": 33, "id": "41caa6dd-02e0-4171-b51f-ee0906b5b871", "metadata": {}, "outputs": [], "source": [ "a_j = selfinteractions.a_j_matrix(big_l, r, k, azimuthal=False)" ] }, { "cell_type": "markdown", "id": "312603e1", "metadata": {}, "source": [ "Plotting of the values:" ] }, { "cell_type": "code", "execution_count": 34, "id": "e5971046-5cfe-4124-b3a7-79804c0f862e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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K3Hf+c53dOTIEQ0fPlxbtmzRzp071dDQoNra2hb1bPjw4Zo9e3bIa7lr1y5t3LhRXq9XXq9Xy5cv15YtW/SP//iPnc5944039PTTT+vcuXPyeDw6dOhQyHEROTRscerya9jeeOMN3XPPPZo5c6ZuvPFGGWO0Z8+eVsWhvr5eCxYs0BtvvKGpU6eqvr5e119/vS5cuBBSPI/H02o7lPvs3bt3WOd1dZz29l1t+fLluv3227V9+3YlJCQoNzc35HMDYKeePXsGb3u93lbbDQ0NHdYhY0yr+mGMCTleQ0ODJOlnP/uZKisrVVJSol69eumf/umfVFFRERx7dZ2766679MMf/lBlZWXy+XwqLS1tN2Zb+Xk8Hr3wwgvatWuX3n77bfXt21f/8R//of/6r/9qN2Yo2qrjnamoqNDf/M3fqKysTDfffLM+++yz4EUAuIvXsMW5uXPnavny5Vq3bp169+6tWbNm6cknnwwWpRMnTqi8vFwXL17UxYsXNWzYMEnSL37xCwUCgZDjPP/885KarmT99re/1Zw5c8K+z759++rs2bPtHp89e7Zef/31YCH81a9+pSFDhgTvvyPV1dUaNmyYEhISVFZWppKSkpDPDUD86qgOjRo1So2NjXrrrbckSWVlZfrwww/DjlFdXa1BgwapV69eOnXqlIqKijocn5CQoBUrVmjhwoWaPn26hg8f3u7Y0tLS4GvCtm/frkGDBmnYsGGqrq5WamqqUlJSVFdXp1/+8pcdxuysvt5+++167rnnFAgE5Pf79fzzz2vevHkd3qcknT17VomJicrIyJAkPf30053OQXTQsF0DHnvsMb377rt677339Otf/1oVFRUaP368xo8fr29+85v685//rJSUFP3zP/+zpk2bptzcXJ07d67dS/RtSUtL08yZM5WTk6OVK1dqxowZYd/nhAkTgm8KaOtNB2PGjNHPf/5z3XnnnZowYYIKCwv1yiuvhPRX4MaNG/XYY48pOztbP//5zzVjxoyQziuU+wZgr47qUI8ePfTiiy9qzZo1ysrKUmFhoTIzM9WvX7+wYqxatUp//OMfdeutt+qBBx5o901TzRUUFOjYsWNauXJlh+Nyc3P105/+VJMmTdJPfvITvfTSS0pISNCDDz6ohoYGjRkzRnfddZemTp3a4f08+OCD+s1vftPumw7Wr1+vfv36acKECZo4caK+/vWv6+/+7u86PY/x48dr6dKlGj9+vPLy8jRw4MBO50jU1mjwmI6uDwNq+od38uRJDRgwINapRIzf79eAAQO0b9++Dv/6BRDfampq1KdPH0nShx9+qFmzZungwYNRr2evvfaaHnvsMf3hD39od8y2bdv0yiuvaOfOnVHNxW0vvfSStm7dqt27d8c6lWsKr2FDt1NeXq65c+fqL//yL2nWgGvcjh079NRTTwVfG/bLX/4y6s3anXfeqf3793f61Om1aPPmzXr22Wd56jQKuMKGa9ry5cvbfD3bjh07On3nKQCgbSdOnNDtt9/eav+ECRNavDkCkUPDBgAAYDlXnhJNGpCiHoP6hT2vwe+NfDJwidMXnPL3QzwbUOfXl19+Ges04saQDK9GDA+/DH/FP5O4leiwxjU4rqmwwbGj6V2uja40bD0G9dNNGx8Ke96Zk+F/zgws0eiwuCTwmyieDd/2/2KdQlwZMTxRv/tNaO+6a64yjI/kgV36eJzVuBpDwxbPvrPka12+Dz7WAwAAwHI0bAAAAJZz3LAVFRUpJydHOTk53fKtywDQFmojgGhw9Bq2s2fPasOGDSorK5MkTZ48WfPnz1ffvn0jmhwAxBNqI4BocXSFraSkRDNmzFBycrKSk5M1ffr0Dr/cFgC6A2ojgGhxdIWtqqpKqampwe3U1FRVVVW1GOPz+eTz+SRJ/jPnu5AiAMSHcGvj8ZONruYHIH45atjS0tJUXV0d3K6urlZaWlqLMQUFBSooKJAk9R47rAspAkB8CLc2Ts/p4Wp+AOKXo6dEc3JytGfPHtXV1amurk579uxRdnZ2pHMDgLhCbQQQLY6usPXt21ePPvqoZs+eLWOM1q9fz4tqAXR71EYA0eL4mw4WL16sxYsXRzIXAIh71EYA0cAH5wIAAFjOle8SbfB7HX0vaNKpJEfx/AP8juYhgpx+J6jTPyF4sx3i0FfG2feCVjb0cRRvcGKNo3mIHL4TFE5xhQ0AAMByNGwAAACWo2EDAACwHA0bAACA5WjYAAAALEfDBgAAYDkaNgAAAMvRsAEAAFiOhg0AAMByNGwAAACWo2EDAACwHA0bAACA5WjYAAAALJcY6wQ64h/gdzQv6VSSq/EQQY0O5zn908NpPCCGBifWOJpX2dDH1XgAIocrbAAAAJajYQMAALAcDRsAAIDlaNgAAAAs57hhq6io0KxZs5Sbm6spU6bo1VdfjWReABB3qIsAosXxu0T79OmjF198UQMHDtSJEyc0ZcoU3X333ZHMDQDiCnURQLQ4btj69+8fvJ2cnCyPxxORhAAgXlEXAURLlz+HzRij5cuXa926dS32+3w++Xw+SVLgXG1XwwBA3GivLkota2PVyYDbqQGIU11u2FatWqUhQ4bokUceabG/oKBABQUFkqSeI2/sahgAiBvt1UWpZW3Myu7hdmoA4lSX3iW6du1aGWO0cePGSOUDAHGNugggGhw3bCUlJdq0aZP27dun/Px85efnq7aWpz4BdF/URQDR4vgp0ZycHAUCvP4CAC6jLgKIFj44FwAAwHJdftOBjfwD/I7mJZ1KcjUeIqjR4Tynf7I4jQfE0ODEGkfzKhv6uBoPQGtcYQMAALAcDRsAAIDlaNgAAAAsR8MGAABgORo2AAAAy9GwAQAAWI6GDQAAwHI0bAAAAJajYQMAALAcDRsAAIDlaNgAAAAsR8MGAABgORo2AAAAyyXGOgGb+Af4Hc3r1e+io3kXzvR0NA8R1OhwXsDjbJ7XOAwIxM7gxBpH80YmJTua94n/vKN5iL0+Hmc1rsY4rKndCFfYAAAALEfDBgAAYDkaNgAAAMvRsAEAAFiuSw3bhQsXNGLECK1fvz5S+QBA3KM2Aoi0LjVsTz31lCZOnBipXADgmkBtBBBpjhu2o0ePqrS0VPfcc0+bx30+n3Jzc5Wbm6vAuVrHCQJAPAmnNladDLicHYB45bhhW7dunTZs2NDu8YKCAhUXF6u4uFjelN5OwwBAXAmnNqale13MDEA8c9SwlZaWyuv1cskfAJqhNgKIFkffdFBaWqpDhw7pjjvu0NGjR1VXV6dRo0Zp6dKlkc4PAOIGtRFAtDhq2FauXKmVK1dKkrZt26ZDhw5RkAB0e9RGANHS5e8SffjhhyOQBgBcW6iNACKJD84FAACwXJevsEG6cKano3m9+l10NR4iyGuczQt43I0HxNAn/vOO5o1MSnY1HiKnxjircX08zmqc03jxiCtsAAAAlqNhAwAAsBwNGwAAgOVo2AAAACxHwwYAAGA5GjYAAADL0bABAABYjoYNAADAcjRsAAAAlqNhAwAAsBwNGwAAgOVo2AAAACxHwwYAAGC5xFgn0J1dONPT0bxe/S66Gg8R5DXO5gU87sYDYugT/3lH80YmJbsaD5FTY5zVuD4eZzXOabxY4gobAACA5WjYAAAALEfDBgAAYDnHr2E7cOCA/v7v/151dXW67rrr9Prrr0cyLwCIS9RGANHgqGHz+/1asWKFtm/frtTU1EjnBABxidoIIFocPSVaUlKi5ORkLVu2THl5edq2bVuE0wKA+ENtBBAtjq6wHT16VGVlZdq3b5+uv/565ebmatq0aRo5cmRwjM/nk8/nkyQFztVGJlsAsFi4tbHqZCBWqQKIM46usKWmpio7O1vp6elKTk5Wfn6+9u7d22JMQUGBiouLVVxcLG9K74gkCwA2C7c2pqV7Y5QpgHjjqGHLycnRZ599posXL6qxsVFlZWUt/oIEgO6I2gggWhw9JZqSkqLHH39cc+bMUUNDg+69917deuutkc4NAOIKtRFAtDj+WI+FCxdq4cKFkcwFAOIetRFANPDBuQAAAJajYQMAALCc46dEETsXzvR0NK9Xv4uuxkMEeY2zeQGPu/GAGPrEf97RvJFJya7GQ+TUGGc1ro/HWY1zGi8SuMIGAABgORo2AAAAy9GwAQAAWI6GDQAAwHI0bAAAAJajYQMAALAcDRsAAIDlaNgAAAAsR8MGAABgORo2AAAAy9GwAQAAWI6GDQAAwHI0bAAAAJZLjHUCcM+FMz0dzevV76JrsRBhXuNsXsAT2TwAi33iP+9o3sikZNdiIbJqjLMa18fjsKZGAFfYAAAALEfDBgAAYDkaNgAAAMs5btieeOIJZWVlafLkyfqXf/mXSOYEAHGL2gggGhy96eDUqVP61a9+pY8++kiSNHr0aC1btkypqakRTQ4A4gm1EUC0OGrYUlJSNHjwYF282PTuwR49eqhnT94VCKB7ozYCiBZHDdt1112nuXPnatSoUTLGaPXq1br++utbjPH5fPL5fJKkwLnarmcKAJYLtzZWnQzEIk0AccjRa9jeeustvfPOOyovL1d5ebl27dql0tLSFmMKCgpUXFys4uJieVN6RyRZALBZuLUxLd0bo0wBxBtHV9gCgYD69eunpKQkSVK/fv1UVVUV0cQAIN5QGwFEi6MrbHPmzFH//v01bdo0TZ06Vf369dO8efMinRsAxBVqI4BocXSFLSEhQVu3bo10LgAQ16iNAKKFD84FAACwnCtf/t7ruNHNvoaw531awHfT28DJF7knnUxyFMuf7nc0DxHm9EvjEZbaxh4quzgs7HmTe1ZEIRuEy8kXuVc29HEUa3BijaN5iCynXxofCVxhAwAAsBwNGwAAgOVo2AAAACxHwwYAAGA5GjYAAADL0bABAABYjoYNAADAcjRsAAAAlqNhAwAAsBwNGwAAgOVo2AAAACxHwwYAAGA5GjYAAADLJboR5MIgjz4tCD9U+fxCR/FufG2Zo3mIHH+639G8PgPOO5pXcyrZ0TwglnonfKXJPSvCnrdi+HRH8Z4+ssfRPETO4MQaZ/O8XkfzKgMBR/NgH66wAQAAWI6GDQAAwHI0bAAAAJajYQMAALBcpw3bggULlJGRoaVLlwb3FRUVKScnRzk5OSoqKopqggBgI2ojADd1+tbNLVu26PDhwyosbHrH5tmzZ7VhwwaVlZVJkiZPnqz58+erb9++0c0UACxCbQTgpk6vsA0dOrTFdklJiWbMmKHk5GQlJydr+vTpKi0tjVqCAGAjaiMAN4X94WhVVVVKTU0NbqempqqqqqrVOJ/PJ5/PJ0kKnKvtQooAYD8ntbHqJJ+RBSA0YTdsaWlpqq6uDm5XV1crLS2t1biCggIVFBRIknqOvLELKQKA/ZzUxqzsHq7lByC+hf0u0ZycHO3Zs0d1dXWqq6vTnj17lJ2dHY3cACBuUBsBRFOnV9hWr16t4uJiVVZWas6cOSosLNSjjz6q2bNnyxij9evX86JaAN0OtRGAmzpt2DZv3txq34gRI7R48eKoJAQA8YDaCMBNfHAuAACA5cJ+04GbbnxtmaN55fMLXY2HyKk5lexoXp8B512NB8TS00f2OJq3Yvh0V+MhcioDzt5RPNjrdTUeoocrbAAAAJajYQMAALAcDRsAAIDlaNgAAAAsR8MGAABgORo2AAAAy9GwAQAAWI6GDQAAwHI0bAAAAJajYQMAALAcDRsAAIDlaNgAAAAsR8MGAABgucRYJxANN762zNG88vmFrsZD5NScSnY0r8+A867GA2Lp6SN7HM1bMXy6q/EQOZWBgKN5g71eV+Ohc1xhAwAAsBwNGwAAgOVo2AAAACxHwwYAAGC5Thu2BQsWKCMjQ0uXLpUkVVRUaNasWcrNzdWUKVP06quvRj1JALANtRGAmzp9l+iWLVt0+PBhFRY2vYOyT58+evHFFzVw4ECdOHFCU6ZM0d133x31RAHAJtRGAG7q9Arb0KFDW2z3799fAwcOlCQlJyfL4/FEJzMAsBi1EYCbHH8OmzFGy5cv17p169o87vP55PP5JEmBc7VOwwBAXAmnNlad5DOrAITGccO2atUqDRkyRI888kibxwsKClRQUCBJ6jnyRqdhACCuhFMbs7J7uJkagDjm6F2ia9eulTFGGzdujHQ+ABC3qI0AoqXThm316tVas2aN3nrrLc2ZM0clJSXatGmT9u3bp/z8fOXn56u2lqc8AXQv1EYAbur0KdHNmze32hfgu8IAdHPURgBu4oNzAQAALOf4TQfXohtfW+Zo3shl7zua90lhlqN5iJyaU8mO5nmrkxzNC/T3O5oHxNLTR/Y4mvfEl3c6m3fDTkfzEDmVDq8WH6gf5GjemOuOO5rXnXCFDQAAwHI0bAAAAJajYQMAALAcDRsAAIDlaNgAAAAsR8MGAABgORo2AAAAy9GwAQAAWI6GDQAAwHI0bAAAAJajYQMAALAcDRsAAIDlaNgAAAAslxjrBK4FnxRmOZo3ctn7rsZD5AT6+x3N81YnuRoPiKUnbtjpbN6Xd7oaD5Ez5rrjjuYdqB/karx4xBU2AAAAy9GwAQAAWI6GDQAAwHI0bAAAAJbrtGFbsGCBMjIytHTp0hb7L1y4oBEjRmj9+vVRSw4AbEVtBOCmThu2LVu2qKioqNX+p556ShMnToxKUgBgO2ojADd12rANHTq01b6jR4+qtLRU99xzT1SSAgDbURsBuMnRa9jWrVunDRs2dDjG5/MpNzdXubm5CpyrdZQcAMSTcGtj1cmAS5kBiHdhN2ylpaXyer2dXvIvKChQcXGxiouL5U3p7ThBAIgHTmpjWrrXpewAxLuwv+mgtLRUhw4d0h133KGjR4+qrq5Oo0aNavXCWwDoTqiNAKKp04Zt9erVKi4uVmVlpebMmaPCwkKtXLlSkrRt2zYdOnSIggSg26E2AnBTpw3b5s2b2z328MMPRzIXAIgb1EYAbuKDcwEAACwX9mvYEDmfFGY5mjdy2fuuxkPkBPr7Hc3zVie5Gg+IpSdu2Ols3pd3uhoPkTPmuuOO5h2oH+RqvFjiChsAAIDlaNgAAAAsR8MGAABgORo2AAAAy9GwAQAAWI6GDQAAwHI0bAAAAJajYQMAALAcDRsAAIDlaNgAAAAsR8MGAABgORo2AAAAy9GwAQAAWC4x1gkgfJ8UZjmaN3LZ+67GQ+QE+vsdzfNWJ7kaD4ilJ27Y6Wzel3e6Gg+RM+a6447mHagf5Gq8SOAKGwAAgOVo2AAAACxHwwYAAGA5GjYAAADLddqwLViwQBkZGVq6dGlw34EDB/TNb35Tt912m+bNmxfVBAHARtRGAG7q9F2iW7Zs0eHDh1VYWChJ8vv9WrFihbZv367U1NSoJwgANqI2AnBTp1fYhg4d2mK7pKREycnJWrZsmfLy8rRt27Zo5QYA1qI2AnBT2J/DdvToUZWVlWnfvn26/vrrlZubq2nTpmnkyJEtxvl8Pvl8PklS4FxtZLIFAEs5qY1VJwOxSBVAHAr7TQepqanKzs5Wenq6kpOTlZ+fr71797YaV1BQoOLiYhUXF8ub0jsiyQKArZzUxrR0bwwyBRCPwm7YcnJy9Nlnn+nixYtqbGxUWVlZq78gAaC7oTYCiKZOnxJdvXq1iouLVVlZqTlz5qiwsFCPP/645syZo4aGBt1777269dZb3cgVAKxBbQTgpk4bts2bN7faN2LECC1cuDAqCQFAPKA2AnATH5wLAABgubDfJYr49UlhlqN5I5e971osRFagv9/RPG91UoQzAez1xA07nc378k7XYiGyxlx33NG8A/WDIpxJ6LjCBgAAYDkaNgAAAMvRsAEAAFiOhg0AAMByNGwAAACWo2EDAACwHA0bAACA5WjYAAAALEfDBgAAYDkaNgAAAMvRsAEAAFiOhg0AAMByNGwAAACW8xhjTLSD3HDDDfra177W5rHjx49r0KBB0U4hJOTSNnKxNw/Jrlz279+v06dPxzqNuEFtDB+52JuHRC7tiUhtNDE2c+bMWKcQRC5tI5fWbMnDGHK5Vtm0luTSNltysSUPY8ilPZHIhadEAQAALBfzhq2goCDWKQSRS9vIpTVb8pDI5Vpl01qSS9tsycWWPCRyaU8kcnHlNWwAAABwLuZX2AAAANAxGjYAAADL0bABAABYzrWGraioSDk5OcrJyVFRUVHYxyOloqJCs2bNUm5urqZMmaJXX3211ZgePXooPz9f+fn5+tGPfhS1XEKJ5da6lJeXB/PIz89XUlKS9u/fH1auXbFgwQJlZGRo6dKlwX2hnHs01ufqXEJ5zEjRWZ+21iWUOG6sSyiPmVDz7c6ojW2jNjahNoaWS6hxIr0urtbFLn8wSAjOnDljRo8ebWpra01tba0ZPXq0OXPmTMjHI+n06dPm+PHjxhhjjh8/boYPH95qzJAhQ6ISuy0dxXJzXZo7ePCgGTduXKv90VyXiooKs3v3brNkyRJjTGjnHq31uTqXUB4zxkRnfa7OJZQ4bq1Lc+09ZkLJtzujNraP2tiE2hhaLqHEica6uFkXXbnCVlJSohkzZig5OVnJycmaPn26SktLQz4eSf3799fAgQMlScnJyfJ4PK3GnD59Wvn5+Zo/f7727t0blTxCieXmujTn8/nafAtyNNdl6NChLbZDOfdorc/VuYTymJGisz5X5xJKHLfWpbn2HjOh5NudURvbR21sQm0MLZdQ4kRjXdysi4mOMgxTVVWVUlNTg9upqamqqqoK+Xg0GGO0fPlyrVu3rtWxI0eOKD09XR988IHuv/9+ffTRR+0+ELuqo1ixWJdAIKCXXnpJ//u//xtWrpEWyrm7vT4dPWYk99anszhur0tHj5lQ8u3OqI3toza2jdrYPptqYzTqoitX2NLS0lRdXR3crq6uVlpaWsjHo2HVqlUaMmSIHnnkkVbH0tPTJUmTJk1SSkqKjh07FrU8OooVi3XZtWuXbr311uBfTaHmGmmhnLvb69PRY0Zyb306i+P2unT0mAkl3+6M2tg+amPbqI3ts6k2RqMuutKw5eTkaM+ePaqrq1NdXZ327Nmj7OzskI9H2tq1a2WM0caNG1sdq6mpUSAQkCR98cUXOnnyZLsL3lWdxXJ7XSRp27ZtbV7CdXNdpNDO3c316egxI7m3PqHEcftx095jJtR8uzNqY9uoje2jNrbNttoYlboY9qveHHrhhRdMTk6Oyc7ONi+88IIxxpi8vLwOj0fDe++9ZxISEkxubq7Jy8szeXl5pqamJpjLu+++azIzM83MmTNNdna2ef3116OWS3uxYrEuxhhTXV1thg4daurr64P73FqXH/zgB2bSpEnmL/7iL8zs2bNNeXl5u+ce7fW5Opf2HjPNc4nW+lydS0dx3F6X8vLyNh8zzXNx899TvKI2tkZtvILaGFousaqNbtZFvpoKAADAcnxwLgAAgOVo2AAAACxHwwYAAGA5GjYAAADL0bABAABYjoYNAADAcjRsAAAAlqNhAwAAsBwNGwAAgOVo2AAAACxHwwYAAGA5GjYAAADL0bABAABYjoYNAADAcjRsAAAAlkuMZfCBniHyyy95Lu/xBG97PJ4rAzu77Qn+XxtjWt/35U1z9b42xjTfMO0duxTftHvs6rht3//l7baPq+Xxdo5dZq4+HsqYDrZDidni3CTJY9RKSDFN+2OCy2RaHbvyn9q02PY0y6Plw6HZuOBDqdnYVmPMlfu8lIPnqnnNx3l01fgW803w5+X4V8Zfmd9yfxu3PVfGN5/naR7jqryb59oqH4/kkeeq8Z6W63lpT+pfzNOOHTuEyGqqi/VqWY/CqI2t6l8YtbF5LXOzNnZY+zqpjSHWzcs6rXuhjAkzZlRqYxvHQ6mNLZbOQW1sWXPCqI2e9urY1fPbq41XjQmjNl6efzleuLXxcl1Ui/3u18aYNmx+1Wty4mzJkyBPgkfyJEgJHsnjkSchoemREfzpkafZ8eCxZseb9l81ptkx4/E0XVO8tN8kJLTcbnbceC49+j0emeC+y2Ml470y5vJ+c/m/csKV21cfMx7JJFyal9D+mLZ/tjWv9c8W+9Ry3+W57Y5vY5906XZCW+NM23OaH9PluKbZsSvbptltj+eqcTLyJFw+1nKMx3PpH5LnyvGmpbxyLMFjlJDQGLzt8RglyLTcbvaz6dil2x6jxIRGJejKdkKzcU23G1ttey9tJyYE5NWVMU37L92+/NPTdP9eT2PT3EvjkzyBK2PU2HKcmmI0HW+8dNxc2t+03TS/+T5z5b6Ct82l27o0VvJ6pCR55PV4lCCPvLr00+NRghIu3W66lX//6a4XAbTiV72yEmYFa2JYtbF5Tbyq/nVaG71X9reqlZ3Vxss17dK4cGtjyxobXm28Elvt1rN2a2ObNS302tjxvhBq41X1L/TaeHVNDL02JiRcqXnN62QotdGb0NhOHey8NiYlBC7dbgzWn3BqY7CmXapx4dTGJE9D075L48KpjUky8np0qRYqprWRp0QBAAAsR8MGAABgORo2AAAAy9GwAQAAWI6GDQAAwHI0bAAAAJajYQMAALAcDRsAAIDlaNgAAAAsR8MGAABguZh+NVXePdN1+nSl4/nHjx/XoEGDIphRB4xafhlcQ8fDL+fmubTt6XC0u1xdtzDFOrfGSz8Dl35+1exYbHMLfrdPuyPczi81NdW1WN1JU138c6zTCJ3RlX8w7WjrsWljbeyKWNeuaGu89D/7zrPz2uhEV84zWrXRY4xp41to40Nubq6Ki4tjnUabyM0ZcnPO9vzQfXWHx2Z3OEeJ84wlnhIFAACwXFw3bAUFBbFOoV3k5gy5OWd7fui+usNjszuco8R5xlJcPyUKAADQHcT1FTYAAIDugIYNAADAcnHZsPn9fs2YMUMDBgzQ+vXrg/s///xz9e3bV/n5+crPz9dzzz1nTW6S9LOf/UzTpk3T1KlTtXv3btdza86GtbpaUVGRcnJylJOTo6Kiolin00KPHj2Ca/WjH/0o1ulowYIFysjI0NKlS4P7bF4/dE/79+/X1KlTlZ+fr8mTJ+t//ud/gsdsqodd8Yc//EG5ubnKzc3VtGnT9N577wWPXSvnKMXP77ZIsLaWmjjU2NhovvjiC+Pz+cyjjz4a3F9eXm6mT58ew8zaz+3jjz822dnZpqGhwRw7dsyMHj3aNDQ0xCxPG9aquTNnzpjRo0eb2tpaU1tba0aPHm3OnDkT67SChgwZEusUWqioqDC7d+82S5YsMcbYv37onurr601jY6MxxphDhw6ZcePGGWPsq4ddUVlZac6ePWuMMebDDz80WVlZxphr6xyNiZ/fbV1lcy2NyytsHo9HN9xwQ5vHDh48qNzcXC1atEiff/65u4mp/dx2796tu+++W16vV4MGDdKQIUN0+PBh1/NrLtZr1VxJSYlmzJih5ORkJScna/r06SotLY1pTs2dPn1a+fn5mj9/vvbu3RvrdDR06NAW27avH7qnpKQkeTxNH4175swZZWVlSbKzHjqVkZGhlJQUSVKvXr2UmNj0efTX0jlK8fW7rStsrqUx/aaDSMvIyFB5eblSUlL02muv6cEHH7Tmg++qqqpafPpxamqqqqqqYpaPbWtl2/pc7ciRI0pPT9cHH3yg+++/Xx999FHwF5ENbF8/dF9/+tOf9P3vf1+ffvqpnn32WUnX5uO1vr5e3/3ud/XEE09IujbPsS3X2nnafD7WNmyZmZmt9vXv37/D58d79OihHj16SJLmz5+v7373u9bklpaWptOnTwe3q6urlZaWFo30gjrK0621ClVaWpqqq6uD226sTzjS09MlSZMmTVJKSoqOHTumjIyMGGd1he3rh2tXZ/UwMzNTe/bs0Z///GdNmTJF8+bNi0k97IrOzrGhoUGLFy/WokWLNG/ePEmxqfldFS+/26LJ6loa6+dku+Lq59KbP8/8wQcfmMzMzFikZYxpndsnn3xipk6dahoaGszx48fNmDFjYvo8v01rZUxTPmPHjjXnz58358+fN2PGjLHmdQPnzp0L/reqqKgww4cPt+I1Gle/hs3W9UP3deHCheDtmpoac9NNN5mLFy9aVw+7IhAImMWLF5tNmza12H8tnWNztv9u6yqba6m1V9g6s3jxYu3bt091dXUqKSnRzp079eabb+rHP/6xevfuLUkqLCy0Jrebb75ZixYt0syZM2WM0TPPPCOv1xuT/CRZs1aX9e3bV48++qhmz54tY4zWr1+vvn37xjSny/bv36/vfe976tOnj+rr6/Xcc8/F9L+dJK1evVrFxcWqrKzUnDlzVFhYaO36ofv63e9+p82bN8vr9aq+vl4/+clP1KNHD+vqYVe8/PLL2rFjhyorK7Vz50717t3bypofCfHwu62rbP5dxDcdAAAAWC4u3yUKAADQndCwAQAAWI6GDQAAwHI0bAAAAJajYQMAALAcDRsAAIDlaNgAAAAs9/8BJ2jfs71kSDUAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=plt.figaspect(.5), dpi=68., layout='constrained')\n", "ax_1 = fig.add_subplot(121)\n", "ax_1.set_title(\"Real part of a_j\")\n", "ax_1.imshow(np.real(a_j), vmin=np.min(np.real(a_j)), vmax=np.max(np.real(a_j)))\n", "fig.colorbar(cm.ScalarMappable(norm=colors.Normalize(vmin=np.min(np.real(a_j)), vmax=np.max(np.real(a_j)))), ax=ax_1, orientation=\"horizontal\", shrink=0.75)\n", "ax_1 = fig.add_subplot(122)\n", "ax_1.imshow(np.imag(a_j), vmin=np.min(np.imag(a_j)), vmax=np.max(np.imag(a_j)))\n", "ax_1.set_title(\"Imaginary part of a_j\")\n", "fig.colorbar(cm.ScalarMappable(norm=colors.Normalize(vmin=np.min(np.imag(a_j)), vmax=np.max(np.imag(a_j)))), ax=ax_1, orientation=\"horizontal\", shrink=0.75)" ] }, { "cell_type": "markdown", "id": "38f6dfd0-92a8-45c1-bade-e6ba89483de7", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "## `a_0j_linear_operator`" ] }, { "cell_type": "markdown", "id": "728d207e-6cef-4af8-b41b-7fa2f6d44338", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Docstring" ] }, { "cell_type": "code", "execution_count": 35, "id": "b5eb0142-9d7d-4ae3-8ba3-0ece2abca37f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " Returns a scipy linear operator equivalent to the given by\n", " a_0j_matrix.\n", "\n", " Parameters\n", " ----------\n", " big_l : int\n", " >= 0, max degree.\n", " r : float\n", " > 0, radius.\n", " k : float\n", " wave number.\n", " azimuthal : bool\n", " Default True\n", "\n", " Returns\n", " -------\n", " linear_operator : sparse.linalg.LinearOperator\n", " a scipy linear operator.\n", "\n", " See Also\n", " --------\n", " a_0j_matrix\n", "\n", " \n" ] } ], "source": [ "print(selfinteractions.a_0j_linear_operator.__doc__)" ] }, { "cell_type": "markdown", "id": "f9883998-59bc-43de-bc4a-45392c8f3793", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Examples" ] }, { "cell_type": "markdown", "id": "ac6e11e9-7bfe-482a-87c1-87840581b9ee", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "#### Simpler example" ] }, { "cell_type": "markdown", "id": "53d10aca", "metadata": {}, "source": [ "Definition of parameters:" ] }, { "cell_type": "code", "execution_count": 36, "id": "86fe76cb-4ead-4166-819d-bbb33a3b7baa", "metadata": {}, "outputs": [], "source": [ "r = 2.5\n", "big_l = 2\n", "k = 7." ] }, { "cell_type": "markdown", "id": "1e53be94", "metadata": {}, "source": [ "Calling of the function with `azimuthal = True`:" ] }, { "cell_type": "code", "execution_count": 37, "id": "cb52571e-700e-4596-9eb4-9e53bd10ee33", "metadata": {}, "outputs": [], "source": [ "a_0j = selfinteractions.a_0j_linear_operator(big_l, r, k) # azimuthal = True" ] }, { "cell_type": "markdown", "id": "9cedc3f1", "metadata": {}, "source": [ "Calling of the function with `azimuthal = False`:" ] }, { "cell_type": "code", "execution_count": 38, "id": "43ef8434-2d89-41d5-805d-cb6d964271b0", "metadata": {}, "outputs": [], "source": [ "a_0j = selfinteractions.a_0j_matrix(big_l, r, k, azimuthal = False)" ] }, { "cell_type": "markdown", "id": "a5368475-9f96-4456-932c-eb7a7bbb1acb", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "#### Comparing with the matrix version" ] }, { "cell_type": "markdown", "id": "02097680", "metadata": {}, "source": [ "Definition of parameters:" ] }, { "cell_type": "code", "execution_count": 39, "id": "94f99b4c-5f85-469c-9931-ce2722c334c3", "metadata": {}, "outputs": [], "source": [ "big_l = 10\n", "r = 0.3\n", "k = 1.3\n", "tole = 10.**-10" ] }, { "cell_type": "markdown", "id": "afd3dbb8", "metadata": {}, "source": [ "Initialization of a random vector as right hand side:" ] }, { "cell_type": "code", "execution_count": 40, "id": "4922b5de-212d-4907-b3cb-c079d5972bbf", "metadata": {}, "outputs": [], "source": [ "num = big_l + 1\n", "b = np.random.random((2 * num)) + 1j * np.random.random((2 * num))" ] }, { "cell_type": "markdown", "id": "4a68044b", "metadata": {}, "source": [ "Calling of the functions to be compared" ] }, { "cell_type": "code", "execution_count": 41, "id": "afb66816-9cc1-4ec1-b5f9-de871199ad11", "metadata": {}, "outputs": [], "source": [ "linear_operator = selfinteractions.a_0j_linear_operator(big_l, r, k) # azimuthal = True\n", "matrix = selfinteractions.a_0j_matrix(big_l, r, k) # azimuthal = True" ] }, { "cell_type": "markdown", "id": "4f266511", "metadata": {}, "source": [ "Solving of the iterative system:" ] }, { "cell_type": "code", "execution_count": 42, "id": "f957674a-c03a-4159-abb4-2607871c1b07", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n" ] } ], "source": [ "norms = []\n", " \n", "def callback_function(pr_norm):\n", " norms.append(pr_norm)\n", " return 0.\n", "\n", "solution, info = sparse.linalg.gmres(\n", " linear_operator, b,\n", " rtol=tole,\n", " restart=(2 * num)**3,\n", " callback=callback_function,\n", " callback_type='pr_norm')\n", "print(info)" ] }, { "cell_type": "markdown", "id": "8d9c4ca0", "metadata": {}, "source": [ "Solving of the direct system:" ] }, { "cell_type": "code", "execution_count": 43, "id": "d0949395-ff13-49a8-81f0-49a4f5773bba", "metadata": {}, "outputs": [], "source": [ "solution2 = np.linalg.solve(matrix, b)" ] }, { "cell_type": "markdown", "id": "f27b66dd", "metadata": {}, "source": [ "Difference between solutions:" ] }, { "cell_type": "code", "execution_count": 44, "id": "a200c0a5-e5e9-41e8-bb73-e0c407a7feda", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.9089281166897614e-10\n" ] } ], "source": [ "print(np.linalg.norm(solution2 - solution))" ] }, { "cell_type": "markdown", "id": "81e129b2-be9d-4679-a0bc-37be81293f44", "metadata": {}, "source": [ "Which means that solving the numpy array from `a_0j_matrix` and the linear operator from `a_0j_linear_operator` can be used to solve the same linear system." ] }, { "cell_type": "markdown", "id": "fce0a18a-d364-4f3a-af31-3baea4800491", "metadata": {}, "source": [ "Let us see what happens with `azimuthal=False`." ] }, { "cell_type": "markdown", "id": "d54feeca", "metadata": {}, "source": [ "Definition of parameters:" ] }, { "cell_type": "code", "execution_count": 45, "id": "3175dc25-caa1-48c3-a800-56a80aadb4b1", "metadata": {}, "outputs": [], "source": [ "big_l = 10\n", "r = 0.3\n", "k = 1.3\n", "tole = 10.**-5" ] }, { "cell_type": "markdown", "id": "f683ec33", "metadata": {}, "source": [ "Initialization of a random vector as right hand side:" ] }, { "cell_type": "code", "execution_count": 46, "id": "6c3e67fa-1426-4bf1-8486-49b7056acf16", "metadata": {}, "outputs": [], "source": [ "num = (big_l + 1)**2\n", "b = np.random.random((2 * num)) + 1j * np.random.random((2 * num))" ] }, { "cell_type": "markdown", "id": "9d310f96", "metadata": {}, "source": [ "Calling of the functions to be compared" ] }, { "cell_type": "code", "execution_count": 47, "id": "cb09e660-55ec-4052-a33c-aca4b959fce9", "metadata": {}, "outputs": [], "source": [ "linear_operator = selfinteractions.a_0j_linear_operator(big_l, r, k, False)\n", "matrix = selfinteractions.a_0j_matrix(big_l, r, k, False)" ] }, { "cell_type": "markdown", "id": "072e839c", "metadata": {}, "source": [ "Solving of the iterative system:" ] }, { "cell_type": "code", "execution_count": 48, "id": "a3e2939d-61b9-4db1-b7de-e95727657336", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n" ] } ], "source": [ "norms = []\n", " \n", "def callback_function(pr_norm):\n", " norms.append(pr_norm)\n", " return 0.\n", "\n", "solution, info = sparse.linalg.gmres(\n", " linear_operator, b,\n", " rtol=tole,\n", " restart=(2 * num)**3,\n", " callback=callback_function,\n", " callback_type='pr_norm')\n", "print(info)" ] }, { "cell_type": "markdown", "id": "64f13dda", "metadata": {}, "source": [ "Solving of the direct system:" ] }, { "cell_type": "code", "execution_count": 49, "id": "041dea07-cbca-4868-aba1-4b9894eb2d97", "metadata": {}, "outputs": [], "source": [ "solution2 = np.linalg.solve(matrix, b)" ] }, { "cell_type": "markdown", "id": "60c8fd2f", "metadata": {}, "source": [ "Difference between solutions:" ] }, { "cell_type": "code", "execution_count": 50, "id": "e4b9ad7f-4d5e-476f-a034-8dc88d8a6867", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "9.780390677489698e-12\n" ] } ], "source": [ "print(np.linalg.norm(solution2 - solution))" ] }, { "cell_type": "markdown", "id": "476cc369-1177-4ab7-9ccd-a6c4db1f8553", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "#### Comparing the azimuthal version against the no azimuthal" ] }, { "cell_type": "markdown", "id": "b844251f-5306-4a8e-8cb8-e141d55c8b5f", "metadata": {}, "source": [ "For a right hand with azimuthal symmetry when extended by 0 to explicitly compute the result without considering the symmetry, the result should be the same with the azimuthal and the not azimuth versions." ] }, { "cell_type": "markdown", "id": "bdcf0c0d", "metadata": {}, "source": [ "Definition of parameters:" ] }, { "cell_type": "code", "execution_count": 51, "id": "7d867590-2dce-4492-a8a8-4f2c665a7fa5", "metadata": {}, "outputs": [], "source": [ "big_l = 10\n", "r = 1.3\n", "k = 2\n", "tole = 10.**-7" ] }, { "cell_type": "markdown", "id": "2c52259d", "metadata": {}, "source": [ "Initialization of a random vector as right hand side, and its extension by zero:" ] }, { "cell_type": "code", "execution_count": 52, "id": "fafd2c29-1d5b-4f51-a0f0-cbb8f405462a", "metadata": {}, "outputs": [], "source": [ "import biosspheres.miscella.extensions as righthandsextensions\n", "num = big_l + 1\n", "b = np.random.random((2 * num)) + 1j * np.random.random((2 * num))\n", "b_2_1 = righthandsextensions.azimuthal_trace_to_general_with_zeros(\n", " big_l, b[0:num])\n", "b_2_2 = righthandsextensions.azimuthal_trace_to_general_with_zeros(\n", " big_l, b[num:2 * num])\n", "b2 = np.concatenate((b_2_1, b_2_2))" ] }, { "cell_type": "markdown", "id": "a196874c", "metadata": {}, "source": [ "Calling of the function with `azimuthal=False`:" ] }, { "cell_type": "code", "execution_count": 53, "id": "5f7b93d9-1a9c-4324-ad69-66c11947eb43", "metadata": {}, "outputs": [], "source": [ "linear_operator = selfinteractions.a_0j_linear_operator(big_l, r, k, False)" ] }, { "cell_type": "markdown", "id": "4de8fac5", "metadata": {}, "source": [ "Solving of the iterative system:" ] }, { "cell_type": "code", "execution_count": 54, "id": "85ac05a7-9d93-4094-88cf-8b55c29ef513", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n" ] } ], "source": [ "num = (big_l + 1)**2\n", "\n", "norms = []\n", " \n", "def callback_function(pr_norm):\n", " norms.append(pr_norm)\n", " return 0.\n", "\n", "solution, info = sparse.linalg.gmres(\n", " linear_operator, b2,\n", " rtol=tole,\n", " restart=(2 * num)**2,\n", " callback=callback_function,\n", " callback_type='pr_norm')\n", "print(info)" ] }, { "cell_type": "markdown", "id": "9f38d1a2", "metadata": {}, "source": [ "Calling of the function with `azimuthal=True`:" ] }, { "cell_type": "code", "execution_count": 55, "id": "c3033d19-4f34-4834-9625-2b72412a4537", "metadata": {}, "outputs": [], "source": [ "linear_operator = selfinteractions.a_0j_linear_operator(big_l, r, k) # azimuthal = True" ] }, { "cell_type": "markdown", "id": "ffadf7e5", "metadata": {}, "source": [ "Solving of the iterative system:" ] }, { "cell_type": "code", "execution_count": 56, "id": "d743fb4a-fa42-4145-98b7-816863aa8572", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n" ] } ], "source": [ "num = big_l + 1\n", "\n", "norms = []\n", " \n", "def callback_function(pr_norm):\n", " norms.append(pr_norm)\n", " return 0.\n", "\n", "solution2, info = sparse.linalg.gmres(\n", " linear_operator, b,\n", " rtol=tole,\n", " restart=(2 * num)**2,\n", " callback=callback_function,\n", " callback_type='pr_norm',\n", ")\n", "print(info)" ] }, { "cell_type": "markdown", "id": "21af9dbe", "metadata": {}, "source": [ "Comparison of the solutions:" ] }, { "cell_type": "code", "execution_count": 57, "id": "edcf3798-2ff3-4343-ad29-51ffb9db4060", "metadata": {}, "outputs": [], "source": [ "solution2_1 = \\\n", " righthandsextensions.azimuthal_trace_to_general_with_zeros(\n", " big_l, solution2[0:num])\n", "solution2_2 = \\\n", " righthandsextensions.azimuthal_trace_to_general_with_zeros(\n", " big_l, solution2[num:2 * num])\n", "solution2 = np.concatenate((solution2_1, solution2_2))" ] }, { "cell_type": "code", "execution_count": 58, "id": "e454d8b0-fa88-4065-9e42-1dbadee576e2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.1811817277164032e-10\n" ] } ], "source": [ "print(np.linalg.norm(solution2 - solution))" ] }, { "cell_type": "markdown", "id": "f924affa-8d97-4862-8e39-a25fe4c46b2c", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "## `a_j_linear_operator`" ] }, { "cell_type": "markdown", "id": "ef350f4d-5ea5-43fb-b7f2-0c97885b2295", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Docstring" ] }, { "cell_type": "code", "execution_count": 59, "id": "2ba06b69-45d8-4f79-b2df-0ffda47130e9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " Returns a scipy linear operator equivalent to the given by\n", " a_j_matrix.\n", "\n", " Parameters\n", " ----------\n", " big_l : int\n", " >= 0, max degree.\n", " r : float\n", " > 0, radius.\n", " k : float\n", " wave number.\n", " azimuthal : bool\n", " Default True.\n", "\n", " Returns\n", " -------\n", " linear_operator : sparse.linalg.LinearOperator\n", " a scipy linear operator.\n", "\n", " See Also\n", " --------\n", " a_j_matrix\n", "\n", " \n" ] } ], "source": [ "print(selfinteractions.a_j_linear_operator.__doc__)" ] }, { "cell_type": "markdown", "id": "cb7659fa-c797-41e8-9548-0cfee59f85f1", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Examples" ] }, { "cell_type": "markdown", "id": "cd66a185-2715-4421-b20c-6f4911da89db", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "#### Simple example" ] }, { "cell_type": "markdown", "id": "1c6a6536", "metadata": {}, "source": [ "Definition of parameters:" ] }, { "cell_type": "code", "execution_count": 60, "id": "4b82db0a-2d0b-4a37-bbd8-94f2dddecc11", "metadata": {}, "outputs": [], "source": [ "r = 2.5\n", "big_l = 2\n", "k = 7." ] }, { "cell_type": "markdown", "id": "42f53579", "metadata": {}, "source": [ "Calling of the function with `azimuthal=True`:" ] }, { "cell_type": "code", "execution_count": 61, "id": "5a8e71d4-fcdc-4016-a7f5-322256a96e75", "metadata": {}, "outputs": [], "source": [ "a_0j = selfinteractions.a_0j_linear_operator(big_l, r, k) # azimuthal = True" ] }, { "cell_type": "markdown", "id": "dbf23342", "metadata": {}, "source": [ "Calling of the function with `azimuthal=False`:" ] }, { "cell_type": "code", "execution_count": 62, "id": "2ed032dc-1a74-41df-8d5d-a8553cd53ce8", "metadata": {}, "outputs": [], "source": [ "a_0j = selfinteractions.a_0j_matrix(big_l, r, k, azimuthal = False)" ] }, { "cell_type": "markdown", "id": "5d60e4fa-7ad8-4593-97a2-c24f73cf787c", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "#### Comparing with the matrix version" ] }, { "cell_type": "markdown", "id": "9b8c312b", "metadata": {}, "source": [ "Definition of parameters:" ] }, { "cell_type": "code", "execution_count": 63, "id": "c66275f1-354d-4ba3-b9a8-b9eff5cdd0ca", "metadata": {}, "outputs": [], "source": [ "big_l = 10\n", "r = 0.3\n", "k = 1.3\n", "tole = 10.**-10" ] }, { "cell_type": "markdown", "id": "98531456", "metadata": {}, "source": [ "Initialization of a random vector as right hand side:" ] }, { "cell_type": "code", "execution_count": 64, "id": "f64c9aca-ee81-4551-808f-83471b3ddb04", "metadata": {}, "outputs": [], "source": [ "num = big_l + 1\n", "b = np.random.random((2 * num)) + 1j * np.random.random((2 * num))" ] }, { "cell_type": "markdown", "id": "e4a6d3d5", "metadata": {}, "source": [ "Calling of the functions to be compared" ] }, { "cell_type": "code", "execution_count": 65, "id": "50fe964e-7462-4604-8af0-8f436d02f97f", "metadata": {}, "outputs": [], "source": [ "linear_operator = selfinteractions.a_j_linear_operator(big_l, r, k) # azimuthal = True\n", "matrix = selfinteractions.a_j_matrix(big_l, r, k) # azimuthal = True" ] }, { "cell_type": "markdown", "id": "5cdee700", "metadata": {}, "source": [ "Solving of the iterative system:" ] }, { "cell_type": "code", "execution_count": 66, "id": "45330a0d-23fe-4109-935e-5cded160833e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n" ] } ], "source": [ "norms = []\n", " \n", "def callback_function(pr_norm):\n", " norms.append(pr_norm)\n", " return 0.\n", "\n", "solution, info = sparse.linalg.gmres(\n", " linear_operator, b,\n", " rtol=tole,\n", " restart=(2 * num)**3,\n", " callback=callback_function,\n", " callback_type='pr_norm')\n", "print(info)" ] }, { "cell_type": "markdown", "id": "65e65e76", "metadata": {}, "source": [ "Solving of the direct system:" ] }, { "cell_type": "code", "execution_count": 67, "id": "c33504c5-b9cf-41a1-a357-1ebdbaa652e8", "metadata": {}, "outputs": [], "source": [ "solution2 = np.linalg.solve(matrix, b)" ] }, { "cell_type": "markdown", "id": "1ac8c715", "metadata": {}, "source": [ "Difference between solutions:" ] }, { "cell_type": "code", "execution_count": 68, "id": "8e3f3207-ef89-44eb-848b-3ee3c3b72455", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "7.48327595654713e-10\n" ] } ], "source": [ "print(np.linalg.norm(solution2 - solution))" ] }, { "cell_type": "markdown", "id": "ebfff067-554a-4281-a2be-2c523895cbbc", "metadata": {}, "source": [ "Which means that solving the numpy array from `a_0j_matrix` and the linear operator from `a_0j_linear_operator` can be used to solve the same linear system." ] }, { "cell_type": "markdown", "id": "67da43de-5616-4b60-9ad8-448b6b53f137", "metadata": {}, "source": [ "Let us see what happens with `azimuthal=False`." ] }, { "cell_type": "markdown", "id": "e679cb20", "metadata": {}, "source": [ "Definition of parameters:" ] }, { "cell_type": "code", "execution_count": 69, "id": "4e469b0b-a611-4aeb-aa06-f459b9b2a732", "metadata": {}, "outputs": [], "source": [ "big_l = 10\n", "r = 0.3\n", "k = 1.3\n", "tole = 10.**-5" ] }, { "cell_type": "markdown", "id": "9093ed34", "metadata": {}, "source": [ "Initialization of a random vector as right hand side:" ] }, { "cell_type": "code", "execution_count": 70, "id": "c23fd576-2fdb-4503-b500-5e9cb54eda58", "metadata": {}, "outputs": [], "source": [ "num = (big_l + 1)**2\n", "b = np.random.random((2 * num)) + 1j * np.random.random((2 * num))" ] }, { "cell_type": "markdown", "id": "e7093053", "metadata": {}, "source": [ "Calling of the functions to be compared" ] }, { "cell_type": "code", "execution_count": 71, "id": "6905d201-8b4c-482b-be41-47f3e06b5e8c", "metadata": {}, "outputs": [], "source": [ "linear_operator = selfinteractions.a_j_linear_operator(big_l, r, k, False)\n", "matrix = selfinteractions.a_j_matrix(big_l, r, k, False)" ] }, { "cell_type": "markdown", "id": "e52664fc", "metadata": {}, "source": [ "Solving of the iterative system:" ] }, { "cell_type": "code", "execution_count": 72, "id": "11480570-c1eb-448c-9d90-a998b5bb899f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n" ] } ], "source": [ "norms = []\n", " \n", "def callback_function(pr_norm):\n", " norms.append(pr_norm)\n", " return 0.\n", "\n", "solution, info = sparse.linalg.gmres(\n", " linear_operator, b,\n", " rtol=tole,\n", " restart=(2 * num)**3,\n", " callback=callback_function,\n", " callback_type='pr_norm')\n", "print(info)" ] }, { "cell_type": "markdown", "id": "22f027b7", "metadata": {}, "source": [ "Solving of the direct system:" ] }, { "cell_type": "code", "execution_count": 73, "id": "cde1d9c4-da70-4e8b-894a-95fe86c090df", "metadata": {}, "outputs": [], "source": [ "solution2 = np.linalg.solve(matrix, b)" ] }, { "cell_type": "markdown", "id": "562034cd", "metadata": {}, "source": [ "Difference between solutions:" ] }, { "cell_type": "code", "execution_count": 74, "id": "271af7b2-6540-4d9d-8050-ebc0422865a4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "6.794942266487363e-12\n" ] } ], "source": [ "print(np.linalg.norm(solution2 - solution))" ] }, { "cell_type": "markdown", "id": "2121ff69-c493-4bd4-a9e0-9adbcb115ee4", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "#### Comparing the azimuthal version against the no azimuthal" ] }, { "cell_type": "markdown", "id": "e0373a8e-7733-4fc3-8ba3-9053869c8681", "metadata": {}, "source": [ "For a right hand with azimuthal symmetry when extended by 0 to explicitly compute the result without considering the symmetry, the result should be the same with the azimuthal and the not azimuth versions." ] }, { "cell_type": "markdown", "id": "7ec72164", "metadata": {}, "source": [ "Definition of parameters:" ] }, { "cell_type": "code", "execution_count": 75, "id": "37cf4c30-b35c-4756-8d0e-4e4ecbc7ee49", "metadata": {}, "outputs": [], "source": [ "big_l = 10\n", "r = 1.3\n", "k = 2\n", "tole = 10.**-7" ] }, { "cell_type": "markdown", "id": "ff6713f9", "metadata": {}, "source": [ "Initialization of a random vector as right hand side, and its extension by zero:" ] }, { "cell_type": "code", "execution_count": 76, "id": "865f0420-2fe4-49db-be9d-2971315f5965", "metadata": {}, "outputs": [], "source": [ "import biosspheres.miscella.extensions as righthandsextensions\n", "num = big_l + 1\n", "b = np.random.random((2 * num)) + 1j * np.random.random((2 * num))\n", "b_2_1 = righthandsextensions.azimuthal_trace_to_general_with_zeros(\n", " big_l, b[0:num])\n", "b_2_2 = righthandsextensions.azimuthal_trace_to_general_with_zeros(\n", " big_l, b[num:2 * num])\n", "b2 = np.concatenate((b_2_1, b_2_2))" ] }, { "cell_type": "markdown", "id": "358171ed", "metadata": {}, "source": [ "Calling of the function with `azimuthal=False`:" ] }, { "cell_type": "code", "execution_count": 77, "id": "e45257b3-d73d-4236-80e4-85d6b1ba1bcc", "metadata": {}, "outputs": [], "source": [ "linear_operator = selfinteractions.a_j_linear_operator(big_l, r, k, False)" ] }, { "cell_type": "markdown", "id": "0b6f9886", "metadata": {}, "source": [ "Solving of the iterative system:" ] }, { "cell_type": "code", "execution_count": 78, "id": "31d90403-c719-4c94-9ae0-b1eabc0e75df", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n" ] } ], "source": [ "num = (big_l + 1)**2\n", "\n", "norms = []\n", " \n", "def callback_function(pr_norm):\n", " norms.append(pr_norm)\n", " return 0.\n", "\n", "solution, info = sparse.linalg.gmres(\n", " linear_operator, b2,\n", " rtol=tole,\n", " restart=(2 * num)**2,\n", " callback=callback_function,\n", " callback_type='pr_norm')\n", "print(info)" ] }, { "cell_type": "markdown", "id": "c0697c38", "metadata": {}, "source": [ "Calling of the function with `azimuthal=True`:" ] }, { "cell_type": "code", "execution_count": 79, "id": "3a67e6c1-6469-4aa1-b406-b37a1de7761d", "metadata": {}, "outputs": [], "source": [ "linear_operator = selfinteractions.a_j_linear_operator(big_l, r, k) # azimuthal = True" ] }, { "cell_type": "markdown", "id": "a1468c58", "metadata": {}, "source": [ "Solving of the iterative system:" ] }, { "cell_type": "code", "execution_count": 80, "id": "aa5bcbc9-adea-4dd0-8b1c-339b31018e5c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n" ] } ], "source": [ "num = big_l + 1\n", "\n", "norms = []\n", " \n", "def callback_function(pr_norm):\n", " norms.append(pr_norm)\n", " return 0.\n", "\n", "solution2, info = sparse.linalg.gmres(\n", " linear_operator, b,\n", " rtol=tole,\n", " restart=(2 * num)**2,\n", " callback=callback_function,\n", " callback_type='pr_norm')\n", "print(info)" ] }, { "cell_type": "markdown", "id": "bfdab748", "metadata": {}, "source": [ "Comparison of the solutions:" ] }, { "cell_type": "code", "execution_count": 81, "id": "36613b02-8624-4318-8d89-d93fc32a5dfc", "metadata": {}, "outputs": [], "source": [ "solution2_1 = \\\n", " righthandsextensions.azimuthal_trace_to_general_with_zeros(\n", " big_l, solution2[0:num])\n", "solution2_2 = \\\n", " righthandsextensions.azimuthal_trace_to_general_with_zeros(\n", " big_l, solution2[num:2 * num])\n", "solution2 = np.concatenate((solution2_1, solution2_2))" ] }, { "cell_type": "code", "execution_count": 82, "id": "952f7a25-25df-466e-bfdb-f23149267aa1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "7.977948490432711e-10\n" ] } ], "source": [ "print(np.linalg.norm(solution2 - solution))" ] }, { "cell_type": "markdown", "id": "a7d66d08-aad8-47d4-89ae-4088e4f85064", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "## `a_0_a_n_sparse_matrices`" ] }, { "cell_type": "markdown", "id": "ff03cfc0-b8bf-4049-b4b2-c0801bcc9cfb", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Example" ] }, { "cell_type": "markdown", "id": "538f9769", "metadata": {}, "source": [ "Definition of parameters:" ] }, { "cell_type": "code", "execution_count": 83, "id": "ba48cd01-614a-4c7d-bddb-2d6ce2a0ad1d", "metadata": {}, "outputs": [], "source": [ "n = 2\n", "big_l = 5\n", "r = 1.3\n", "radii = np.ones(n) * r\n", "kii = np.ones(n+1)\n", "k = 7.\n", "kii[0] = k" ] }, { "cell_type": "markdown", "id": "2de22335", "metadata": {}, "source": [ "Calling of the function with `azimuthal = True`:" ] }, { "cell_type": "code", "execution_count": 84, "id": "b0096a62-fe6f-4920-a3d4-a18caeeeec50", "metadata": {}, "outputs": [], "source": [ "sparse_big_a_0_self, sparse_big_a_n = selfinteractions.a_0_a_n_sparse_matrices(n, big_l, radii, kii) # azimuthal = False" ] }, { "cell_type": "markdown", "id": "2ce67f2c", "metadata": {}, "source": [ "Calling of the function with `azimuthal = False`:" ] }, { "cell_type": "code", "execution_count": 85, "id": "dc2f52e3-dc70-48e8-9cff-05d7bde9b873", "metadata": {}, "outputs": [], "source": [ "sparse_big_a_0_self, sparse_big_a_n = selfinteractions.a_0_a_n_sparse_matrices(n, big_l, radii, kii, azimuthal = True)" ] }, { "cell_type": "markdown", "id": "2233611c-8cc1-4408-acf7-18b125fb99da", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "## `reduced_a_sparse_matrix`" ] }, { "cell_type": "markdown", "id": "f23a7271-0cbb-4d7e-b7bf-7133e152d3a2", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "### Example " ] }, { "cell_type": "markdown", "id": "f7e20c3d", "metadata": {}, "source": [ "Definition of parameters:" ] }, { "cell_type": "code", "execution_count": 86, "id": "5088eab3-38f8-41d0-8296-852c5e9b1abc", "metadata": {}, "outputs": [], "source": [ "n = 2\n", "big_l = 5\n", "r = 1.3\n", "radii = np.ones(n) * r\n", "kii = np.ones(n+1)\n", "k = 7.\n", "kii[0] = k\n", "pi0 = 0.5\n", "pii = np.ones(n) * pi0" ] }, { "cell_type": "markdown", "id": "4f2244c5", "metadata": {}, "source": [ "Calling of the function with `azimuthal = True`:" ] }, { "cell_type": "code", "execution_count": 87, "id": "89bb4390-56f7-4f87-be71-6bcfb01567a8", "metadata": {}, "outputs": [], "source": [ "reduced_a = selfinteractions.reduced_a_sparse_matrix(n, big_l, radii, kii, pii) # azimuthal = False" ] }, { "cell_type": "markdown", "id": "18b305b5", "metadata": {}, "source": [ "Calling of the function with `azimuthal = False`:" ] }, { "cell_type": "code", "execution_count": 88, "id": "e6a9ccbe-261e-4791-ae58-7c7dd6facf6b", "metadata": {}, "outputs": [], "source": [ "reduced_a = selfinteractions.reduced_a_sparse_matrix(n, big_l, radii, kii, pii, azimuthal=True)" ] }, { "cell_type": "code", "execution_count": null, "id": "ac2f026b-d420-42af-b3af-79ade7699ccf", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.18" } }, "nbformat": 4, "nbformat_minor": 5 }