From 573763016ca5e1700d3a8342db5222bf7a342752 Mon Sep 17 00:00:00 2001 From: Manas Rachh Date: Thu, 21 Mar 2024 10:41:27 -0400 Subject: [PATCH 1/7] adding basic kernels info --- docs/conf.py | 8 ++----- docs/index.rst | 1 + docs/kerns.rst | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 docs/kerns.rst diff --git a/docs/conf.py b/docs/conf.py index aa90e8e..ac4b66d 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -17,21 +17,17 @@ # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # -# import os -# import sys -# sys.path.insert(0, os.path.abspath('.')) - # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. # -# needs_sphinx = '1.0' +needs_sphinx = '1.6' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. -extensions = ['sphinx.ext.mathjax'] +extensions = ['sphinx.ext.mathjax', 'sphinx_math_dollar'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] diff --git a/docs/index.rst b/docs/index.rst index ce8bbec..3502e18 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -139,5 +139,6 @@ license. getchunkie guide gallery + kerns diff --git a/docs/kerns.rst b/docs/kerns.rst new file mode 100644 index 0000000..e7d902e --- /dev/null +++ b/docs/kerns.rst @@ -0,0 +1,60 @@ +.. role:: matlab(code) + :language: matlab + +The kernel class +================== +The kernel class is an easy way of specifying integral operators +in classical potential theory. +The kernel object has several attributes including parameters required +to define the kernel, the type of singularity for determining the quadrature +to be used, function handles for evaluating the kernel, +and fmm acceleration routines if available. + +The constructor for the kernel objects take the form:: + + kernel('PDE name', 'kernel name', 'extra params') + +Chunkie includes pre-edefined kernels that arise in the solution of the +following PDEs. + +- :ref:`lap` +- :ref:`helm` +- :ref:`stokes` +- :ref:`elasticity` + +.. _lap: + +Laplace kernels +---------------- +The free-space Green's function for Laplace's equation in two dimensions, +denoted by $G_{0}(x, y)$, is given by + +.. math:: + + G_{0}(x,y) = -\frac{1}{2\pi} \log{(\sqrt{(x_{1} - y_{1})^2 + (x_{2} - y_{2})^2)}} \,, + +where $x=(x_{1},x_{2})$, and $y=(y_{1},y_{2})$. + +The PDE keywords for using any Laplace kernels are 'Laplace', or 'l'. +In the following, the variable $y$ will be referred to as the source, and the +variable x will be the target. + +The following layer potentials +defined by their associated kernels are supported: + +- 'single' or 's': Laplace single layer potential, $G_{0}(x,y)$ +- 'double' or 'd': Laplace double layer potential, $n(y) \cdot \partial_{y} G_{0}(x,y)$ +- 'combined' or 'c': Laplace combined layer potential, $c_{1} n(y) \cdot + \partial_{y} G_{0}(x,y) + c_{2} G_{0}(x,y)$, where the coefficients + $c_{1},c_{2}$ are passed as an extra array of length 2, with default values of + $(c_{1},c_{2}) = (1,1)$. +- 'sprime' or 'sp': Normal derivative of Laplace single layer + potential, $n(x) \cdot \partial_{x} G_{0}(x,y)$ +- 'stau' or 'st': Tangential derivative of Laplace single layer potential, + $\tau(x) \cdot \partial_{x} G_{0}(x,y)$ +- 'dprime' or 'dp': Normal derivative of Laplace double layer potential, + $n(x) \cdot \partial_{x} n(y) \cdot \partial_{y} G_{0}(x,y)$ +- 'sgrad' or 'sg': Gradient of Laplace single layer potential, + $\partial_{x} G_{0}(x,y)$ +- 'dgrad' or 'dg': Gradient of Laplace double layer potential, + $\partial_{x} n_{y} \cdot \partial_{y} G_{0}(x,y)$ From cfb38af7e64645a227f781b9b590395fe0136e97 Mon Sep 17 00:00:00 2001 From: Travis Askham Date: Thu, 28 Mar 2024 14:50:46 -0400 Subject: [PATCH 2/7] update docs --- chunkie/@kernel/kernel.m | 7 +++ chunkie/@kernel/lap2d.m | 22 +++++-- docs/Makefile | 6 ++ docs/guide.rst | 1 + docs/guide/kerns.rst | 133 +++++++++++++++++++++++++++++++++++++++ docs/index.rst | 1 - docs/kerns.rst | 60 ------------------ 7 files changed, 164 insertions(+), 66 deletions(-) create mode 100644 docs/guide/kerns.rst delete mode 100644 docs/kerns.rst diff --git a/chunkie/@kernel/kernel.m b/chunkie/@kernel/kernel.m index 30803a6..30d49f9 100644 --- a/chunkie/@kernel/kernel.m +++ b/chunkie/@kernel/kernel.m @@ -36,6 +36,11 @@ % data for working with the kernel in a standardized format. For example, % for a kernel K: % +% - K.opdims: a 2-vector [m n] specifying the dimensions of the +% kernel values. K.eval(s,t) is an m x n matrix if s and t are a +% single source and target, respectively. For scalar kernels, +% opdims = [1 1]. +% % - K.fmm: A function handle which calls the FMM for the corresponding % kernel. K.fmm(eps, s, t, sigma) evaluates the kernel with density % sigma from sources s to targets t with accuracy eps. @@ -44,6 +49,8 @@ % integrals using the Helsing-Ojala kernel-split quadrature % technique. +% author: Dan Fortunato + properties name % Name of the kernel diff --git a/chunkie/@kernel/lap2d.m b/chunkie/@kernel/lap2d.m index 8db13bb..5aa9625 100644 --- a/chunkie/@kernel/lap2d.m +++ b/chunkie/@kernel/lap2d.m @@ -6,15 +6,27 @@ % KERNEL.LAP2D('d') or KERNEL.LAP2D('double') constructs the double-layer % Laplace kernel. % -% KERNEL.LAP2D('sp') or KERNEL.LAP2D('sprime') constructs the derivative -% of the single-layer Laplace kernel. +% KERNEL.LAP2D('sp') or KERNEL.LAP2D('sprime') constructs the +% normal derivative of the single-layer Laplace kernel. +% +% KERNEL.LAP2D('sg') or KERNEL.LAP2D('sgrad') constructs the +% gradient of the single-layer Laplace kernel. +% +% KERNEL.LAP2D('dp') or KERNEL.LAP2D('dprime') constructs the normal +% derivative of the double-layer Laplace kernel. +% +% KERNEL.LAP2D('dg') or KERNEL.LAP2D('dgrad') constructs the gradient +% of the double-layer Laplace kernel. % % KERNEL.LAP2D('c', coefs) or KERNEL.LAP2D('combined', coefs) constructs -% the combined-layer Laplace kernel with parameter ETA, i.e., -% KERNEL.LAP2D('d') + ETA*KERNEL.LAP2D('s'). +% the combined-layer Laplace kernel with parameter coefs, i.e., +% coefs(1)*KERNEL.LAP2D('d') + coefs(2)*KERNEL.LAP2D('s'). If no +% value of coefs is specified the default is coefs = [1 1] % % See also CHNK.LAP2D.KERN. +% author: Dan Fortunato + if ( nargin < 1 ) error('Missing Laplace kernel type.'); end @@ -71,7 +83,7 @@ case {'c', 'combined'} if ( nargin < 2 ) - warning('Missing combined layer parameter coefs. Defaulting to 1.'); + warning('Missing combined layer parameter coefs. Defaulting to [1 1].'); coefs = ones(2,1); end obj.type = 'c'; diff --git a/docs/Makefile b/docs/Makefile index bfded92..b260388 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -46,6 +46,7 @@ help: @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" @echo " coverage to run coverage check of the documentation (if enabled)" + @echo " refresh touch every rst file to trigger a recompile" .PHONY: clean clean: @@ -214,3 +215,8 @@ pseudoxml: $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml @echo @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." + +.PHONY: refresh + +refresh: + find . -name "*.rst" -exec touch {} + diff --git a/docs/guide.rst b/docs/guide.rst index b24e3e2..c2b307c 100644 --- a/docs/guide.rst +++ b/docs/guide.rst @@ -16,6 +16,7 @@ typing "help [function name]" in a MATLAB command window: :caption: Contents: guide/chunkers + guide/kerns guide/simplebvps guide/largerproblems guide/chunkgraphs diff --git a/docs/guide/kerns.rst b/docs/guide/kerns.rst new file mode 100644 index 0000000..76e0ef7 --- /dev/null +++ b/docs/guide/kerns.rst @@ -0,0 +1,133 @@ +.. role:: matlab(code) + :language: matlab + +The Kernel Class +================== +The :matlab:`kernel` class provides a convenient way to specify integral +operators in classical potential theory. +The kernel object has several attributes including parameters required +to define the kernel, the type of singularity for determining the quadrature +to be used, function handles for evaluating the kernel, +and fast multipole method (FMM) acceleration routines if available. + +The constructor for the kernel objects take the form + +.. code:: matlab + + kernel('PDE name', 'kernel name', varargin) + + +The kernel class documentation lists the information that can be stored +in the object + +.. include:: ../../chunkie/@kernel/kernel.m + :literal: + :code: matlab + :start-after: classdef kernel + :end-before: % author + +The :matlab:`ptinfo` format +---------------------------- + + + +Built-in Kernels +--------------------- + +Chunkie includes built-in kernels that arise in the solution of the +following PDEs. + +- :ref:`lap` +- :ref:`helm` +- :ref:`stokes` +- :ref:`elasticity` + +Some common notation used below is that $x=(x_1,x_2)$ will refer to +a "target" location and $y=(y_1,y_2)$ will refer to a "source location. +Likewise, $n(x)$ refers to the curve normal at the target and $n(y)$ refers +to the normal at the source. The notation $|x-y|$ denotes the distance between +the source and target, i.e. + +.. math:: + + |x-y| = \sqrt{ (x_1-y_1)^2 + (x_2-y_2)^2 } \; . + + +.. _lap: + +Laplace kernels +~~~~~~~~~~~~~~~~ + +The free-space Green's function for Laplace's equation in two dimensions, +denoted by $G_{0}(x, y)$, is given by + +.. math:: + + G_{0}(x,y) = -\frac{1}{2\pi} \log |x-y| \,, + +where $x=(x_{1},x_{2})$, and $y=(y_{1},y_{2})$. + +The kernel $S(x,y)=G_0(x,y)$ +is the integral kernel for the single layer potential. The double layer kernel is +then $D(x,y) = n(y)\\cdot \\nabla_y G_0(x,y)$. All Laplace integral kernels are +derived from these two. + +For each of the single layer, double layer, +and combined layer (a linear combination of single and double layer), there +are also kernels for the normal derivative (with the name "prime"), tangential +derivative (with the name "tau"), and the gradient (with the name "grad") taken +at the target location. For a kernel $K(x,y)$, these are the kernels +$n(x)\\cdot \\nabla_xK(x,y)$, $\\tau(x)\\cdot \\nabla_x K(x,y)$, and +$\\nabla_x K(x,y)$, respectively. + +The PDE name for using Laplace kernels can be 'Laplace' or 'l'. These kernel +types can be obtained with either calling sequence below + +.. code:: matlab + + kern = kernel('l',type) + kern = kernel.lap2d(type) + +The documentation of the :matlab:`kernel.lap2d` function has details on any +expected additional arguments and default values: + +.. include:: ../../chunkie/@kernel/lap2d.m + :literal: + :code: matlab + :start-line: 1 + :end-before: % author + +.. _helm: + +Helmholtz kernels +~~~~~~~~~~~~~~~~~~~ + +.. _stokes: + +Stokes kernels +~~~~~~~~~~~~~~~~ + +.. _elasticity: + +Linear elasticity kernels +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +Defining your own kernel class object +-------------------------------------- + + + +Combining kernel objects +-------------------------- + + +Defining a matrix of kernel objects +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +Adding and scaling kernel objects +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + diff --git a/docs/index.rst b/docs/index.rst index 3502e18..ce8bbec 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -139,6 +139,5 @@ license. getchunkie guide gallery - kerns diff --git a/docs/kerns.rst b/docs/kerns.rst deleted file mode 100644 index e7d902e..0000000 --- a/docs/kerns.rst +++ /dev/null @@ -1,60 +0,0 @@ -.. role:: matlab(code) - :language: matlab - -The kernel class -================== -The kernel class is an easy way of specifying integral operators -in classical potential theory. -The kernel object has several attributes including parameters required -to define the kernel, the type of singularity for determining the quadrature -to be used, function handles for evaluating the kernel, -and fmm acceleration routines if available. - -The constructor for the kernel objects take the form:: - - kernel('PDE name', 'kernel name', 'extra params') - -Chunkie includes pre-edefined kernels that arise in the solution of the -following PDEs. - -- :ref:`lap` -- :ref:`helm` -- :ref:`stokes` -- :ref:`elasticity` - -.. _lap: - -Laplace kernels ----------------- -The free-space Green's function for Laplace's equation in two dimensions, -denoted by $G_{0}(x, y)$, is given by - -.. math:: - - G_{0}(x,y) = -\frac{1}{2\pi} \log{(\sqrt{(x_{1} - y_{1})^2 + (x_{2} - y_{2})^2)}} \,, - -where $x=(x_{1},x_{2})$, and $y=(y_{1},y_{2})$. - -The PDE keywords for using any Laplace kernels are 'Laplace', or 'l'. -In the following, the variable $y$ will be referred to as the source, and the -variable x will be the target. - -The following layer potentials -defined by their associated kernels are supported: - -- 'single' or 's': Laplace single layer potential, $G_{0}(x,y)$ -- 'double' or 'd': Laplace double layer potential, $n(y) \cdot \partial_{y} G_{0}(x,y)$ -- 'combined' or 'c': Laplace combined layer potential, $c_{1} n(y) \cdot - \partial_{y} G_{0}(x,y) + c_{2} G_{0}(x,y)$, where the coefficients - $c_{1},c_{2}$ are passed as an extra array of length 2, with default values of - $(c_{1},c_{2}) = (1,1)$. -- 'sprime' or 'sp': Normal derivative of Laplace single layer - potential, $n(x) \cdot \partial_{x} G_{0}(x,y)$ -- 'stau' or 'st': Tangential derivative of Laplace single layer potential, - $\tau(x) \cdot \partial_{x} G_{0}(x,y)$ -- 'dprime' or 'dp': Normal derivative of Laplace double layer potential, - $n(x) \cdot \partial_{x} n(y) \cdot \partial_{y} G_{0}(x,y)$ -- 'sgrad' or 'sg': Gradient of Laplace single layer potential, - $\partial_{x} G_{0}(x,y)$ -- 'dgrad' or 'dg': Gradient of Laplace double layer potential, - $\partial_{x} n_{y} \cdot \partial_{y} G_{0}(x,y)$ From 35d37dd916096df68019983239b57e55303a44a6 Mon Sep 17 00:00:00 2001 From: Travis Askham Date: Mon, 1 Apr 2024 14:59:01 -0400 Subject: [PATCH 3/7] updates to guide --- chunkie/guide/addpaths_loc.m | 4 +- chunkie/guide/guide_simplebvps.m | 133 +++++++++++++++++- .../guide/guide_simplebvps_laplaceneumann.png | Bin 59609 -> 40990 bytes docs/guide/simplebvps.rst | 75 +++++++++- 4 files changed, 208 insertions(+), 4 deletions(-) diff --git a/chunkie/guide/addpaths_loc.m b/chunkie/guide/addpaths_loc.m index 64bc844..92107db 100644 --- a/chunkie/guide/addpaths_loc.m +++ b/chunkie/guide/addpaths_loc.m @@ -1,4 +1,6 @@ function addpaths_loc() addpath('../'); -addpath(genpath('../FLAM')); \ No newline at end of file +addpath('../fmm2d/matlab/'); +addpath('../FLAM'); +addpath(genpath_ex('../FLAM')); \ No newline at end of file diff --git a/chunkie/guide/guide_simplebvps.m b/chunkie/guide/guide_simplebvps.m index 5d02360..ed83bb3 100644 --- a/chunkie/guide/guide_simplebvps.m +++ b/chunkie/guide/guide_simplebvps.m @@ -18,8 +18,8 @@ % define a boundary condition. because of the symmetries of the % starfish, this function integrates to zero -f = @(r) r(1,:).^2.*r(2,:); -rhs = f(chnkr.r); rhs = rhs(:); +pwfun = @(r) r(1,:).^2.*r(2,:); +rhs = pwfun(chnkr.r); rhs = rhs(:); % get the kernel kernsp = kernel('lap','sprime'); @@ -46,9 +46,138 @@ % plot figure(1); clf h = pcolor(xx,yy,uu); set(h,'EdgeColor','none'); colorbar +hold on; plot(chnkr,'k'); colormap(redblue) % END LAPLACE NEUMANN saveas(figure(1),"guide_simplebvps_laplaceneumann.png") +%% % START BASIC SCATTERING +% get a chunker discretization of a peanut-shaped domain +modes = [1.25,-0.25,0,0.5]; +ctr = [0;0]; +chnkr = chunkerfunc(@(t) chnk.curves.bymode(t,modes,ctr)); +% the boundary condition is determined by an incident plane wave +kwav = 3*[-1,-5]; +pwfun = @(r) exp(1i*kwav*r(:,:)); +rhs = -pwfun(chnkr.r); rhs = rhs(:); + +% define the CFIE kernel D - ik S +zk = norm(kwav); +coefs = [1,-1i*zk]; +kerncfie = kernel('h','c',zk,coefs); + +% get a matrix discretization of the boundary integral equation +sysmat = chunkermat(chnkr,kerncfie); +% add the identity term +sysmat = sysmat + 0.5*eye(chnkr.npt); + +% solve the system +sigma = gmres(sysmat,rhs,[],1e-10,100); + +% grid for plotting solution (in exterior) +x1 = linspace(-5,5,300); +[xx,yy] = meshgrid(x1,x1); +targs = [xx(:).'; yy(:).']; +in = chunkerinterior(chnkr,{x1,x1}); +uu = nan(size(xx)); + +% same kernel to evaluate as on boundary +uu(~in) = chunkerkerneval(chnkr,kerncfie,sigma,targs(:,~in)); +uu(~in) = uu(~in) + pwfun(targs(:,~in)).'; + +% plot +figure(1); clf +h = pcolor(xx,yy,real(uu)); set(h,'EdgeColor','none'); colorbar +colormap(redblue); umax = max(abs(uu(:))); clim([-umax,umax]); +hold on +plot(chnkr,'k') % END BASIC SCATTERING +saveas(figure(1),"guide_simplebvps_basicscattering.png") + +%% +% START STOKES VELOCITY +% get a chunker discretization of a peanut-shaped domain +modes = [2.5,0,0,1]; +ctr = [0;0]; +chnkrouter = chunkerfunc(@(t) chnk.curves.bymode(t,modes,ctr)); + +% inner boundaries are circles (reverse them to get orientations right) +chnkrcirc = chunkerfunc(@(t) chnk.curves.bymode(t,0.3,[0;0])); +chnkrcirc = reverse(chnkrcirc); +centers = [ [-2:2, -2:2]; [(0.7 + 0.25*(-1).^(-2:2)) , ... + (-0.7 + 0.25*(-1).^(-2:2))]]; +centers = centers + 0.1*randn(size(centers)); + +% make a boundary out of the outer boundary and several shifted circles +chnkrlist = [chnkrouter]; +for j = 1:size(centers,2) + chnkr1 = chnkrcirc; + chnkr1.r(:,:) = chnkr1.r(:,:) + centers(:,j); + chnkrlist = [chnkrlist chnkr1]; +end +chnkr = merge(chnkrlist); + +%% + +% boundary condition specifies the velocity. two values per node +wid = 0.3; % determines width of Gaussian +f = @(r) [exp(-r(2,:).^2/(2*wid^2)); zeros(size(r(2,:)))]; +rhsout = f(chnkrouter.r(:,:)); rhsout = rhsout(:); +rhs = [rhsout; zeros(2*10*chnkrcirc.npt,1)]; + +% define the combined layer Stokes representation kernel +mu = 1; % stokes viscosity parameter +kerndvel = kernel('stok','dvel',mu); +kernsvel = kernel('stok','svel',mu); + +% get a matrix discretization of the boundary integral equation +dmat = chunkermat(chnkr,kerndvel); +smat = chunkermat(chnkr,kernsvel); + +% add the identity term and nullspace correction +c = -1; +W = normonesmat(chnkr); +sysmat = dmat + c*smat - 0.5*eye(2*chnkr.npt) + W; + +% solve the system +sigma = gmres(sysmat,rhs,[],1e-10,100); + +% grid for plotting solution (in exterior) +x1 = linspace(-3.75,3.75,300); +y1 = linspace(-2,2,300); +[xx,yy] = meshgrid(x1,y1); +targs = [xx(:).'; yy(:).']; +in = chunkerinterior(chnkr,{x1,y1}); +uu = nan([2,size(xx)]); +pres = nan(size(xx)); + +% same kernel to evaluate as on boundary +uu(:,in) = reshape(chunkerkerneval(chnkr,kerndvel,sigma,targs(:,in)),2,nnz(in)); +uu(:,in) = uu(:,in) + c*reshape(chunkerkerneval(chnkr,kernsvel,sigma,targs(:,in)),2,nnz(in)); +uu(:,in) = uu(:,in) + uconst; + +% can evaluate the associated pressure +kerndpres = kernel('stok','dpres',mu); +kernspres = kernel('stok','spres',mu); +opts = []; opts.eps = 1e-3; +pres(in) = chunkerkerneval(chnkr,kerndpres,sigma,targs(:,in),opts); +pres(in) = pres(in) + c*chunkerkerneval(chnkr,kernspres,sigma,targs(:,in),opts); + +% plot +figure(1); clf +h = pcolor(xx,yy,pres); set(h,'EdgeColor','none'); colorbar +colormap("parula"); +hold on +plot(chnkr,'k','LineWidth',2); axis equal + +figure(1) +u = reshape(uu(1,:,:),size(xx)); v = reshape(uu(2,:,:),size(xx)); +startt = linspace(pi-pi/12,pi+pi/12,20); +startr = 0.99*chnk.curves.bymode(startt,modes,[0;0]); +startx = startr(1,:); starty = startr(2,:); + +sl = streamline(xx,yy,u,v,startx,starty); +set(sl,'LineWidth',2,'Color','w') +% END STOKES VELOCITY PROBLEM +saveas(figure(1),"guide_stokesvelocity.png") diff --git a/chunkie/guide/guide_simplebvps_laplaceneumann.png b/chunkie/guide/guide_simplebvps_laplaceneumann.png index a2a8afdf38f53af5f1e5ddb1b1952727b0cfb589..22e1bc1f19e16c7d1b19884dede01893cb29ab70 100644 GIT binary patch literal 40990 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�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⪼epI(y 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

