<html>#2398: Multipole: Default (midpoint) integration method incorrectly implemented, yielding wrong results... especially with m=odd modes
<table style='border-spacing: 1ex 0pt; '>
<tr><td style='text-align:right'> Reporter:</td><td>Zach Etienne</td></tr>
<tr><td style='text-align:right'>   Status:</td><td>new</td></tr>
<tr><td style='text-align:right'>Milestone:</td><td></td></tr>
<tr><td style='text-align:right'>  Version:</td><td></td></tr>
<tr><td style='text-align:right'>     Type:</td><td>bug</td></tr>
<tr><td style='text-align:right'> Priority:</td><td>major</td></tr>
<tr><td style='text-align:right'>Component:</td><td>EinsteinToolkit thorn</td></tr>
</table>

<p>Multipole works by first interpolating (e.g., psi4) data onto a uniform grid in theta and phi, such that</p>
<p>theta = [0,pi], where theta = 0,dth,2 dth, …, N dth=pi</p>
<p>and</p>
<p>phi = [0, 2 pi], where phi = 0, dph, 2 dph, …, N dph=2 pi</p>
<p>(See <a data-is-external-link="true" href="https://bitbucket.org/einsteintoolkit/einsteinanalysis/src/26d17d9edfecafd0c516e38fe8343bdc1d11eb5d/Multipole/src/utils.cc#lines-322" rel="nofollow">https://bitbucket.org/einsteintoolkit/einsteinanalysis/src/26d17d9edfecafd0c516e38fe8343bdc1d11eb5d/Multipole/src/utils.cc#lines-322</a> )</p>
<p><em>Clearly these are not midpoints.</em> Further the integration for midpoint method proceeds as (<a data-is-external-link="true" href="https://bitbucket.org/einsteintoolkit/einsteinanalysis/src/26d17d9edfecafd0c516e38fe8343bdc1d11eb5d/Multipole/src/integrate.cc#lines-51" rel="nofollow">https://bitbucket.org/einsteintoolkit/einsteinanalysis/src/26d17d9edfecafd0c516e38fe8343bdc1d11eb5d/Multipole/src/integrate.cc#lines-51</a>):</p>
<div class="codehilite language-c++"><pre><span></span>  <span class="k">for</span> <span class="p">(</span><span class="n">iy</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">iy</span> <span class="o">&lt;=</span> <span class="n">ny</span><span class="p">;</span> <span class="n">iy</span><span class="o">++</span><span class="p">)</span>
    <span class="k">for</span> <span class="p">(</span><span class="n">ix</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">ix</span> <span class="o">&lt;=</span> <span class="n">nx</span><span class="p">;</span> <span class="n">ix</span><span class="o">++</span><span class="p">)</span>
      <span class="n">integrand_sum</span> <span class="o">+=</span> <span class="n">f</span><span class="p">[</span><span class="n">idx</span><span class="p">(</span><span class="n">ix</span><span class="p">,</span><span class="n">iy</span><span class="p">)];</span>

  <span class="k">return</sp
<p>--<br/>
Ticket URL: <a href='https://bitbucket.org/einsteintoolkit/tickets/issues/2398/multipole-default-midpoint-integration'>https://bitbucket.org/einsteintoolkit/tickets/issues/2398/multipole-default-midpoint-integration</a></p>
</html>