mIf+ 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 literal 59609 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%0A2#{wpc zs@9=DP`$ojRXkUobkG(by7Z@#dvrO!c$`t8k) zi#nk_AHaFSHCmx*^0hWPa@C8^Fk%_yuAT(xh!N)+2qad~b%+u4)}9# zqQqWY&~_>6GFuJ$)>d89Z8F9_2pkyk0GjQ;@G!a{lvX!F?d8{@LbyM}Nf%h_ro9qQ*X5xHNaBe&47s-5`_6X7={x9Gt|g%jZUW}cUW`9i z`o}1>qAzFna@U}biNfLQ*n$l4Sy`Mx zH=y{GO{!Zzv743GxIDJH6C}V74i1P-dcwt*p1!%|G|)K(%i9Z5i@iLz4x&U%h$T?| z2d1_`>5oIp>4ka!Y_^9E-iaJj8p;uS=dt8{A6@E2?*?k51AR-reddan8~P%gyP-nu z0o=L%!w78N!2<>pP)M5j9=mD%c zG^9Mvk3sGiC^WvI5UfsW2eP{?&cN39r*x3&G*O^@uDlHf($*)SohF1>iU1k`j|z%w zs??qXF8t zUtW^>V%?s!<})YGbkOxC$y6M)@wTmlDhy#WF->)cwl@k)n*%I8KTe8k#p$6`;z8@` z*0GQe&oBuOK01)CQWD} z-UFga3HR?)5|#>&r|swt(b<_A)*I}6tWEW+F~=Iyn)M)gH}uR8JTBm(UO=~(#vj`rG0WZ$J8T8@HBo@R%hw6rv1 z&{Y~p%J^j>h@R1NI?4;%jQa}BoDVp7f2sKzWz^4~=c35FpKdfLB2g$|(uwg&gOO?` zW5F&N*q8MK^HQHaqHG;qbWfgeXeb-u{g7v*XFj0)gFL42gzM(l zP{|sn?oLl1kKCuu(q|UDcoH^j@w-o#LEQcRl*OYV!D?524*+v6ONA9RbCPR=pnJaV zlJrOivC|du^>QQde(aj>+Lb7PW};ITWjP4k;b`I5NBx3S(1r_I%r^iafX>C?c=^*S z7WRa*DuX#At_U3~XQyLeCN^BVEsIWhyr`i)O`i<^dF&hP3MWNH6;%ec$WS!VoWU9Ln=IZ&<*NaK|;*+;2qtXW4)+nM}Z(YIBat|VXJS}26 znAS}%l?`V`2VYE$$eRq$nX}~keo2UoLQRit#%zi42V9A3Eu?uhqk}wV&1LBPs(o&= z8OQfcGm&kk!fH%Ig~I^{+GP`Py+GHPL=s#fzkfnp;9pE1ynxc-fd z57eRy)J1{fzX&F2sq6UACdu8A5?g#8D?rUUCc^XYQY4y<`3MtUXJWdZKpUQ>7p*o= z4sxVROoD5UM$a?;AGY2)D#|bFA4L&RQjkW%p+QnY8gytFU}%t#?(S4Tr4blv=w?W1 zX;8YmL+M7k;XcFneee3+-@0clU5h_p&U5BG`|Pv#C+K(W3agWcDT3`RlB+2qF&M0C z|31kDaV3RDHEQG7B z3)!R%7c~Xxi?Q)lzO&aqTnwmU7vtq`QL{f5UW^}gM_tJD%fGem+Af+wZ@+w8BG@SZ z5_?b093_s`!eK%7qxM)Hno&#ujRg-mK< zu);Wm_kXVBK~l-rQFH+gC^C#qzwJ=oSa0-t)&x|@vr*L@G6ohczssye;JR2D@H9!l z^-!6=w^EcdH;>%&^nV`k0*WdFpZ92IIrsFlR9R-t2wExjT&dWF^^+UMecu)2kx zylhRO3EaJJC3ipHayw5M(gVG`UEi4Vp*j}*{5Jxg8)meHh84$%%67}q`WdVkQ}RV@ zW>lM4R216b*=lPN4t-(U*(!Q@02g-(P$A}hjt3SN7SP11%CyRt@2(HT_NvC%>o>Ci z)fZua#apCVcDHLT=6$~4K9uw(KQ@f|6>ReIUb}0U&-cpZDm9D1SLhBjO<{H>^%1CQ z^TV^r*BQMjh!Ug2KP)x&07Z`0l3@zTe2EW*Q&MTDCBr*Uav@*z*_;Z@RLvC=;kubq zikobO!@4Y)wPxIAwq%RzKzs35V|@BBg^6^&B7xVOdSdMlHGBO~`(yBocms7IHm3a9 z@AQ~>dsTcge!F=|09^`v1Q6`k^{Nfq0!#qDcBT0ca#z;cFHto& zhMs{cNyPiMyY$t?&RFoDxh)Vio@U5Y?J&luPj<&k%MlhuK-Lb*ti}#__U+({+|>(; zl>jDyMikgI>Q$!XLC!WEw9bY=ALM>~8ve$OZk~H$F&;tJi#x;CELDGKY3Rlr=9MHj z5I)|Y9ZNehS>#(awqAvQF64^EaGInZx9tvBAwt-2jJ4+<@6grJ4w8@3*7xqh3;wy2w|W(Q*`QZKRe>S!O4oG$Xkh!kBi^&M2yKr_t2Zbn2ytxVv|M;t7a6f_+RZYdxsQ>s^st6-i|f#{fo6MJ>Z)GcI!(%$nEuzX(WksNw#zpaWs%$ z_os=>;hvqI&Zr`_z<8%V90R&MyQ~J6z4?Ha!K6m`DDbN%278H;UMGhjko}$V`EIaO zD$iH|czTlt_ySTKYZd69H@L%Rft(QlHHi>Ri4%Cs0f<(&q`}V%G_KdFUW$s6IUMj} z1&r|<{k%n)3@eEHnA#Ls?V;uTqlw~Po40s5OO~AoojXK8krPEa!^SH8+SM&2Fhw*s zWC=XLFSh61XiB(Y$gg?=+y|UUonB0_UGLp?CF{DKG_rw?8Pnb76SIZt1ySB>z1NI4 zRNl*8Rx}RCuY7}W6;dfty@sh5h%I(AWvf;UZ0Du9u>OtpcI$k^_#3>n04%D|t z^xu^Mgw10DFH{a+{(pradWHsD$i4sBqR4FIa`W-6`aw3M7tMDGJQIo5wy3x3udr9% zayjry#xEWT`=*u(t@>qnWvg?^Or^KxPN9YHL!w|2JfLLyaUX#fHrLbVF@rOD=TW6gWranB-tGqr*RF%-l?3DYh4uCILp9?qx7U*g ztkaunvVU0mumWZE^=Xz|>+3oCDMV5+hnwqv+WhbiiA1%M${+X^T@6~rXS}I;dUWZt zn@bthR23K;KcMZhn8J_a;){av+!&C3K`QrA``;V_D0OM_be|(xkl-3jRSsfPI|pbC zd2eQZTfDzJH*lR$_chq;M~}+`_8M}Gr2xSX5a9X;6e(s}{QW0m^0oj%f&dp+x!ax& znHwOA1RUqS`yqhL-vaWcV+ZJ_>`dagbi5&01$L}rMx1PrRV==`k1`ZhR%f(WQkTrU zu<{ABW8S#t8G(uhs%*FtuO%Y1JwSh%u28_jStJLRo5`HiUXr7b|JHQ2hOB%3GXt+> z7&e-b9@W_3l(N88pu{05`Yojgi zESljlS#oTv11n|1WxlSl5t3gb-?2Hmgx40b1n%V~E3djGyxmg;)k@20#90}1`_4s5 z-+eq71D{BH{ zXnq$)yIC!^j`yLKG}Zo$mC7vC@BTR4S?T?i{OyoCoKdYI-&G1f)a7qmR9^W#`1gd9$v?cVR1f1^#Qk5c z9|u5QEOY>}BkK}-K%ot|&%%Ql7#K?H*5TG=O*N~qChv2C5kSkM`6#Z;Ll3|VKg$~H zMAE1&PJLL)U_D_olD=rBw? zsZE@HH~5EcDOY%9jE_EP%HnfH0*>TyuYMb*7b?a$0-~Q+A)M+getH8*MI+Ia482V4 ztZu&KT5NiPUV`>DcciWHk5h=fY4TWWK_&5)3>=QDz>zPz^-HH$V(>%qP$#2*g@E;C zKLxvh=}5012LTEvyq`(cVi>I;6j|j#4#Nu?fC6Pf;5z=rYXkuXi(RwM!AYXzCOhhr zd*fBy_+9&Dj_>Yd*Thp2Z8>$d%9c zLm8O-3i`w5ZCrmxd${1rK^ZQTAyo+C()S^S!#j28j!YytT0$En<9PN{5`$a^raV=i%f*?*wiLi=zHpc6=+E^ix}1pqDmVe0kQ z{1|1s?9>H;zpbS51ka_5hay~l%e>uPt|Yuo^>dcbB$=y@kIr=w>RdTt29>B)^maPka7bt3NJItjstEIF%?C zFOd)3oZ)xMQGt59x0H?A5X@wIy`P70d`0B0nrbGen>Aju>e7gy-HgL*LO6;~K%=If zdI^{c=Bl~T*P=t+I1xS_#ZSHRAGfF?_)H{QjF@zkiI@-Edwca+4xKg;Q3w6$DtJx$m zn3>rpa$Yu-B8*qP`=2E9t+kqcIL6RPdI#S38yUVBU;1FRLpRelTgu{|Vcd7z-t%#d z;vm$n;rwOqd8)=z4LQ^|0kM;!?Gs5EOcP{o;f z_Hmu-N$(J)&ziOOUG?%G-mnCTXV}1;A0emPQm}H@{ZiyU$j_Bz?VYmfVRsmWcWa!Z zpOsBxxNko%kG^=A^|N&^y(j%q3RG?`zIgZhQ!mAl5jP7aa>4`CiBcwSNgVk-)N4<+8)K8Vt$`^~|B~+uaw)m@td5HanVAbcx zb;PJ)km^#So!NBxsZa>&rCs=+D@CLkUhaBB}&wXef;D|ls`dK~#(b)D3|s2X_K z@U}W(Ny@5K#4>T@lJ&u^*b_Wm9sL{}_lw?^%nEQ62D(aZM7KqZm+a}TvydEme_Gc?hYva(2$d=omTc82OM- zr^MUcVaIRW#~y@-xX0Oum&`zGII1kxM%pAPiOygeDoGmkldX(oGhuxHgo}1h_x5R3 zKG#!+yp3v}ZX*U%Y{gao%pt{WAI5KtI)K}l;rOJs2jWQ7szG4O=I%1MwiJ}m$cW)bm?jl$y%sd zIKw?=)II`-ppM0tZT(+*X~%Pir{yDDT&DICI61*YR^<(r8>7;xB5d-#XbIo9bE1WH zrTqu*R2KFs7pq*;%w;>Wfq874kk=09U++c7Qr$tTdM~e0D@_*;g z>GK_sj>Lv*vkng7>MwXIxzSw9r=lJkIA`!s^!$(w2bFr5V0hPXS=ucjR@vwoWmnBq zQ;E4TJ}@#Du+hn?%`}mDB*jmsTk!Riz6_lq(AMn2EOK3V+u(pxVxWgO<|a=mSuSj~M}2HXdjUgcJ>b9?Ia z!SZ^_o-Lh6zEw~W04}H_N8<4vky?za~Z~!ZG^vVJ@fb> zI@#2(LK#6oS0aXswURN~^9oAUBjL| z{YAI$L5GNc#p&EgDQ{R*^F@KdwxgPwf zz9II}s8%5jh)C=+`ewIOqO-hs10KPO$wZcD^C7Q6zi*L&vB~u$wk9!xSKBNkd-g7Z zGWA*$k%48q)5l{LQ=tOiP8&feQeiO_dnnIg|AAD1WtVz{yo|liSKtCsCg zAO5Q|k)tM);E?wb;E>~?@A&?fa@K6ZZtf}={!UuI*F~KLH3@}NK90DuQDd=AK0G9hz3!=S{5RUXhNn4{@J59FkXQ@I;R?5;W}Jx$Dq z<>~`ww!nX{vb3(YaprUNBF33!KhFdJjkJt)ODtFaB#OEqxNBCekX^|!QJ*CvW1rqL z0#W5i>}72-OuQ{G{nfS@g0@Gw#ZAQ5{a9dNG(8TFJA2c>+OQ?8e!U>Oe-J=R1N#9? zH)Ovyk2al#iIVuR5yCNF9BWYdZj%IC9JNN0w45f7%MJ_W!lq(EQ1U?p1_r+5SzRFcB6n8vjF`w4 zb3`JQj+yzxyAYq+NF__05i`~1guwfK|L>8hz%q)I*xMH_IQF#iGz_-f%;1Ii$$;gO zT4?OAhC(&Vcm3ML~F&$0`f^5zTnbBL{F+*z%|{TQdBs5u5H~d+E(*<=b`U=QZAL_RbCL zqE`tJT_3fB1fW&k29Oz0IGy_84NiwgORusL3_QSM@`Q5|aDM55Ee}<{SCF_P))STx zY*U4p)cv2yI+SIwQC>EQADRRXHNbh_=K9eUw?da`{7~-6T%>1&S05kMHQi7&|#`k z+a4i(5;Z~GpC@Tu{8TlG9w0ABC4&8_!K2STNfJDDK`_Xfq3Z+k0T{;+N!zKKg98a2F z&juY1p64Pg7S;%)ul1d(+3fy9pgFp{&2BoA3E}-{WfDIhAg%|4Z|MqTj?Anj8uNsU z{qB`rNXIfN*!Ayz*R&5 zvWkThxT~rfO}TstSY+lM8N~8pv<%RL&K$sW(%Lm)LEkP86r`7vkHHb~(xH?=t}z5o zE{&k2fv6DoYE&}wf|UrE^wEMM)&L_f0+eeZRs`x1R>#28wA0xm_&vpXYQd%R*4AFB zOsQyFVLBjp9=&G9OW3`5p!~H8SL`wEqoL z^8USZ2MfMCZ$7xUIS~6Un+4ASX-ZmEE9y+}iYf+M#Nf@Qd``)Ew&N}btNzYhX`++Y zt&{~>bIym4#g!9l?j*m-!PivEAC3lS8I|uQUh8HzPaQE@xt+c&R31?L-Th5OIg4jcU6d005TG`r~OuIhbcu-k$6O@r8s zIGB0ILzVm4C?YW}kylzLa;*A^5 zCzQUoD_j!I%KnsPRyAnd;%@KuW2@>oIT6TV;K<95;p-%Rb4j<1Eyp3Pj{UjiUyV+G zIzuJjO*#yjM+b&QCN%^>IQLQPbq-#e|A;_+?`bm9kE^Z|e9*DO67mv`$#O;cj)(XD z1kY8D6z3p`JbWSGTVEt<8MgN`!>@p`M8?Bq_i+7(Kwp%O3paj~i^F+yU_*!ut87;N zeqPKd&z79|5TmDYBe86E5MRDT{V2}c5TH6##eN7rWqr0~$aPuz0ZU*ihU@YhAuoby zR&_SjxU&>%_3vq_ zb(ZE0^0QXh@Nd6XtK{6XakeU(DEMN@RyLwzkm7#G<{j0UKfs>nkFD-8 z&p|yhQh>`l%5xXY?!Qa{u5#MHxqfws28agzA4eC%E*?e`QgoD4QLAP%CpIM5;#ywG z)_?2UDw8*G%h2VN1=z6)4E&O8`BEyS^a@E8(cu+R+$nMdA@*}7axap(C+dhAbrb9iClQ_dc)0b1yx{p+Ls>*F#$ zlqL4^k2Rl3peBz+jsR+*FJXd$`Yc?crwY=0@l(N*{IClKO8REWyu1Zhb^Klp#IIS? z(*>$uEsqErDLv`8|0GQ9cCK(s-TjSXI9wWvM742w;atJYohnP4&_p#v zCf14~q7=T`BDq$KE!}0!om&TQot5{Ka~hR%zK#FkQI?uhoMP|iKsQBrm8u~i&ptrD zFsNM&=gX($(EAwE94F1vu$kECf#bNNsfB0LjyRH#W1{Rg^2%A*I-Z&ANs5}626y!* z`Cse$8PkLTkQppwKzA`7Ny)B6-4QLc`JuV`dRr&X$vkt((!xqdxWs>JI@yl2=8_Gq zGY3YkN-QO%YdjWT%<@(*Aw}O6M-dx6BdVV%J(&{Y%p3#w(_-^+C@5wO$o(=F-{GuZ z>2YQqY;my4(b)ZC^;1A=MZukN+~zp5?`q3R{l?dPjFTU?6@KG#3`bAKUfkG8Nb?}l z<#Pl{qFF4$35wo4lw=Iak11FeFM)ruV0TgHx$GhT*x)>iU(VvGCZ-2;11u*(6U`M< zm|k_P)oamC_xqud`~(43v{w;sXt_}VHdf{D%CM4EzYR{fTh}MMslp3prV<{(q_-Qt zIuK;)J-*gWfWc3w{(A#gG__xBd}FT%DF^^{kI6keV0((92Nq1=B|VBZb0J*T#_PW z>OQs!8K?Pd$x7wQ;!8L%@}(M9u=3~osQg7NVM!&XFZcG#!mR3J%B_!YVSMkl(AWRI zX~xq){4MkDYP-EZoyiZ`OsqThKi{0f^%gMPB|}p|CpCT8X<}U*KDUQh21;Ndyr!z1 z%L9TDLXrc;k|j%m&Z3zuf>g-iQWCSf>}wXje8F&tP>*{NllPaH-da=rJT!aMzX9?E zxltwRnfy}ei#-?{oik{efA=mpmszO~*NC!ZajxH7AERF1&s8eDK&}kH0zf&T@Oe{Q1xf&1HpWw5r~Q4ZV0SrSz~1 zH`qZZXc|Omf5_?==YAMzY(=y_pd>_9_G5*j+$8)$W5}uV_AefRFe~T4ruAp*n=(`K zhxiuw*69pi-ke$jJVfcm%)=2!joPB>BrS!PxGfn7!rtX|Fbm|lvhIlHe%4k26Gc^$p(O-~R-yCtbY zdljV6FIV4On~U~$-O07zzh@acYqb_|O8`+Bpx*~wV+7@)uIq9L-`5;0DuE9^)NBty zge{RfQ$Y#&^*;=B2?O`E+ADruQbOe0_a>U3{p}fVB_3lI_3m8x&af!AU%puag86H^ zYfOM|eu}O0jaUxr0Lgn0r;ET z;&bOS3YjvX^?gEwe8!~igR-|mLKpwW{EsUGuR|gtUlkpKA#;UL1C0pWMg{bgQUeQq4HB84G(^Z?7={1Oh1wG=BBks|1=vDxRS8d zJBWwdL7hduDxik_d_Mb#Q)Jrj&%_>vK7E$D^9GJLo8e6&q*)__`r#e|$`bScePD(` za{DK81GiZLY`ef+H#V3X1#KHgd4-UTZEc|;erFaBFLl-7R|`@qrTlv5wKO^k23z^xvA5hg7A=Ieg8 z<#*=XV5*;Exrk&IiA*u`Q&|^!_c5I?gbGmE&%Q1*{@Q{?DtPfEfPK??K%Wx_xke}g zvtCAWLs_^0X+uamI=oUtHZ#u${H-9<6@Ut||S4il>DxhErKa!Q z4vG0f%D4iq8`$2G|IJN7X?BkfzgovZhEf2qSW9mJjDB9EU$l>ptDUU?(p#66L!#I5 zx^{q8+n@spdTYOl+z?#BTqT}+0$f+|Ui;b7@V*k!W%Q&RTh64oYtV2Gpz#KZE9%x%5F;7TED?psf6A)8-02=C3{_ggAZw? zfwXtyXgV2fxlC@+1}vrkHL&x8C9&O!N2pHuzgK~|`vM|nNQgcFWS3t7u0q*&kApTfW?e4cK0cka>Y&SxHZtcvRLM3Nnd6|FpG!TQ5UHv*(}N~wF3_10*v zb|3O@07iQNKG+m^J^&~5_Xjchhwnm^3`!!Wg!rj`S6lkmmiehtVBH!UvS0B3=AGy! z4B$b*E}dlNKO^k@j)9%}_Zv0UAY2^i_x&~jdh*~Z!0fNg_wr~Bd;+*X;e1p?L0Qj8 zdz+&h1Y!sNNb5x<;E4g!Y4j+cLpsF}i~xRRoGHAYf$rLGlk@!raFy4oRoU&&l}K8k zw%}K{g3XxbVN`XC^vM`1LN&~Drb+dnPgMl7#o?}pKHGYtZvP0y`0-s0xlrgL1xAk= z<(k=uSeW#O+h%rl-#@L7Kwb+w`Wt)@1%>A$03g0T@%agG|M^Wo39x*)%Xn?Y)b!vA!$eB>nDp4S;>` zmoXbkQ$#K+ut_3#Ac~5zB&2A-8xy+{C6*Qp2*RyYn@_|<3alr-Dt`8fY>32dzb8vI zx1S&Um!$R?ksL+La%=Ttohbd61yzve3ZEFr>hJ_m3>h2%_$Ks6$H`WHIztvhW8%RyY7>myvrKpQnai+9Jp}FjPP1FEY<>eCjdYfsfY+5R!lh- zE#XMD%@;3T0N_;0v+Ylh?%!d@0-tB#(1xa}s+xX1zmekzY^`KITfyBQzmZ%2RVmKH zV|=pwU94TX2rwS@W-0-ExaSZOMH*r6vjP}5&H^un_tN!Zu6zQnw`=RC`K|Ale=x)@ z01H0 z+723Bhzol*T3u~s$um+I5^C>iwx)KSt_G$3DNokV3G^_klgPKb){pu)rgWA7{3qZ% z#*440pzr}ug`3jX)z~7zCIxIO&45<}sZUwfa(4yjW?t_%957@7z|ncY3MoO~YwJe> zdMmc6h9DQCVu%Gd7s~?7`fU64_c4tV>!-RElk-aT#xE1yi0le7z^VEmpE(81*qz@2?<>HBsg(4LMf_DTMD;K@jgcS| z6fpRHXl%%SNlX?z)HIs*N90nQ<&8Rn*mozsV%zHG;<>e#0g)z8tGzRv*%p7Y%yc*? zI9^q%)}i22uWgh5`IK8e+_Rtz;NPYQ}gsN1v5B~e>1wO1#V{99<0+kNpw zrv5GFHYqC1?!`dVcB&zHE(^Fb8(flDxO&e0TS9%q(foAY^SU5TQLC}m!v=6+_^WJBKB27tV?cH_S}qS^L_I>Lk191W&PNixoP5ZI zQRq61#SCl8AbiLL2hMI|=gyVzwV6Yf?^p4d{4)aLZImn#wF-RDqES-wpyeu%i*dD4 z*y=EHqKP5Me4!ugch@^UWRM2RqU5NpG#tSptF+CP!+6ES7^#r3T%0wUBw0vdY$>XF z1F1f-2=O`o2bp@V4*k=825S%hJ5!C0v2nFEp7u*#kv0yTIw+detlrjpT6Ko6&P%v}AIj>5^I6KI z6Xnw*RMWRi7`^uYeG!0U=tF-Jd$}}y_kO=L5PY(r_YKy&$E-MeV@tVVJlcN$m0xy% zl=X0JB;{CbG{%ceU^LB!_gN@$ZcfuYf>0Uryikz#_W@axeC#$4LsZr%fg(Q7VWo}K z@|-;x;s(9Qb2}WgfXI*rU1~QU*K^Z4a=ZzdI9~TzPKcz>n)o3ABn&e(18M!@qe`#+Mt2SazFqZC<?OGnwS%VvYx~hU=72Cv48;nkadSh87OzKNzLdq zgw`5fT{Bi!(odY3WWJ^@@L}vw%P;&{#43la6Ua(Rc>(1AvdR=LnKYi6zuL$H-1SmHa%{(f#{ z6WkpAKq4Cp33$%M6h-%_csZU%a4pa+2Oc9(M7d27cuI^>Amvu*8gg6cFRN%tg8#AX z*B?VsQRQ5zGG9qe=2IR)Zb+dyQ{fd%OOt5Vr%2%q6wj^EqbsH(dFp2Shvp-cL}r>= z-2d6=|8ps>@j2Z>71EarvFHk8&J7J#Th2q1oRJ5&M{*9~E1!GB?yRST1D#?nB++fg9nOpyuU3#4o|*wP{c1QY}A1d`cm_{k#kn8WWUU zWB^dmZLW1bDpI1RlOEoIosLwziZN|~<^<x7Y(L`utB9t;0ubUPes z(D&l3CO)F6Rlb;vLHA~wEBekg0AU+KaL1XlHXQz*@2?``_@_i{h`H+jYlwZ~aammd#Q8!HgHVa{sezb~k(R z@BJ?qP{CCzYl!|v9>wsvOtVL65UBMs$ZHyV@76|LhVOR|SzSD&|I_Ply?Z*ArStIYtWY&Kbkw4sid$*>?=qv*#T;4oMVJnY#gyAN&#EhM-ZVXr?cLTw9o3JOp!U ziFDzHsbg`qdT(B;7X4A`ddkNa2c_&IS8o`YU5oZICX{vRlSZr7ls1<*43 zuL2j;a{G6+WJweZrpwFwkg17}aAVly1x=`J@5|&&$?a_lXKfG(K*2l7PXcuJE7oi) zt(o1#U0Db`vkXGShzt}OCVYADXJRDzewf5r{<04C$f_{ngB}LEHkOwXlZBKm8BbK21)0L~1-SO%@Wf^%IxCBmba}VlR4)Wp{YK$CWd#ymR3T#Gh2@aIo zyqT8xwiDF<`&95aZc4AFzSWikN8QaQ!e`4Cps{EDawPcpN!v0xIUQH2M-oOtRS7_n zd=&dlP^#dp&v1YZM)CSM_+*4Ed&Y;ivF!(|HK3hYfw>Yw&ZY8fG)`7oEkv4l3a;`6 zH*wHNFw8PGRD-9nyMmwef3W~5p|ogv##cwy7&sym7Tb0>9eJX+`r)cvHV!8+_uQmc zYj)Fb&pTg4zRH@Iwgy%g2U&ILOitz4)}>CP1A$5-li?`5Btv9mWzTTdTJ3~P=}Q3| zNJ;kJtOj*;M{Ql}WEMR%;_Sb|a80Ua7r8xyonPBkOy{9_k}8lB)>jrZvTO7~MRJ&v z$;9@|tIMi!q32dC9)Q>1ds^ZZzK_3k>~Yj?u&)|P^-5Fr)|Tm8CaCh*9GTJ}u$#D1 zBL0^xg>5q^o52B2FJJ*f56%R@oAl{#;5@QP;(0Q2GWl&5T;-h37ocwntGLN0s$*Gx zoy(2EV#-#y>?2Q}M@z8bQ-KkgF*WJHr5BS+#9WT;5R|B+!jL&J`_jYIgGlpmEl>`f z8=Bd}pmV9jzWAb0!q#tsL42TiahQ0hK%J*d1}qWECk4W*c|75q53NFY8P!;%?HU^9 z3e8_>Q3bxHCh+0&I(or2K{-{A5F|pF2mGkbY~Mo7Zz_-W1jL559~Lzxm18)2NX~=V zO6NGg;qU04qnk&k)nD>?{`o|dN%gZURL^7tAFp@Zy8PQkPK|ddveDY_ic?c_@+4P# zA>jV^g0<5TCFS0IuHgN8kDrs0g`+>k1-SFJDcn*&z3)g9wcBBUHtAhje`o#u$XVANhj$i7mo35iF`tQpH z3aj5tj2c(er7a;8vt~2R)*{Ob%fM`wmS}7~l$fmeRjZ32+yaJd3YQDFVlFG~M2*{c zJyj)^Y1obcGgQPXFxz63UgF@7TDz&_rv@bpi%~+Ka_B7ybbCS2?Q)K4>wxj&oPEmt z)a4_T4C())oXFj}cVhSwc_kplyW7Wr2RGj<47W{q+dO(z8^#I}n2|x~w3~jbpxRq| zlWM8v0c(&-o4>iK%qDSrsq86Qx?ysw9yf5c{w8?%EaRWp(Sk*3k;eIu)ulj$LazxuQ6A->$`T4t6%3LxpR!sYi76CQlV3AiPY z!1U*m;Csil(RGF=D4!%Az9V!W|73kYf^9~=IGTF)hm3ilc&_>{BJ;IVULl#AZ7CMs z@?c1AUQBQ5GR?L+tJp5nXBYkj)4%j(n!Q(o*SdQaYpK)=f41TTV;(iB!w;c?61uMv?H{a%IsQKnLe z-|s`#@)4jfrvFg#L!M>WkH>e>){sAjvk%<{+@0Vmf`trd;x3~Z1cioQ<5gpr6z)ye zgF|01A`}gsBxizH8D*(B9AjeYKoXw;%Oau>yc~3>zC%%}8iG)=HxkCJtu5g2Cf_V( zT7@$h?^iGP5$e<1OTeDu8B+35M%$=wZtO4u)vc)Lf7 z#fs%uT0I2Y4L^Xks2(=%f~rv|-@2I2j)S?`q22FaBo2FB-O;C$GeM-<>bb|OMg#3m znL4iGC*Fb9)NbV(+WI|`)=R0Ogb7sax3?~hE5VY$`}v~`2{;k`JTHh`Twwf9gj=0H zwLckDvI3wHG5vkxH)57-kr^=Z7FFr*$<)PAZrPTg0n$22dIaquJ*Z+^hKtwM`Ii2W zygIGGEO?;h&~TY6Qjf(G;{#Pls=V!p9%QM0+2r6|ht5*)lBJMEwDqB2(a#)W6>e^} zyR%qZHF-VuqN(n3w0yx>7GuG}dWD~}o{jMu>F&^;-uLjh=R1G)t;kxx)|Aq-Oi~SK z%IiUIFVWYTggA3fM%KstFDbiW0f(8qdv{$=;b;I@^MA&F7o(?+OYR}TZnw!j&E4!O zL}r)*6jsSZ2jDf-$`bB3j?t@80&F+?@!xWK?W+3)Zz8g}l+3(wo;E8Z;+3LCX;dpZXf;|y8B zL?5Fl&>{nd)EB*bDGGaYN6RoKZ}$Q6s`A$pq0sn043?1PB2~o@5J;{X`g*gvP!p7u zqVs)c4W6#kixpDxJOKl7Q-^OO(}@upI70Iw4i)H@;n+6u>+tuo{q&0PC^^~vb@$7H z8@i=Qbd@^$ivE0*nIN`|q5oS3D!j#uW7%FGR`&WR~?Dg9U@Tb#e%+-kVV%gq$r;;eg` zsJCy>Rn(ox(`{MDzTP&oK)t_}N?14N(mYwQUd@))oTjMz;h+9R=vk`tuR^2BHr^_M zh+Xc1!O{BZwejQ@;eSk`4aQ6=*2Y#_)q?4Z#l8jJU#^nfB)GXe9swiJKn^U+iO|HFcyFM4BT^{9O0No!UR>NO8+RmPf=U zsLCg&5W^H!zHw7T@&diWmu<7!UlaOv=SY?)JE|hdYeEBa_umaCLBH{ig8(XftFN6qb$_h0ulW+FH|(o8*v-HJxfuRr?!R#Wrbmszv#%e<{G(q$l-)F`9gFPb@AQWrq8nDm`-nIC~0n5Vv&7f&f?!VlkMqhdl zIzmNMB!z8wzrO6ge3i|57#AlWIG>Ljb#tYd*ZuuP>E)vet?*eE`Mfk$@JR{G&%6Mz<(!g)EXy;#xBaYVT2lV>XFR!7ytyb&WEXHPU%9($Io#R zNXp}FnFRNeC2iFg9orvwy90>_EpoaKBar5q?;MH)vKvMERv$W2{qbYpz%Dh1qzN>) zm%-Mi7iRvKIG5fOPGBlKzDuXE*V__O!xFQuP6xqS8$8OXri1YB;={){oyhWEw^%he z$*L<27Np#m?>`fOaDGV=Vf;oe6Ya^zA(`7jA(i49r2MTYpi%WcHvJW)9yE2;e1p&+ z(QKE!mN+SYNN#bzSfZhU@EW}+XRJ(@mEbp>*!{uHa_D3NvF2~Nu(2g|s?$FcEww~+ zGEu4g-mR_aN$4qbX?#3?P0^M&k@J^kPOf zkUC5}65%W!E^^5M?l!fGIMAkTGU`N3NB6AnM42nU?WI|GCP3Okm8NT6NO z#>;>6EE!(lIqiCT?dy|S%xgiPo>2uslgwpp#|iz59mc{kM({2Uu|0&&q6o(%ED5dG z_Dq#ej*2g&A)17`hpR=y1?l(JIDdCdFL#lWSAFd){J53_B1A|9O(sLc{!&V36$9-f z?8m$E=nvZlctam}11AZLH8R}o<>aTq>W{d^wlgF$|d9e{B#;ZAoerfs~$xoV1 zw+JzM@iTvipv3-pXkn{%737mTG^*AZvB+Y~BRh~rewRK{-;C3&zBNt13Ptt)Jm$$& zQmAa(ohGkClAt`euLy2o#v1tDl~^{Dyn|icESWqhm!3bg*7fp`u}oLP5zt%u^!btL z|JKw0OT02T=KVG@7rc4!_ZCy(Rq9qTph@L%!HPtaOydP3XfVSIL~$g)e2+ywUw8tC z;|*khD0ZAK3%cWO<;*)PUpq}8BOwI=G%CW!HDZLbaecv95lW~4QfD+k_A;-r&T{ev zp+byz%uA!Y8dpxO8|`;3s+vp#B-^iBU-vl>n>5a!I8Cpqg|jFu9YX76llWqqT&A|7 zeU-gh!0snb$+Pi$nDdIML%CB#lg@I1yg@xfk+=m#8v}PkEj~O3O)LdY0EZ(R=>;Zk zFn!Xh#;}=7cUWuWr7PQmsVlO(uIMggM%=?<`=voRnco1=-yEdPtf=$2FrokhqGmP< zt~E(4imM*>QX(q<4_j{?7UkCV4Ud5!NSBI$AR*l~NP~2DBOwgkT}ntJ-Q6wSpdj7d zAPrK|4c{8~exK)k@9&;J_HpcCX1uO-t#z*RJl8Mw(tf0FxCOcsq<65ly- zbE2x1vyz25;mm)^{2n&3SNLt!#+q9L<*n`}hN|i@OPo-7Du?UGk(%{sd{n=-Q)*+Q z;#9utg|1if6&jH5Vi6~K<6QCVzmETnjsG^sw$L@G32ZXoy!FVQqmqy1U@FZmw0L61 zPN{)YCU!m23#-yWhrAD4>eF(247p#^(wIb-qkHqO&F^nfM4R zn@@S3mizICg1p$=W2z#r<3P%uCa9~p?&yvfu?K4Q(P?K4GDS>$mPG4>>b0OwYsR;m z$SIW<#>$@rISh(NZGhDZ|!FtU?hmUz$e#_7h*H-px+?awlIqOfgQUI`wM@uE`XPV=zUe3Pb zSW9UJ2dS*u^Bx4B2UwSKtbL~ObpUwy!jED1`&)Q=jUXOU}yLrp%Z|RjL=}u1YG-fbgF3eS(&z)~x*X z8oid#_5?TfV$0aCrG3a*u0P80*1l~()s7-o(tF;gKmNd%cw(B{t(ecOA-I8mAa2q} z#`mWal%CTRwtK8Gx;A2_%Rs|!^9>2dWe>9q<$Hq%#TFyN2}=c3K84ulAzFnBKm9gj zVfss*N}prKxxbv2&qiGI@*s5P{q)SE{=*%!sfYJU>58pkeAj+EGN~snGEg`ob5^=) z3Rh)o+dM2WEeSulHRk(4m4vpgrbS&w*=W&J#$IW%m2(3l@{G4YVQ_Gv%9e>o$xVDK zr%Oi}UCPof+znI;{eKJlA8*~`5Z}Xn-o2kppPULcI@MCyaZDt?>qjDY(+Q4TD^x;6 zUawgTmCvr2&)qqL-Rd71X+|UY5IPa;AF)+M{_a;u5SGDG#%jBxi{2ekQlKml+o3@= z>}rd#_k5qD_Jnq)>UcfGw&K*q>uRUC;z<88mp0daWmvp}7}rDNFec7ECK+qR(2Sd4 z)He>}Nv=@IF`nu{u4~3xCFYa|Hm3I3tVq$u5NYPrVA{meI+*;=;Vxy6mwIDU=)8w( zIG7Ro8TrDYB8?n5BEfRePWh&9jLG)^2)|U$g5i6l5|<`@dgv8L62r37nU=CfReO$<7^gb_{mua=C-_it#n(S1)m z5Si2HmBCMo3FlzF^g*dfxia{yM`IhS?t&33(u?L+DqGOu(9FqbxN>sWc1QT=j92+N0$;C%J z-R1s*$NVu0^5lb#!Yzt|*B`ZZ3>8w7)^Jsm`&B^STLx1(?_8%)Gq)5#m%Se2Za(XX z9=}SlMVS(>xPMz+HDx5pS{*7-G+)hT65}Sm&c(?!xci#MgREdt>;Z|Wb&~ATEdBL? zUIy}HDz00ib;7TP{{258=uS z@bhd$AiV_?P+)i|sjj~Zh%de)!eIphbS|@>-x5QH9}ip!C?(Lo$_j3b??!Q8Kq<2? zJwk7DHqc9Y-e{PO|Bf+&4#Sk^SoxSzWgyLO7&KTa%om$3e;1YU+HVb`a?HcgI{?OW z03bN6t6|&{GWEA-a{ym7G?dD7UC~Dm*NQ;E*ZOm@8h-zS_~r+I1TcOxl2wJ%4DE;Z z7xoq!v!5$WemoC*l0=n56aSVLKbzY@#HsvBn?k!lOOe1z_G9@{0kRAgwHZz;aLa+M z(b9JV2=0^4y!xldEOS>v%7Xrxk%Fhz70n+!@-Ir;KVZ>}C`m9ZpMSG*6PnSxHg3s}yhxz{Bu*uz8rs7N z+N5rkyp z(;!*?oe^*zO3LhFwKALqsb48N8HzlCL7~Fgv1(-eLx9IH zm@3siaGh$b7>*9WqgAt>F^XHT?W0TLuxbH1Us=W}UU!!|eL!ChE;rUi?DY=&>da|m z3?Q@q-3nPEz`Mx-gPg0+0G7nclLZrwL95P%+Hc7fO&p>8@=1hqXSN=csN?U<*mXK) z;#IHBOLNh^RnKKz%FHyjku3}qBNsT6uoI-gY%czxkwJab@bf@P0y*KcRC%#ASvw_r z-Y2ZMvNeL{!fv}YdH}Yc6%;74jIM zbb`@s3(3vq<2r=DD2qgv18lRTM7YYP@JYi|^Poj?eEjQ7p)Y94 z$!l=;#_x!{!=}}iK&vemkNqEr2|N@&C(vnzDONQH=d(pU97y4=-RXGs&iM~q+yyA} z@}3sRy2#USJ%n#lv+mm{*X*~eo}{yt+zu694^>kJFzgh2^dy2`RjWN2JJTd9%W>dU z&6nzU0~|C8ZGSK6(Or&;jv66wS{w`s(kMwAspL<_DVMe*8v^G8LOF}eSK_}UR2a8< zQ3vmyxf@#4Fjd9V6$MB0N&5L&&Sy&3qg~HE?R{Cm*c$&hu2e7VC0ba1+h>;>yPnnq z>KB7A6qbOB%M)>r)y*RIrl%#v!4?i3#|W`Qs#8xsEF&B|!BRLE=SqTGoY;-)4my1Yz@#^mr385vWm67T{s?~GTj zAJrsPUFj<_t-Ya_U7_KS4kN0QTA?}plJi8N#w0Ld!L27a3O6{a{jKDFWA0B54uKom zeJ9pxt);j3C(%b{wNQ~SuVyUHt}(w%1n^Gk>cna2CeZ1&6#B;N)am}P5ByjM%_^YZ z&-{r4?vBaS%c%s&g95wb^Le`=015*Vv$Def7wT+QyBMe`5n}>@C6`g#1&1k~i(fwA zegV*R;a40_=wFx=d=AG4_9wFK04(T|KPmxGBRbat?w{h3^FRU*e6|^Eg|YP7)a|@S z5#e940fcfat>ymi8Xurgoembmy>3?beN}Z_)_+eFA-bT9JrmB8uCUu2lm@`Ig@#iA zOXCA#lnVI^jJB0bJhUQOPa6s8Lcxc5cTZRS(?{i{(f` zOjT85Wu4#`bUL~9b0=tq)`66!qJS@7x+UN*UFeSzCLMoU(C#3i`YpM;`ZHcxbCYBu zw4~BpS$T^dk&!Xw@E5|sSGh-!&d@%FRxL9R;D!vJkix7?Of~@PrscL*O`d0HbpR}( zuX|NnRvff}4QhalTgCs;4Yxaj1ge zzn2E~gLPFPT8RxuSL)x1;wyV}Q?rZc7izlc; zbpj?Ha;6-Nq|(3~E@#wb{ZwnRxFQVj0}56Mwy_Ay@*Oq(v=begsAMC-r_uWLiyOv~ zxQ$Y9X!?sTyg&O`Ti<=JxBn2AuI!mIl90pG`pY_!Q6o5C%_p{-<9WyI6qdXiYKOUy z@*7d9jE%AL+4$leeBRrGu#0A0Xz`FL0)(~yyABmxYtx6rv)Su-sQ&O(6G1q4cM5wu z+(H{f1M`tg5dwB|&Yj}QRFAV6kQ7(}m)~}OR3Nvh*fnMa!e%>K->sb|kf}bkD2LBF z(DwKwKj(z}9)OqzzS*q4C)EH*W&od*6owlw0}XFiAauHD(?#fYBI;$oTiz9$<_Unp z#GV(+kJKn3%^B4)R7Hsf6<*0y)d((}>QNOHs?5m+bp8ft6;C?YzRoA|Q_&dhJ!jF3 zt)8%@>u6A!OfjWeed8in+LhG?6_0!pO|Rn|`G*x&D%$9$tI$E0EW+%foKhj0k5g^L zt&&&sb&w}B8K|9Yy+!1^p7-EXDi@3)Gp*qt=m@V`!K-yHr`5u)e<~D{^mAV6?xVSC z{{*XAj8|;)_CrNQ4mZ`4QS6?ANmm|f7Tyx30kPp>w~QP1mkDr;XLmr$g}3WFFj3&c z8c8mxMYsPC{+X1t0id71)UrYnMdlt=jwm5&^9-1xR}o~2u<*HL|6FWSFpjtJwYrnB7D?`Gof zNaG=51AP!8e*0O-e?dhTF!!vjtpPo+*^61oR?5PV^v8Qjy3?AX9STx4QL}fc3^5VDM(mNTFjjeQ&uVFK4EHmo)8@; zgR;o$jf0DsnERf>Z!-@&luDFcjPzJ#rNpqtY}ffK<&&!1ot~>D2))cz33<^{l!K9xuS=DVC=4e^gH1Alc@j4qMg+nt(7q zvdBs|_QL(5o!D_K8;BD(0rgOL<$><8C4|mCGDey1Tl&ub2wl?<|3&?3fE=ZOM z;NX}egDKq2hw54yL?2v{7vWO9)8CeX_9BoNnE}9?EeOJk(f|(7MO;_ms++C`=9}DISqB{CVs1H$j)(fkrIZ z&Sm)18*!VWrBA0$rH@C|DHELvFB&++DBi7?x|?r)33B1FPPI-MboHS$(=t)@1_@^54Nxq?NuVg0=UMVB0G;lw#(~%nU?s3(jZ=(Wk0{(e0ZUpTEP%yb3s+o9 zRQZ>aDMR$ZXs>vt1eCQ^O2ORy_myBGSs}aG2EAr;&m{ekB%?1aY`Qdfv4qK{%VPnEo z%pDk_aUXb&B`uEcNq~DDLCxZ^A`jV5W7RIzVfD)B-j~y^DVxA9ilwa?<4f+vD5cgVpk!`d5SF0faI@tgrR3C~%Aaq8t{ zZA;9a3Y^W8DH81O$OpmjIJDz#xwzjaBUK1gP`4@jSrqohGf#uHs(|ZTn-2R!`7g4>1?x$sRu9M6~ zeGNEfTGi~e1<~?5LAa)cYKR09?&`!A_a!ViY<%FG z`{fZ_rF%-(>lQBS39?b_5wO=;Hf-lgGBj7M6&nE+U)`2>*bo%JZ6M$~$v`Kufm^nN zSG@dds6`023@1sjq@;CDtFV19Ri69pj_$!`CS(f}#Jq2S2FUI88Tl*zti_NFXq_Y1)pLFzzj@!^eJY=b0azEbuWsTr^SvxE6ujxEvd25|5Oi7CyK7A1# z{3zymnudCD{I@H~*OVEQ+A<%9ila20KQbM&Iz(Q)*G5!o;W!uYr>kc*$Rsl^Zt57X z6x>sz6zB5UOZ&*Q;$&J;-J5GG-PzBpw`UY{t7#|kR{hb$_qHmP6tYcZ!pZ{Auqn0& z)NQdgh3&tBAlr*rXw_2El27o<9-Mv!S9}5&^Wc9~!e*5=-i!WC>#}rLn$DGDuc}YZ z%!{({OenAW`8Ev)FKVp`dmZBFd&l`-ow}D3BJAy*mV?x}*HtWIX(}f_T9#llsiVAf zWlTZjg9d$Kd{#j`2is=^5D4qzmY#<>{|W4UE6A-NZ^`s|z*o6M!aorYAW=xC+0zzG zZJvlJ6_O6Dqo~U&?MEIA{~TwvnZgXLV7gK5<>6qRWqTlkBnhue2JZR_07zAa{wfIy3+9Gq<7g{I($O zZil^5pu|Px)!{tkoO9jK%cnHDCQ(~7#Kq+(F~-|!lYICn+e^0I zh-?*MZp+Tf>(EJK5h816$x>hRg^nC&lZ+cpZkE2R(!<2Q*0e+9EF4Q$x5RmZ z7o^Ad(K3}vzhhyNXPYA>1pAT;S7GTI#hQ}0WO$E1F=Hmj7bv``und*O*2b}E_)#_g zN_Q;Ko4orJ|D}=;GFesqj*Ib}I*v$8RegesR12$3f*;R?CYxdH9b z%j}WguTKj%RO6|Vua>CH4swuxs*rp4Nr64k^bVs{vFl=7w%0Z)>Gdf!rO19yPxO)W#-KwV8p7pV zF`y_Yh{qB=WBwX+{5=s_`9}w*c;jn_S5@6d$ziW0VP^OR^PhH%e%B}YYdeO#(K}nF znP}Kfe-|kiYf_SqK`${MW9)IO9QtH|jAX~q%ZyA+a&Yv``8<%aLB1>f2M3Qs!Y1XT zpQ~}*DAn^+Acorqd+f2M!W+I`JUKTKE;fcT2SSnN%6U5LPirh#W6rfJ)ltOHsg0j{ za=tMCj9QySZOl$E_9XbU^LTLPvl;I4(pEWZYWVTSig!~{1n z-qL{X1bO-3e|1s+V!rspuJ0VXI>Q0uO1O6{m%4_F+?4xim(&dvT0X4UmM%g*le*S# zR&gWU=#GBW+#Nho@x?z%G(z!T`9Xw|)y$sR8HWX0n!)*#ALTt($9zL&6?>lb9j%p?48UGrp%Th9S4Quv;<4Iu ztZ%BXcvCAyUd)aVPL66*R|F9`TZ<3oDm6N`$ryYN5+yedHK_m^OU&t((6?|l&%dvK zZbqywM+!S)GIDs#JbeY4?z;H|vBE*YFF~5?D^aVhg1H6t)YrM{9*5TPurOZF~KT>k>8Dcywit8*OJ`Mcwyby$|#LsA_yu zZj2_p9u;+z!W!un>FM<=NyP&=0KHB)B=i>vdtPRWG`ZktE)m1jbc9?_r&Ot9Y(RxX ztFYm%46tjaMIT)ImMt>;p`B*ngEf{3Pf&;~UA;9!EtJdpR%U(lGGBgXw3fEE8aGj@ z{xv|tg!$$n#U^wgrPM_SDA0f2%{N~!pEZ*}>3OIAi+aL;kK^H|pQ?8zF4YA}qF?0m zoUKrE%yO9Par0R}^yIi=B%=wI%(e>^!t69S>ylQQXYbIzP%BMZ+D1l;k*hn7K+|pGRA8~JN;Sgh=ZKzpiG&)_ z1E2k4tkh-*K1w+7GH6IzzD!}<>6zjnwPpGG@yBdYQ1-m9_1UZGSU<(GuP<%<` z4Tim{X;PuH`X>nrvc#__j3muv`s`9CCsbZ0c1PgFiDEV3=uYf}m0;DsH)X|sV9!x< z?f!dBwY}>gRK7X81hnG&8R2clBNNIH+F3vkiiVxPJRFC}WTQ}(GP{mR*kRMK*y`=5u^E@9N)xT+&Iy?{M^ zc=3IKHOj2Ze}h4(0^jMITHfTgn6$hNU7*!Kj#AQNHgFKIesXFR2)hpdA@%V8x1ypJ zUDxh!uDFElmw32a{^0Wg`AzXN>Aa-r)f0`CiCcNVpZxOCM5TAuO1fiSX}qe1E-w;U z`iyqus@Gj6l!7IO9o6AJ~8ina~74AXTp`?#u9gZFyMnL;V_b75uTH2k|j_h1g?o<&3R$(N*qMOD;Q&wM|>T2O;rL{fu$GX+vaZ%2?rb= zLj2KA?*E}8>K9MFwUVxKlVFQ*;CE=~UNSPRO;Y$qK7rzy{HSq`Su13Ul#ly;=5nZW zXP#{XM_w(|DhpOOQ(-t|H1d42VsUZ2`%Zb2-lI!pX0|ZddP>u{Ezi2}F8xwcSUC%)?DvTu)&q1pgHwczBd7xsgrE1;}5G(jG;n)}i6Z%C- zXytO%er~1uabOY%mQspK=8DsfRfL$6dV$r(~}ZwPq#bl3UR>B1M$ zoA$P`Zjbao>#09(26%qqlSu=LyOY{Yh1#ZTGlmnKl*xz-?*z)^uX8I@#tqo9dU4b_N|TYR7_ zDHDmEJy^=Zkr6ir4*LofdN;1>vcDRK6?XUOQj33~#tpH_?iRUM5|{0XkDkM3prqm` za$hK+mE#iZiq?$0nTgb0NBosr=-zB$O(iOBA>87K@TqXN)vVSpAV7syhW>8CSF>ua zQD0ux3hRFPXT6m+Q*Z$9@vW+BLf)SogA*1zhsYM5WK9cePbo{M{3T`A*r`mEO|W7i zg>c*ihG^f0f&?y&mHJJBEt?v_CobH;w@bJohYeMY2+^8Kj6g^{f_2U8^>+HS`S^ng zUBd9deHFI6LU*6$O#Q&Jyi4*D7necu93A?yv3)<(K2C)5y{A?SYU8v%#EEqMJG(aP z4jW0%i@3q#ZcDs0&W}<5a8tfi{-f&Uo?eTZkMO}{e~dZNo|s?s%C87!IR^Vz2@?3g1#9UihS z9^0Ail|D}Q+Exycf(_kMG1;1kX}2`uBAriEWjon{40FAGHVt4ml4(4E@IRj_bkLK7 zPZfJIT7Lq^Ljm%#k>9HHsU?l2(_8y~amqx`-e~g1ptYq@OIknfZf@NxKeO;j-<%M15vYf<^*<)X{+mS&PCmsQ87Mv=JFpL+nk53@D+DMy-wd{lxc)8*dmT_~o>gB{J zZh)fVncUfDTRB{SaQ*xGNB#t3GkYxjN>*6-DRv6~?Srja_7+2wi9(~r`n1F%@; zb*;=b8B)(YipFlov}^~kLL<|9#gUGhCLgf%O$J??h)n~T_pCqT$vYu)nY$%sGtYV_ zlB%3MPbBsCmW#A&I)49pXzqU1WqgdSA}s8)q^}XNBg3=1$xz)>Er{xc zlJ)KEN`10$jse9uEJerT1^JuX`xgaJ?Hr%xVAE>>5ZEEq@KZ93&9z!0ha=5!(#+Po zV`AR3ZX(j&W~&PS=<`?!Rt-H;z86z_2RwX%cHx3778RNq)@~KD2NOcn0hrno0fix&Y4omtf!8A<2dje zp~vX5_}i1nwJkwl@W4?W*~TPLK(SIN)+=3%Rh#hh+eQ*=fr6%|#HLl;)C(1nD=XC^ zBhg`dqmWjk1L{=`9#IYQ0xfWjM|wV$rb;r%zqxMLYtir4Yteu#&`^@wY$0ahAQ)4< z$M6$5lgIK^v78P#4wu*RG&3H;{^Lwfx1%z|N?-&U?MLKQ=Hiczy_Z?saqSK+(zXG2 zZ`;NI;{Bd~Ku7LxDU29PXg6IE^96IHl<<15bI`n1^-5+ZI6EFL`BOo_#rJ@vcGzA(lFx{}->|CSgOX$gyXw0st1;b1U;@3G*=*Jw9q z2d~cOTJ2t8-p1YUL;%Q`g>b?ERWMB2=uJmti(nuFU^hfs40~F)WvcBsUES9@oy#js zp8xpc#nSiiXdm^7(GFei2pbaSgP4n-&#~mtkm5IB(oxu%uQYUoqu!59bE}9|4@nPj zk&SeTnXvWvSP;vwX^-J6yws6en|b`$S7L1#yIQ3%9zUvkj-LDYhN-cAcd&18cW{uc z@%Zx9pv{Ks?VdyD!VdS+!Ra*xcaVv}w&|>}Y3`D9K&@nAGZv8;8kx&^WZL!nYe=oG_cbqW zlB@V6=XJeB+RG%@k-BBIsy9?Bphtfo@H;)yp~(e3z7l-8u=HL?G8`fYg>STSm@N&N zuScllitAfB4sZNFkobCC?weV)*u1l^;(SWttHw-*ozdJbMI9PBDCU@r&wZ8RsEr%k z0i8{z;C|_y8;7&yl(^66>Zp-bDJ{z4He$G8#S-UW$(~rIYP#`hbWcnu58F?TmJB+i z9!+Gu!EWq?o-mhe;hs3s#(KKaiQd^6zIWjwghZ0e$9}-Loxw|OH()ny39#-g@s_nz z-vp+V%iW8Zp}59$Jub=m$j1-T|6Z>>;yA|==OM$A2Z!(15n9#}`JP11xyecc?XF<= zTbU^BBsV#^{NcK>~{HPc&_>=-n>$A+(|_c8=A@gmc+x zv(g`*~m+cOp_Op33nCGjGB=or;UW-KJSgJaqK6wdm^XJ8YC zn@5i!-9q-r(YrVPXGAQTFLh8!*m_JGaz1Pjn#47Z>}o8X%+ZHyek_4<7g@X)v7F?w zJ`1&5gm&)ovhvh94BA|j2J82P0Rsj?vxcw_H`CT41{Qu<+FCpxtcO)8gqYTU7|94n zpYRDzcGf@98Y6~5B!JYN>pqx#1&pU9S$U16ea=KxTXSRj8@4^}Bd0&cLf+OMC!m}N z@7V{bZFuzof4O^?LEtxO(hZ#}ku4i6(vBgTy*I5cj$1>rr=+^SH0xN@Z=Pru9iB>L(4QbgN zf*s~ewJEg=^UcvPT;n)j8A;|m)Ret@2%kyPBO3RnxCOFOqgXg`^nqslfN87z!uk=pW-nLz2~k3-?jF zO)e+GNF*8N29_(*ZyKfeqh+suuHtrMAsYL<0|E>F%?x(~^&1&()orFI`A{IXvgi zM)Evoj4Zt9mZWJ4!)mYFV@uL&FQ}p`P+Ti_LUTmD?+gHh1P(k}k5Lswf{T<9I?b1x zjAX7jEdfL%kfRbr;=5T!zcvkE1AzhpQ4;=SH9%Sc>|TKhCo3x}+)>oQ!2tkl8a7ki zWKy6GeRQ=rmDkJdU*PA=sDw}g)Em&${|5_ja&fro!85J_qA0b+{y=M#>&W8Mja@16 z@&mr>B|^>9+(TG}K~1K!t3&beao)BzuXV@QL;PpR8LJ5sVGsPi_Le#Je-|E~{Trn#|HJCnPKE{D|}@rJ`{@f~p9 z!f3kz%2z{at>D-VF5yMMUOcw|KidWZccnQwMgT^M`{D>f39fK27+pKU?lMVK))MCW z25dYRtg)7<(>B3#m{eemczj;M;O36AG!-XxsTuxb?mgRLx4G)EF&RM|53M@q!|^Em zV7PFf%Es*bCn~Gt{*Ubtclud{JI5-gQHno@!K&pZ2DK*2*iF$9QQjAX=I#5yW3&ga zse$Yn5VzuhqkZ!P$1vIgFyFwzW1go)x(nb0SDIr%$@v^$HE&L*bnlB=uZrLYTONGV ziFztzV3uL&_oyx1?)-2*J6IwXjOViZxY0(XnCpv?3J^bS*LPiBH(hY3j30yhhntH- z9!@r{o|K2mYm11Kc{)G!w+{v@kSz_i7X!<~oXSfzbFqu}a_YBP?6Y;aH~1qt38!6S zXr<4xFW9>t3;M~76p4qA=5=!qKJ1x}RLIT9QdPWLIL=khk@`e^2JpjQFy4m~rPNzr zooti%0`ynjpB6YqESgFY05#{G+Kb?ENh6tWIk`S~Fwhm}+3V(H|61cAzgV{CG!(dU z)=A7fv$K2XF$O;IbvXH+d7#@!q6N?k2`GrDFL4A-U@)q0s{ky9M$9`uK0coJ_ZPu1 zkoGd=EfiRJq@N>-i&I3A_+|)6(qv!F40)abJ5;!*Dgc>X_p)IrfQ<5lKvg#1%cTR% z4%x68ddn+^xa#JD)xDWVl726PKJG||T3&_p+;H^}4FrvQFpNFy>fxeM*j&yD*OiW< zeRMlFtckv+rSsag^y@&)p|d*$!~oVJcyjrEL{8+7>>i%J2H%=N#I-p6>BKa5mxw9g#g5(`>D&yjj3=yJd643sPV#Lk|%>`-_abtcSw z?I8Yix>zMYl??$|QrK=5STO<&IiuTU$O{%YRQC4z9N-1GoB#a!;X~rvuVt3&{Ein~ zD?Q52&W;dL`xkVExd5}6EgWypw=YBpt;F4840spSnCwtua^hfvtIe12?fZ zTTSD}l{0z(Mj~J2^z;78G`(icE?C4gD#gz^EVW!KfjMrOPBXO4 zW)cmw%dgV>wB84v*b~$S0C!g{(ZD^eGmQo}eU}H;aTi08 zWb+_F%2~w{tg2RyCqAAd@=1xy$E|_s^xyl!4;n6j-S9P-UNzsJ6i~{eFk&mz=kJ0% z;I%6-YI}y!+~XKqZwK3m2nO@YGs*UZc_8}s7%%Ote?Kr$8-dOUc}>5U6*&q(=>Pf3 zi2>@Hozhe}VnOHC+Q6(SR7?-v0Uv$rmmhW1_In$ow|&8El}+F|ND7 z2=xU*muYun#7&xOI^~9#9>Qa!`Kzcdd7Qt&&Z|C~d{&&!F@u>BB>!M53_kJl0~AcP z^1&*EJZX4E)zUVHpF~Rsa}8H>G#-hRS@0=_iE~X`qAMsUju}p(K;U2UemTtH(3FFk zKF5SJoxY3EOujwS-H`){7W=zHd=6uVC&zlP>k2bGcUJ6#kQ(ocPQ7mD4kOPQ4#q`A z*yZ**PQ-Ffndz)McgZiE7z)#C?RxDmPaT3w1HNETgxE+T^K*ckdiEIg%^bJ$L73w! zBbCE|(rnv#Qg+Md*w}Fo<;Xxq^GKpS|3VqnM-WNWE6F)48!g{RzU@)zNJ@io-=UqM- zJN;I#vd*JXJRCV#q>sQ(Z|&%2w55gDcX)dG`KdMJNir$* z$FW}BF3s@*$+Y;|;Q~o@<@9upE}IIcgC>nKB#5hk{YxH9Q0RdK+56M>#yNWZ<*kq) z(*2*YvGCgqrRC7R$u`!KFR-Eg&Zsiv+HscH>H=6;Gja%a{)dg-97gz%Dz@i)a@PuG z=B4D^D>}FNXU}RIoT9L6pV!tGxQo`wLT9Aux_suRj9^ z#IFP|bTz~8+hsKc3lxcQ6~9a-vF90cbaP?KcePv!_9B7215ryanSZ?SLupiKea^5-j`L%FMxF?g$!_&$fs5rpWD609k*~ATPF@2s^i2HjAzWf z$a*NZBb+xf2Lvzy`-CNqRyZ!T=)jk`9e1b02)UW#vX=&vILeMzA3Xo_@_i>|NYEFIusaIOQ#FWb zz~7}73c~BLa0Vo%%64NohUJStM$5@4XMZ(gS{6 zz&`T+^DA^STZeYW-TmCFdVMkfdzH`v2koA^fYqJ0gsG{1 zF3R*&QXl@%1Hm99v#quXV88DYLXu{v#%q*au9&uT%ZxqwWl}F;-N-FNE6Oldx+>Kw z%V!Dw5MoFT;Q?u)ccqG_wb<{D{d=ibx6&NsCLSuo1V^Hku*nP>>afkI4(2I{}zWlV2R-ON4X8fi|-$gSc zR?awS^-J#+rhX(5Nh; z6eJSXX8YWo21~12*Vx~*aqjJX_3w0@#tf${q#_^lyMV8yzojW9Om-bP8Ew>_I;Fj! z<)PpEAYi5PTz%B0;eAGr&cvff{Jh{dK{5&|&kyilA4nS_jC8fRZ>{qETE<(0Pc>#} z!ca_CVPC@^H@-sNn98KPydM&5fRfiKgfzwwD}a!m4A!|^qDa(^BE$auW^4;o^zf4r z6+*KS*D6>kpJ6KsklrETKk(X77D#rxZhhxz7Xmv$N^;|}@O7pR-pR&HZk2k#5#MCY zDks9rD#w~Xz0~v}aO+Q;}xyANnm-Z< zD*W~2(zB8zcksc$-~qR_MWcE1emc=@#}dWHjv5vevEPt182@~( z?&m8pi10sE-M@|< z@HI1dsQJl7^g+4~Bft8|hlorX@7*ppPWQwGtPU5XDMOxmIV1rcl|sM2NrrDcl^Yd& z_~a99ri$ME(Ys+uZD|Ad-UvxoUA$bu~Fw;MLU??{lRACT@VQk!!56TH_#b2-9Q)jF&n@+d9)0{sOlCJ2Ph6d-CrMrvYW;{59q z;_u(TL26(R#L1JP4!?m8JJmN;GqW9#uY*be)Gb$mvhMo*@k{_uZEk5D0dIO@I4v>F9nkA_{&djzRa1((8ya zLA2;+IwC6wf$)Kd^0+9o|F>?$r`L){mKH*K^FHKajgrp=)Oes;U!U87;~s&?IX#d; z?;mFM#Rv~BaqYtee0|fAyW49aB#_PYYjGO&Mq{)c5Amg0m4SjDUJ(O4IEnA%SUGH-?682y*-^0Ldp^iAJpRXxH`drtE@*^l>zXnF9w{qGY=q^s#-QcD|?JmHnquo zrsDqY;C_Gg5Y0Ump5jtx_9}$@mtwA`b_%X~j?o6E?V-J3Uc0+KAm(;7x3fD|1PlR0 zuRn-DaQYlnQ)69OMBRTcruESDczqqJ#GLSq~NN0cp9m_10peEs9dsAA>?FUapjB zioy;K7OOTHOy+tc8fI>43bk1g2AzqBX^v2F~a&U%vDN z0RP-vQHjgO*6T)$HaOQ!BGf|<3w}Ge5nFv;IYnhU-bF~M+pa(xjXMfbN3b9LAV)4dvvgZC&r04eJZAeg6!Z?{AN5$6IBl$b#-1D61gQ_b)E z8x>8*S2}{Dde(rLKbX-(g3nn^hWBchT1+Pj+uS?=AqfsX_Ce=$2D<*)v2YR?Xj1is zz_vfBF=vWKZ8vvzc7n20ln1n=uF8WJ6xi9>b=)Uf&le7LXLx3sZM@)79irs>^ErYG z+|R*#3%=ihT<32mj#TMP;VaniA&`;3&klp<--QI;5BPuHhd&p{$T9pqIZPt%oY(*E z8Q|m@Y~IuWGXwU}?YBY#pvZ%7MDPlT|3nG?FmNN3W+X}e%ljD>ai8IiH{fdE!O?r` z?~qWFg7*dg%lmD~%{XN6yWu}slj)<15QDQi!C;}0^r!MP#%t@iA9jqNX-g$A8-cZM zL_`ceS&fwv+XcFJiNM005NZ#e{&*x9FZ{|?IJ4YxA+g#0_UaV)63}d7Jb=8`poT|h z4I;PmeIDyy{6a$Qpg{vjvkJfW;cRr!%wUO=N`Y3pX8{L~e8K=k_!?+=8A zhUV<^0+tn%LFdVjIxr4bh$AqUlh>pOfNB~k2S#CIw*;@Gqy&V55La-^kdd$4CCH!; za63`vi7WUV&==se^Xt7@*yjk)v5XqV}%(UIiBnCsJH;~A-?U+mA3%VDJKqkKV-N!iOMG_(ZcPGO_ zphF68kHWVJK(Nq(k8ipzMoR22U;|(YgNe5izH_!d$Qm<0biV1ODRT#(1!GPIpCP8c zTUC$2pboebgr84@bd{^o`oddbyimYT5at(sfeilf^p=(uW=g2-ni$eD2o+`h+hBl5 z^Oj&DJeO-xfPrNNMZBKWv`XQ$$?Ri?Q`>+o2G?ftaR$0a{>mc|zyti}VJ?8#V+_VC zK@zO-Sl4pHo=CIOdWzGA`g)hHFhV$8whA^Th{VwJrwz~}jlmt;to#hbrfj+TT?9I$ zu7C(Hhy*tXU^7)R@&aVsElKg1W*kx|UARG4*xq#c8$0o0sIz~9h7P8QXZ|Ak-q-~J3dxrJor!B6$`1AIaLE&RVh z##>_w?3R<0D!+BWlm{;lrqtQL(}9{aVXNJX2X2T^Z?`D}vW?MfaZn>#0xF1O95$uQ zJHWVC)pnRz>jAMn^_|1-aZnoravC=e(IcwA`=;qQXaTDftBni~gU&lT=%QK7R&A%c z?Q?+-)78!^=#}x^t?~hC>$$S3_9;j?NQuJlSHXKrcY8~4DFBe&9M;|F4*kvlHKN7H zCQG%sZP&Vi;6pe82fZ(xo&q}LW#Hld_>2H}lYRA5si0kQu*d^8dO)SkiKW%3+5##I zH+Sc)tsu7m6Hj#?@wv6|+23Sj?&^>3w&VW%?6?s2RTz; z?G$M42_nHAWSH@D7peF6;B^g1h5lR5+T9JV;N+v5I1#iI&`yRX?2<|Ko6H@ z>bq&|Kk2O@!&OVR_6eV@le^1aT(AVs|0E;hgsn$0W#;pBHelU@fLl~l1m|HnwH&9c zc7^BpD7(Ig?-|bw!9)QpAjwujUUz3ZJ3FKgpc_l#3t0aH@l0=;&-xQsww1YV=UQ*) zKnMp(9^7RkFZO1c`0fL>PV;U>AH1P1$|phx$B#lDslOxAt=cmG$d*DYEv-MkjyX1N zFA8$PZl@}c1NdU_-W`S;)8F(P^HzeCb7SM<|JUBN|3kTMaczmuQEh44Y9~_Kl}mP_ zNJiTwG$Q2EFlH+%wl_qXJ#IXL8iRj-j>jO11lt^ShS&h}S z;nX+Sp)2&P6zaDwdKWmgV?VJ3 z)6JTD)F;C}V;9q`nCzoC(50mlwve&OPm5^mZ!rM zNY4UDy;O9TvAt$j)s->_$LD8JVlD52p~oyty5bbr`YU#`-ofD)Bn187D(+6%eDLNE z5Tr&+=NT+myW6}G@wg)zW+}e~&)lxXZt%DXbWKP|K!uwB{TM~7Xiy50-*eUIUsLx$ zJycMQ4CcfHMt@<3&_O6N*{9a$;oO2>!!TvEsbYh4mAA+10*x}8y5Z`n392o{KJ6%b z8!UgZxoESL3n&LM>w{mk=`@MP? zuabIbkPQ$ZgTrJL7Q=4uBF5?I>FHR(6!<|icYGT<_J*TSdlJVx!JAHL%%dtv2R_?x zqO2K$f_v5#{KR|snfqN(T2wnKu%u`-nq3a9$?X-UFI_QDl&&JoQ+bR35Ba#S#z-EI zH&B>5-k7PZD~Frf8}!kNKUV`E`FEmBmck+MpSg0{Ll7^TEYdxPj`xLxxJ%>lZ0FyM zI*}T~P_h6C7w9qL!I92L^(z5=J0Hfa0*b5mjLnKkq4#tB`MvcB+so@5aD~uU5ZpJ} zU31Q=#+i~()!R~-vy~Dq)78A|%|uhKNZ{%1iZ_;yP+^*#WOf^*bij_o0IN3W?AX~^ zN$~4gSy_E`7Y#|)P)&z9<{SGymsaQjCDc+4ccc%-T`*^VTJNKb+@CG=C;6$9EvXrK zwh|qeA-(J?$D2T4ziX@K6gcWt6lvY>`CVfoST&`REA!mqboTNR7^3WT;zpQ=yN%0BrZlLpKz1#iBF|>(_&qc{f~_w+`F4{mQxn%jVgi1W2J zbgRqy%~Ysn28VikhS$1Ojg2^L3@uc-ovdU_9lXid5X|qz%5wnv?4fX+M8FoS1@{HL zx!0AllJXLUj{Y`>rt*{k;EQ}87jywph+eq%%D3U#+xR@|=A?FHOEF4r6R%l768%sb zLy;H|^}hXs5W7Nh;N`9z4nDcwId62XFQ}A{?8yrdD>;+yA$T!Do&TeG@37=@mM?mi z;4A|l#7rl(AO~SVOfRCTi>FoI-{Z0^iejfO*ugQGZ zTof=Sr?EufFnUtgESvSLZ<8-1N4$!?5SYa%aD9Li3<@K@v*O6b-byw%WLoB-RRKzn z*#L3G46N+!Wn1fdIb0IJLtLYVz0TIb_DHnbjPhGWT2(zUM>(8=J)^G|*91;ts~8<#u{?8Q<>(o|67P6(R4@FD4$5jb<$!!oSpwn>h!yRyK7gA=%7-T@}&lkcl-v+;+r?q+fgB} zy>>RH%`I)K><*U{tD>ZHQr@i`^!@4oK9q~k9Y2Yia z7G4J7r7{Y%rd7T<4^_U843h$Cx0-OEsLL8fH$C?JwIfXSgj7N1fTfyQ)$EMneDl6Y zPu*<-IqPLi)wg)%GSbO*WlXh7EU#UzlK|&3LJ$!Wa+@pcI;?CnBMMEZTm26Ty3gA4 z{B2EFly-LCvLl(Q<_~<+$p^)Y4yq?B52O)9>e8pK0CbUUk7$qS?S;+15Gp*$9YFUJf(GFxzTHDw( zkb-zA11hx|zM=Fwz0jix0gX!w?Bls#q~!W6_>UevLbk1BlQtd-rtE9B&CqXjq`U*3uLj-zX~tjr*4(#kYtRJaOnqhbRuy|{D#b(V|*B46c-k@ z9(r94&TZ<0+Y>c*c05+=A}07Zg!AXBXK+PWQc35}-)KJEZI< zes+M`u{cDvtf|Y>@i=p?%Dp^Jr{EfW23e?lSB-@u3(~TaDIw!wvd%EzC{7n5wqfdw zRe6}KH&WQ_yokaaL(m{1mGO{Mut2Y@sPI8g%#1%c(&JjwaWOh6e)tqa`$XKpt3E08 l>FC=3zxkhAkn#@-IpPv)H2<`@4HFPCGqy0wHTdP&KL91;mdgMD diff --git a/docs/guide/simplebvps.rst b/docs/guide/simplebvps.rst index c5d70fc..56d6bfc 100644 --- a/docs/guide/simplebvps.rst +++ b/docs/guide/simplebvps.rst @@ -228,13 +228,86 @@ can be solved with very little coding: .. image:: ../../chunkie/guide/guide_simplebvps_laplaceneumann.png :width: 500px - :alt: combined chunker + :alt: solution of Laplace equation :align: center A Helmholtz Scattering Problem ------------------------------- +In a scattering problem, an incident field $u^{\\textrm{inc}}$ is specified +in the exterior of an object and a scattered field $u^{\\textrm{scat}}$ is +determined so that the total field $u = u^{\\textrm{inc}}+u^{\\textrm{scat}}$ +satisfies the PDE and a given boundary condition. It is also required that +the scattered field radiates outward from the object. For a sound-soft object +in acoustic scattering, the total field is zero on the object boundary. +This results in the following boundary value problem for $u^{\\textrm{scat}}$ +in the exterior of the object: + +.. math:: + + \begin{align*} + (\Delta + k^2) u^{\textrm{scat}} &= 0 & \textrm{ in } \mathbb{R}^2 \setminus \Omega \; , \\ + u^{\textrm{scat}} &= -u^{\textrm{inc}} & \textrm{ on } \Gamma \; , \\ + \sqrt{|x|} \left( \frac{x}{|x|} \cdot \nabla u^{\textrm{scat}} - ik u^{\textrm{scat}} \right ) + &\to 0 & \textrm{ as } |x|\to \infty \; , + \end{align*} + +The Green function for the Helmholtz equation is + +.. math:: + + G_k (x,y) = \frac{i}{4} H_0^{(1)}( k|x-y|) \; . + +Analogous to the above, this Green function can be used to define +single and double layer potential operators + +.. math:: + + \begin{align*} + [S\sigma](x) &:= \int_\Gamma G_k(x,y) \sigma(y) ds(y) \\ + [D\sigma](x) &:= \int_\Gamma n(y)\cdot \nabla_y G_k(x,y) \sigma(y) ds(y) + \end{align*} + +A robust choice for the layer potential representation for this problem is +a *combined field* layer potential, which is a linear combination +of the single and double layer potentials: + +.. math:: + + u^{\textrm{scat}}(x) = [(D - ik S)\sigma](x) \; . + +Then, imposing the boundary conditions on this representation +results in the equation + +.. math:: + + \begin{align*} + -u^{\textrm{inc}}(x_0) &= \lim_{x\in \mathbb{R}^2\setminus \Omega, x\to x_0} [(D-ik S)\sigma](x) \\ + &= \frac{1}{2} \sigma(x_0) + [ (\mathcal{D} -ik \mathcal{S})\sigma ](x_0) + \end{align*} + +where we have used the exterior jump condition for the double layer potential. +As above, the integrals in the operators restricted to the boundary must sometimes +be interpreted in the principal value or Hadamard finite-part sense. +The above is a second kind integral equation and is invertible. + + +As before, this is relatively straightforward to implement in :matlab:`chunkie` +using the built-in kernels: + +.. include:: ../../chunkie/guide/guide_simplebvps.m + :literal: + :code: matlab + :start-after: % START BASIC SCATTERING + :end-before: % END BASIC SCATTERING + + +.. image:: ../../chunkie/guide/guide_simplebvps_basicscattering.png + :width: 500px + :alt: acoustic scattering around a peanut shape + :align: center + From b810dc0d74a7b4a4e760618295acfeeca68ca478 Mon Sep 17 00:00:00 2001 From: Travis Askham Date: Sat, 8 Jun 2024 19:46:53 -0400 Subject: [PATCH 4/7] moving docs branch fmm2d to same. fixing some minor docs issues. cleaning demo folder slightly --- chunkie/@chunker/chunker.m | 2 ++ chunkie/demo/addpaths_loc.m | 4 +--- chunkie/demo/demo_scatter.m | 6 +++--- chunkie/fmm2d | 2 +- docs/guide.rst | 3 +++ docs/requirements.txt | 1 + 6 files changed, 11 insertions(+), 7 deletions(-) diff --git a/chunkie/@chunker/chunker.m b/chunkie/@chunker/chunker.m index bc8f6c4..e0e2b35 100644 --- a/chunkie/@chunker/chunker.m +++ b/chunkie/@chunker/chunker.m @@ -31,6 +31,7 @@ % precomputed Legendre nodes/weights (optional) % obj = addchunk(obj,nchadd) - add nchadd chunks to the structure % (initialized with zeros) +% obj = obj.move(r0,r1,trotat,scale) - translate, rotate, etc % obj = makedatarows(obj,nrows) - add nrows rows to the data storage. % [obj,info] = sort(obj) - sort the chunks so that adjacent chunks are % stored sequentially @@ -340,6 +341,7 @@ [obj,info] = sort(obj) [rn,dn,d2n,dist,tn,ichn] = nearest(obj,ref,ich,opts,u,xover,aover) obj = reverse(obj) + obj = move(obj,r0,r1,trotat,scale) rmin = min(obj) rmax = max(obj) whts = whts(obj) diff --git a/chunkie/demo/addpaths_loc.m b/chunkie/demo/addpaths_loc.m index 42927d7..bb32dd6 100644 --- a/chunkie/demo/addpaths_loc.m +++ b/chunkie/demo/addpaths_loc.m @@ -1,5 +1,3 @@ function addpaths_loc() -addpath('../'); -addpath(genpath('../FLAM')); -addpath('../fmm2d/matlab/'); +run('../../startup.m'); diff --git a/chunkie/demo/demo_scatter.m b/chunkie/demo/demo_scatter.m index e87662c..e882ad9 100644 --- a/chunkie/demo/demo_scatter.m +++ b/chunkie/demo/demo_scatter.m @@ -110,7 +110,7 @@ h=pcolor(xxtarg,yytarg,imag(zztarg)); set(h,'EdgeColor','none') clim([-maxu,maxu]) -colormap(brewermap([],'RdBu')); +colormap(redblue); hold on plot(chnkr,'k','LineWidth',2) axis equal tight @@ -123,7 +123,7 @@ h=pcolor(xxtarg,yytarg,imag(zztarg)); set(h,'EdgeColor','none') clim([-maxu,maxu]) -colormap(brewermap([],'RdBu')); +colormap(redblue); hold on plot(chnkr,'k','LineWidth',2) axis equal tight @@ -137,7 +137,7 @@ h=pcolor(xxtarg,yytarg,imag(zztarg)); set(h,'EdgeColor','none') clim([-maxu,maxu]) -colormap(brewermap([],'RdBu')); +colormap(redblue); hold on plot(chnkr,'k','LineWidth',2) axis equal tight diff --git a/chunkie/fmm2d b/chunkie/fmm2d index dda60cd..1ccfd74 160000 --- a/chunkie/fmm2d +++ b/chunkie/fmm2d @@ -1 +1 @@ -Subproject commit dda60cd527f14dcf9bbe38759115278f1412bfbf +Subproject commit 1ccfd7446f764f78c780bd6e5dc455d3c9c80b3d diff --git a/docs/guide.rst b/docs/guide.rst index c2b307c..1f1bc0c 100644 --- a/docs/guide.rst +++ b/docs/guide.rst @@ -1,6 +1,9 @@ Chunkie User Guide =================== +Apologies that this guide is still under construction. There +are examples for the most common uses. + Detailed documentation of all high-level functions and classes can be obtained by viewing the source file or by typing "help [function name]" in a MATLAB command window: diff --git a/docs/requirements.txt b/docs/requirements.txt index 483a4e9..4cf4ee2 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1 +1,2 @@ sphinx_rtd_theme +sphinx-math-dollar From fcf6d78be872548158a3c98f1a173d48893f54d1 Mon Sep 17 00:00:00 2001 From: Travis Askham Date: Sat, 8 Jun 2024 19:57:24 -0400 Subject: [PATCH 5/7] modernizing addpaths_loc (maybe just remove later?) --- chunkie/guide/addpaths_loc.m | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/chunkie/guide/addpaths_loc.m b/chunkie/guide/addpaths_loc.m index 92107db..bb32dd6 100644 --- a/chunkie/guide/addpaths_loc.m +++ b/chunkie/guide/addpaths_loc.m @@ -1,6 +1,3 @@ function addpaths_loc() -addpath('../'); -addpath('../fmm2d/matlab/'); -addpath('../FLAM'); -addpath(genpath_ex('../FLAM')); \ No newline at end of file +run('../../startup.m'); From 3514cf78bfa969e500990adabc22622427d9d670 Mon Sep 17 00:00:00 2001 From: Travis Askham Date: Sat, 8 Jun 2024 20:02:53 -0400 Subject: [PATCH 6/7] update branding --- docs/getchunkie.rst | 4 ++-- docs/guide.rst | 2 +- docs/index.rst | 34 +++++++++++++++++----------------- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/getchunkie.rst b/docs/getchunkie.rst index 82d2c23..8fa6f5f 100644 --- a/docs/getchunkie.rst +++ b/docs/getchunkie.rst @@ -1,4 +1,4 @@ -Get Chunkie +Get chunkIE ============ Installation Instructions @@ -50,4 +50,4 @@ Troubleshooting sudo yum install make gcc gcc-c++ gcc-gfortran libgomp -- If installing without submodules, chunkie depends on `FLAM `_, and optionally on the `fmm2d `_ repository. Parts of the library will not function without FLAM and its subdirectories included in the matlab path. +- If installing without submodules, chunkIE depends on `FLAM `_, and optionally on the `fmm2d `_ repository. Parts of the library will not function without FLAM and its subdirectories included in the matlab path. diff --git a/docs/guide.rst b/docs/guide.rst index 1f1bc0c..d12985d 100644 --- a/docs/guide.rst +++ b/docs/guide.rst @@ -1,4 +1,4 @@ -Chunkie User Guide +chunkIE User Guide =================== Apologies that this guide is still under construction. There diff --git a/docs/index.rst b/docs/index.rst index ce8bbec..51a30ba 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,4 +1,4 @@ -.. chunkie documentation master file, created by +.. chunkIE documentation master file, created by sphinx-quickstart on Tue Apr 28 21:16:39 2020. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. @@ -6,7 +6,7 @@ .. role:: matlab(code) :language: matlab -chunkie +chunkIE ========== .. image:: assets/images/scatter_star_trim.png @@ -15,13 +15,13 @@ chunkie :align: center -chunkie is a MATLAB package for solving partial differential -equations in two dimensional domains. The name "chunkie" derives +chunkIE is a MATLAB package for solving partial differential +equations in two dimensional domains. The name "chunkIE" derives from the use of chunks (panels with scaled Legendre nodes) to discretize the domain boundary and the use of an integral equation method to solve the PDE. -With chunkie, you can solve the Helmholtz equation on an exterior +With chunkIE, you can solve the Helmholtz equation on an exterior domain in a few lines of MATLAB. The code below defines and solves a scattering problem, producing the image above: @@ -77,39 +77,39 @@ a scattering problem, producing the image above: Features -------- -- easy-to-use: most chunkie functionality only requires that +- easy-to-use: most chunkIE functionality only requires that you specify two things, the geometry (as a "chunker" object) and the integral kernel (as a "kernel" object). The distribution includes pre-defined kernels for the Laplace, Helmholtz, and Stokes PDEs and convenient tools for visualizing domains and plotting solutions. -- capable: chunkie uses high order accurate quadrature rules +- capable: chunkIE uses high order accurate quadrature rules and fast algorithms to provide accurate solutions with linear - scaling. The chunkie utilities can be used to solve singular + scaling. The chunkIE utilities can be used to solve singular problems on domains with corners and multiple material junctions with relative ease. - flexible: allows you to define your own integral kernels and use the quadrature routines in a modular fashion. -How to Get Chunkie +How to Get chunkIE ------------------- -- `Get chunkie `_ (includes installation instructions +- `Get chunkIE `_ (includes installation instructions and troubleshooting guide) - `Source Code `_ -Using Chunkie +Using chunkIE ---------------- -The `chunkie guide `_ -provides an overview of the chunkie approach to PDEs and a detailed -look at chunkie's capabilities. +The `chunkIE guide `_ +provides an overview of the chunkIE approach to PDEs and a detailed +look at chunkIE's capabilities. Gallery -------- -The `gallery `_ has examples of chunkie applications +The `gallery `_ has examples of chunkIE applications submitted by users. Contributing @@ -127,8 +127,8 @@ License ------- The project is licensed under a modified BSD 3-clause -license. - +license. See `repository `_ +for license details. From 8aeb91eda26c5c65b4371c294f4806efe723556f Mon Sep 17 00:00:00 2001 From: Travis Askham Date: Sat, 8 Jun 2024 20:05:26 -0400 Subject: [PATCH 7/7] more branding --- docs/conf.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index ac4b66d..6022d31 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -42,9 +42,9 @@ master_doc = 'index' # General information about the project. -project = 'chunkie' -copyright = '2020, chunkie team' -author = 'chunkie team' +project = 'chunkIE' +copyright = '2024, chunkIE team' +author = 'chunkIE team' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the @@ -135,8 +135,8 @@ # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ - (master_doc, 'chunkie.tex', 'chunkie Documentation', - 'chunkie team', 'manual'), + (master_doc, 'chunkie.tex', 'chunkIE Documentation', + 'chunkIE team', 'manual'), ] @@ -145,7 +145,7 @@ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ - (master_doc, 'chunkie', 'chunkie Documentation', + (master_doc, 'chunkIE', 'chunkIE Documentation', [author], 1) ] @@ -156,8 +156,8 @@ # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ - (master_doc, 'chunkie', 'chunkie Documentation', - author, 'chunkie', 'One line description of project.', + (master_doc, 'chunkIE', 'chunkIE Documentation', + author, 'chunkIE', 'One line description of project.', 'Miscellaneous'), ]