Jekyll2024-09-04T18:08:59+00:00https://duetosymmetry.com/Leo C. SteinPhysics Professor @ U of MS. Specializing in gravity, general relativity, black holes, gravitational waves, numerical relativityLeo C. Steinlcstein@olemiss.eduFonts/sizes in matplotlib figures for LaTeX publications2024-08-18T00:00:00+00:002024-08-18T00:00:00+00:00https://duetosymmetry.com/code/latex-mpl-fig-tips<p>Here are a few tips for making your
<a href="https://matplotlib.org/">matplotlib</a> figures look really “right” in a
LaTeX publication.</p>
<p>First, here’s what an mpl figure looks like with all the default
settings:
<a href="https://duetosymmetry.com/images/latex-mpl-fig-tips/default_all.png" class="align-center" style="width: 80%"><img src="https://duetosymmetry.com/images/latex-mpl-fig-tips/default_all.png" alt="" /></a></p>
<p>You probably already know the first tip: Let’s make it use LaTeX to
render math! You can set a certain one of the
<a href="https://matplotlib.org/stable/users/explain/customizing.html"><code class="highlighter-rouge">rcParams</code></a>:</p>
<div class="language-py highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">mpl</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s">'text.usetex'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">True</span>
</code></pre></div></div>
<p>You only get a slight improvement:
<a href="https://duetosymmetry.com/images/latex-mpl-fig-tips/usetex_True.png" class="align-center" style="width: 80%"><img src="https://duetosymmetry.com/images/latex-mpl-fig-tips/usetex_True.png" alt="" /></a></p>
<p>You can see that some fonts don’t match—the non-LaTeX text isn’t in
Knuth’s famous font, Computer Modern. Ok, there are more <code class="highlighter-rouge">rcParams</code>
to tweak. Now let’s use an <a href="https://matplotlib.org/stable/users/explain/customizing.html#customizing-with-style-sheets">mplstyle
file</a>
to put all our customizations in one place, so we can reuse it in all
our plotting scripts. An example mplstyle file might start:</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>text.usetex: True
text.latex.preamble: \usepackage{amsmath}\usepackage{amssymb}
font.family: serif
font.serif: Computer Modern
savefig.bbox: tight
savefig.format: pdf
...
</code></pre></div></div>
<p>Plus any other customizations you want, like making your ticks face
inward, turning on a horizontal grid, etc. Then in your python, use
it like so (assuming the file is named <code class="highlighter-rouge">paper.mplstyle</code>):</p>
<div class="language-py highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">plt</span><span class="o">.</span><span class="n">style</span><span class="o">.</span><span class="n">use</span><span class="p">(</span><span class="s">"paper.mplstyle"</span><span class="p">)</span>
</code></pre></div></div>
<p>Ok, now we got all the fonts we wanted:
<a href="https://duetosymmetry.com/images/latex-mpl-fig-tips/use_style.png" class="align-center" style="width: 80%"><img src="https://duetosymmetry.com/images/latex-mpl-fig-tips/use_style.png" alt="" /></a></p>
<p>Unfortunately, if we include it in a LaTeX document, it’s not going to
look right:
<a href="https://duetosymmetry.com/images/latex-mpl-fig-tips/latex-unspecified-size.png" class="align-center" style="width: 80%"><img src="https://duetosymmetry.com/images/latex-mpl-fig-tips/latex-unspecified-size.png" alt="" /></a></p>
<p>The main problem is <strong>What matplotlib thinks is 10pt font does not end
up as 10pt font in the LaTeX document</strong>. And why is that? Because the
mpl <code class="highlighter-rouge">figsize</code> is different from the size of the figure in the PDF.</p>
<p>If a journal’s style guide tells you the widths of their columns, you
have to use those when generating your figure in matplotlib. If it
<em>doesn’t</em> tell you the width, you can use the <a href="https://ctan.org/pkg/printlen">printlen LaTeX
package</a> to print it out inside your
document, e.g.:</p>
<div class="language-tex highlighter-rouge"><div class="highlight"><pre class="highlight"><code>...
<span class="c">% In the preamble</span>
<span class="k">\usepackage</span><span class="p">{</span>printlen<span class="p">}</span>
...
<span class="c">% In a figure environment</span>
<span class="nt">\begin{center}</span>
<span class="k">\includegraphics</span><span class="na">[width=\columnwidth]</span><span class="p">{</span>lovely<span class="p">_</span>figure<span class="p">}</span>
<span class="nt">\end{center}</span>
<span class="k">\caption</span><span class="p">{</span><span class="c">%</span>
<span class="k">\label</span><span class="p">{</span>fig:lovely<span class="p">}</span>
In this figure caption, I can see that the width of
one column is <span class="k">\printlength</span><span class="p">{</span><span class="k">\columnwidth</span><span class="p">}</span>.<span class="p">}</span>
...
</code></pre></div></div>
<p>Or to get any other length you want, e.g. <code class="highlighter-rouge">\textwidth</code>. (If you want to
view a summary of the current page geometry with many lengths, try the
<a href="https://ctan.org/pkg/layout">layout package</a>.) Once we find the
correct length, we use it in our python script:</p>
<div class="language-py highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">pt</span> <span class="o">=</span> <span class="mf">1.</span><span class="o">/</span><span class="mf">72.27</span> <span class="c"># Hundreds of years of history... 72.27 points to an inch.</span>
<span class="n">jour_sizes</span> <span class="o">=</span> <span class="p">{</span><span class="s">"PRD"</span><span class="p">:</span> <span class="p">{</span><span class="s">"onecol"</span><span class="p">:</span> <span class="mf">246.</span><span class="o">*</span><span class="n">pt</span><span class="p">,</span> <span class="s">"twocol"</span><span class="p">:</span> <span class="mf">510.</span><span class="o">*</span><span class="n">pt</span><span class="p">},</span>
<span class="s">"CQG"</span><span class="p">:</span> <span class="p">{</span><span class="s">"onecol"</span><span class="p">:</span> <span class="mf">374.</span><span class="o">*</span><span class="n">pt</span><span class="p">},</span> <span class="c"># CQG is only one column</span>
<span class="c"># Add more journals below. Can add more properties to each journal</span>
<span class="p">}</span>
<span class="n">my_width</span> <span class="o">=</span> <span class="n">jour_sizes</span><span class="p">[</span><span class="s">"PRD"</span><span class="p">][</span><span class="s">"onecol"</span><span class="p">]</span>
<span class="c"># Our figure's aspect ratio</span>
<span class="n">golden</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="mi">5</span> <span class="o">**</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span>
<span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span> <span class="o">=</span> <span class="p">(</span><span class="n">my_width</span><span class="p">,</span> <span class="n">my_width</span><span class="o">/</span><span class="n">golden</span><span class="p">))</span>
</code></pre></div></div>
<p>At last, our fonts and sizes from our matplotlib figures will be as
intended in our LaTeX document:
<a href="https://duetosymmetry.com/images/latex-mpl-fig-tips/latex-specified-size.png" class="align-center" style="width: 80%"><img src="https://duetosymmetry.com/images/latex-mpl-fig-tips/latex-specified-size.png" alt="" /></a></p>
<p>You can get an example mplstyle file, the python code that made all
the figures, and the LaTeX code that made the example document <a href="https://github.com/duetosymmetry/latex-mpl-fig-tips">at
this github
repository</a>.</p>Leo C. Steinlcstein@olemiss.eduHere are a few tips for making your matplotlib figures look really “right” in a LaTeX publication.Reuse ssh connections for hosts with 2FA (with emacs bonus)2024-08-15T00:00:00+00:002024-08-15T00:00:00+00:00https://duetosymmetry.com/code/reuse-ssh-connection-hpc-and-emacs<p>The ssh protocol is smart enough that you can open a control ‘master’
connection and reuse it to logically “connect” to the same machine as
many times as you want (e.g. have many shells, tunnel traffic<sup id="fnref:1"><a href="#fn:1" class="footnote">1</a></sup>, etc.)
all over a single underlying connection.</p>
<p>This is really convenient for hosts that use two-factor authentication
(2FA) when you connect—for example, a lot of HPC head nodes will
prompt you to open Duo Mobile to authenticate. <strong>If you reuse your
ssh connection, you do not have to re-authenticate</strong> your 2FA
credentials every time, as long as your control connection is still
open.</p>
<p>Put this into your <code class="highlighter-rouge">.ssh/config</code> file:</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Host *
ControlMaster auto
ControlPath /tmp/ssh-%r@%h:%p
</code></pre></div></div>
<p>The <code class="highlighter-rouge">%r@%h:%p</code> magic will keep a separate socket for each (username,
host, port). Of course you may want to only enable it for certain
hosts—in that case put the <code class="highlighter-rouge">ControlMaster</code> and <code class="highlighter-rouge">ControlPath</code>
keywords into the corresponding <code class="highlighter-rouge">Host</code> sections.</p>
<p>Now for the emacs bonus (and the real reason I’m writing this down,
lest I forget). The
<a href="https://www.gnu.org/software/emacs/manual/html_node/tramp/index.html">tramp</a>
package lets you access remote files in your local emacs (rather than
running emacs on the remote server). This means you don’t have to
worry about old versions of emacs on some cluster, maintain multiple
emacs configurations, etc. In emacs you visit
<code class="highlighter-rouge">/ssh:user@host:/path/to/file</code> and emacs transparently edits the
remote file.<sup id="fnref:2"><a href="#fn:2" class="footnote">2</a></sup> But if you need to do 2FA, your flow is interrupted or
worse emacs gets confused by the 2FA prompt. So, best if tramp uses
control connections if they’re available. Therefore you should
configure <a href="https://www.gnu.org/software/emacs/manual/html_node/tramp/Ssh-setup.html#Using-ssh-connection-sharing-1">a certain
variable</a>
interactively with</p>
<div class="no-copy highlighter-rouge"><div class="highlight"><pre class="highlight"><code>M-x customize-variable RET
tramp-use-ssh-controlmaster-options RET
nil RET
</code></pre></div></div>
<p>or by evaluating the elisp</p>
<div class="language-elisp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">(</span><span class="nv">customize-set-variable</span> <span class="ss">'tramp-use-ssh-controlmaster-options</span> <span class="no">nil</span><span class="p">)</span>
</code></pre></div></div>
<p>The value <code class="highlighter-rouge">nil</code> tells tramp to use whatever <code class="highlighter-rouge">Control*</code> variables
you’ve set in your <code class="highlighter-rouge">.ssh/config</code> file—so it can reuse a control
connection you already have open.</p>
<div class="footnotes">
<ol>
<li id="fn:1">
<p>See e.g.
<a href="https://duetosymmetry.com/code/ssh-ipython-notebook-magic/">this earlier post</a>
about tunneling jupyter notebooks running on the remote. <a href="#fnref:1" class="reversefootnote">↩</a></p>
</li>
<li id="fn:2">
<p>You should set up host aliases with your username specified in
your <code class="highlighter-rouge">.ssh/config</code> file. Then you only need to visit <code class="highlighter-rouge">/ssh:alias:/path/to/file</code> <a href="#fnref:2" class="reversefootnote">↩</a></p>
</li>
</ol>
</div>Leo C. Steinlcstein@olemiss.eduThe ssh protocol is smart enough that you can open a control ‘master’ connection and reuse it to logically “connect” to the same machine as many times as you want (e.g. have many shells, tunnel traffic1, etc.) all over a single underlying connection. See e.g. ↩Fetch github PRs from the command line2024-08-14T00:00:00+00:002024-08-14T00:00:00+00:00https://duetosymmetry.com/code/git-fetch-github-PRs<p><strong>TL;DR</strong> For a single repo, add a special
“<a href="https://git-scm.com/book/en/v2/Git-Internals-The-Refspec">refspec</a>”
for a remote (e.g. <code class="highlighter-rouge">upstream</code>):</p>
<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git config <span class="nt">--add</span> remote.upstream.fetch <span class="s2">"+refs/pull/*/head:refs/pullreqs/*"</span>
</code></pre></div></div>
<p>which will allow you to do things like this:</p>
<div class="no-copy highlighter-rouge"><div class="highlight"><pre class="highlight"><code>leo@conservation:spectre> git fetch upstream
remote: Enumerating objects...
...
* [new ref] refs/pull/6218/head -> refs/pullreqs/6218
leo@conservation:spectre> git log refs/pullreqs/6218 # Or git diff, any git command
commit 5de7c8b1c54df99587f3a2e923e99b8db7a16f9f (HEAD)
Author: Carter Anderson <cra3@williams.edu>
Date: Wed Aug 14 13:35:23 2024 -0400
Add option for higher dimension EOSes to Spec initial data
...
leo@conservation:spectre> git checkout refs/pullreqs/6218
leo@conservation:spectre> git switch -c workOnHelpingThisPR
</code></pre></div></div>
<p>and then you’ll be at work on top of this PR. This means you don’t
have to go find and add the remote for this PR.</p>
<p>I learned this magic refspec from the
<a href="https://magit.vc/manual/forge.html">forge</a> package for
<a href="https://magit.vc/">magit</a> (which is itself an
<a href="https://www.gnu.org/software/emacs/">emacs</a> package). If you want to
become one with git, I highly recommend magit.</p>
<h1 id="save-for-future-convenience">Save for future convenience</h1>
<p>You can make yourself a global git alias to automate this, so you
don’t have to remember the magic incantation for the above refspec.
Run the following one-liner (though it is a very long line):</p>
<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git config <span class="nt">--global</span> alias.addFetchGithubPRs <span class="s1">'!MYREMOTE=${1:-origin}; if git remote get-url "$MYREMOTE" >/dev/null 2>&1; then if git config --get-all remote."$MYREMOTE".fetch | grep -q "+refs/pull/\*/head:refs/pullreqs/\*"; then echo Found correct refspec; else git config --add remote."$MYREMOTE".fetch "+refs/pull/*/head:refs/pullreqs/*"; echo Added refspec; fi ; else echo Remote not found: "$MYREMOTE"; fi #'</span>
</code></pre></div></div>
<p>Now from inside your favorite repo, you can do:</p>
<div class="no-copy highlighter-rouge"><div class="highlight"><pre class="highlight"><code>leo@conservation:myrepo> git addFetchGithubPRs [remoteName]
Added refspec
</code></pre></div></div>
<p>The default <code class="highlighter-rouge">remoteName</code> is <code class="highlighter-rouge">origin</code>, but by changing the alias above,
you can make it be something else (like <code class="highlighter-rouge">upstream</code>). If the remote
doesn’t exist, you get an error. If the refspec already existed, it
will tell you that.</p>Leo C. Steinlcstein@olemiss.eduTL;DR For a single repo, add a special “refspec” for a remote (e.g. upstream): git config --add remote.upstream.fetch "+refs/pull/*/head:refs/pullreqs/*" which will allow you to do things like this: ``` leo@conservation:spectre> git fetch upstream remote: Enumerating objects… … [new ref] refs/pull/6218/head -> refs/pullreqs/6218 leo@conservation:spectre> git log refs/pullreqs/6218 # Or git diff, any git command commit 5de7c8b1c54df99587f3a2e923e99b8db7a16f9f (HEAD) Author: Carter Anderson cra3@williams.edu Date: Wed Aug 14 13:35:23 2024 -0400High-Precision Ringdown Surrogate Model for Non-Precessing Binary Black Holes2024-08-13T00:00:00+00:002024-08-13T00:00:00+00:00https://duetosymmetry.com/pubs/3dq8_RD<p class="align-right" style="width: 350px; margin: 2em 0 0 1em;"><img src="https://duetosymmetry.com/images/3dq8_RD_vs_SXS:BBH:1450.png" alt="" /></p>
<blockquote>
<p>Highly precise and robust waveform models are required as
improvements in detector sensitivity enable us to test general
relativity with more precision than ever before. In this work, we
introduce a spin-aligned surrogate ringdown model. This ringdown
surrogate, NRSur3dq8_RD, is built with numerical waveforms produced
using Cauchy-characteristic evolution. In addition, these waveforms
are in the superrest frame of the remnant black hole allowing us to
do a correct analysis of the ringdown spectrum. The novel prediction
of our surrogate model is complex-valued quasinormal mode (QNM)
amplitudes, with median relative errors of <script type="math/tex">10^{-2}-10^{-3}</script> over the
parameter space. Like previous remnant surrogates, we also predict
the remnant black hole’s mass and spin. The QNM mode amplitude
errors translate into median errors on ringdown waveforms of
<script type="math/tex">10^{-4}</script>. The high accuracy and QNM mode content provided by our
surrogate will enable high-precision ringdown analyses such as tests
of general relativity. Our ringdown model is publicly available
through the python package surfinBH.</p>
</blockquote>Leo C. Steinlcstein@olemiss.eduHighly precise and robust waveform models are required as improvements in detector sensitivity enable us to test general relativity with more precision than ever before. In this work, we introduce a spin-aligned surrogate ringdown model. This ringdown surrogate, NRSur3dq8_RD, is built with numerical waveforms produced using Cauchy-characteristic evolution. In addition, these waveforms are in the superrest frame of the remnant black hole allowing us to do a correct analysis of the ringdown spectrum. The novel prediction of our surrogate model is complex-valued quasinormal mode (QNM) amplitudes, with median relative errors of over the parameter space. Like previous remnant surrogates, we also predict the remnant black hole’s mass and spin. The QNM mode amplitude errors translate into median errors on ringdown waveforms of . The high accuracy and QNM mode content provided by our surrogate will enable high-precision ringdown analyses such as tests of general relativity. Our ringdown model is publicly available through the python package surfinBH.A Review of Gravitational Memory and BMS Frame Fixing in Numerical Relativity2024-05-16T00:00:00+00:002024-05-16T00:00:00+00:00https://duetosymmetry.com/pubs/memory-BMS-review<p class="align-right" style="width: 350px; margin: 2em 0 0 1em;"><img src="https://duetosymmetry.com/images/ScriCylinderST.jpg" alt="" /></p>
<blockquote>
<p>Gravitational memory effects and the BMS freedoms exhibited at
future null infinity have recently been resolved and utilized in
numerical relativity simulations. With this, gravitational wave
models and our understanding of the fundamental nature of general
relativity have been vastly improved. In this paper, we review the
history and intuition behind memory effects and BMS symmetries, how
they manifest in gravitational waves, and how controlling the
infinite number of BMS freedoms of numerical relativity simulations
can crucially improve the waveform models that are used by
gravitational wave detectors. We reiterate the fact that, with
memory effects and BMS symmetries, not only can these
next-generation numerical waveforms be used to observe
never-before-seen physics, but they can also be used to test GR and
learn new astrophysical information about our universe.</p>
</blockquote>Leo C. Steinlcstein@olemiss.eduGravitational memory effects and the BMS freedoms exhibited at future null infinity have recently been resolved and utilized in numerical relativity simulations. With this, gravitational wave models and our understanding of the fundamental nature of general relativity have been vastly improved. In this paper, we review the history and intuition behind memory effects and BMS symmetries, how they manifest in gravitational waves, and how controlling the infinite number of BMS freedoms of numerical relativity simulations can crucially improve the waveform models that are used by gravitational wave detectors. We reiterate the fact that, with memory effects and BMS symmetries, not only can these next-generation numerical waveforms be used to observe never-before-seen physics, but they can also be used to test GR and learn new astrophysical information about our universe.Imprints of Changing Mass and Spin on Black Hole Ringdown2024-04-22T00:00:00+00:002024-04-22T00:00:00+00:00https://duetosymmetry.com/pubs/changing-mass-spin-ringdown<p class="align-right" style="width: 350px; margin: 2em 0 0 1em;"><img src="https://duetosymmetry.com/images/nonlinear-phase-diff.png" alt="" /></p>
<blockquote>
<p>We numerically investigate the imprints of gravitational
radiation-reaction driven changes to a black hole’s mass and spin on
the corresponding ringdown waveform. We do so by comparing the
dynamics of a perturbed black hole evolved with the full (nonlinear)
versus linearized Einstein equations. As expected, we find that the
quasinormal mode amplitudes extracted from nonlinear evolution
deviate from their linear counterparts at third order in initial
perturbation amplitude. For perturbations leading to a change in the
black hole mass and spin of ∼5%, which is reasonable for a remnant
formed in an astrophysical merger, we find that nonlinear
distortions to the complex amplitudes of some quasinormal modes can
be as large as ∼50% at the peak of the waveform. Furthermore, the
change in the mass and spin results in a drift in the quasinormal
mode frequencies, which for large amplitude perturbations causes the
nonlinear waveform to rapidly dephase with respect to its linear
counterpart. These two nonlinear effects together create a large
distortion in both the amplitude and phase of the ringdown
gravitational waveform. Surprisingly, despite these nonlinear
effects creating significant deviations in the nonlinear waveform,
we show that a linear quasinormal mode model still performs quite
well from close to the peak amplitude onwards.</p>
</blockquote>Leo C. Steinlcstein@olemiss.eduWe numerically investigate the imprints of gravitational radiation-reaction driven changes to a black hole’s mass and spin on the corresponding ringdown waveform. We do so by comparing the dynamics of a perturbed black hole evolved with the full (nonlinear) versus linearized Einstein equations. As expected, we find that the quasinormal mode amplitudes extracted from nonlinear evolution deviate from their linear counterparts at third order in initial perturbation amplitude. For perturbations leading to a change in the black hole mass and spin of ∼5%, which is reasonable for a remnant formed in an astrophysical merger, we find that nonlinear distortions to the complex amplitudes of some quasinormal modes can be as large as ∼50% at the peak of the waveform. Furthermore, the change in the mass and spin results in a drift in the quasinormal mode frequencies, which for large amplitude perturbations causes the nonlinear waveform to rapidly dephase with respect to its linear counterpart. These two nonlinear effects together create a large distortion in both the amplitude and phase of the ringdown gravitational waveform. Surprisingly, despite these nonlinear effects creating significant deviations in the nonlinear waveform, we show that a linear quasinormal mode model still performs quite well from close to the peak amplitude onwards.Can a radiation gauge be horizon-locking?2024-04-16T00:00:00+00:002024-04-16T00:00:00+00:00https://duetosymmetry.com/pubs/IRG-horizon-locking<blockquote>
<p>In this short Note, I answer the titular question: Yes, a radiation
gauge can be horizon-locking. Radiation gauges are very common in
black hole perturbation theory. It’s also very convenient if a gauge
choice is horizon-locking, i.e. the location of the horizon is not
moved by a linear metric perturbation. Therefore it is doubly
convenient that a radiation gauge can be horizon-locking, when some
simple criteria are satisfied. Though the calculation is
straightforward, it seemed useful enough to warrant writing this
Note. Finally I show an example: the ℓ vector of the Hartle–Hawking
tetrad in Kerr satisfies all the conditions for ingoing radiation
gauge to keep the future horizon fixed.</p>
</blockquote>Leo C. Steinlcstein@olemiss.eduIn this short Note, I answer the titular question: Yes, a radiation gauge can be horizon-locking. Radiation gauges are very common in black hole perturbation theory. It’s also very convenient if a gauge choice is horizon-locking, i.e. the location of the horizon is not moved by a linear metric perturbation. Therefore it is doubly convenient that a radiation gauge can be horizon-locking, when some simple criteria are satisfied. Though the calculation is straightforward, it seemed useful enough to warrant writing this Note. Finally I show an example: the ℓ vector of the Hartle–Hawking tetrad in Kerr satisfies all the conditions for ingoing radiation gauge to keep the future horizon fixed.Optimizing post-Newtonian parameters and fixing the BMS frame for numerical-relativity waveform hybridizations2024-03-19T00:00:00+00:002024-03-19T00:00:00+00:00https://duetosymmetry.com/pubs/Hybridize-PN-BMS<p class="align-right" style="width: 350px; margin: 2em 0 0 1em;"><img src="https://duetosymmetry.com/images/PN-NR-handshake-1920.png" alt="" /></p>
<blockquote>
<p>Numerical relativity (NR) simulations of binary black holes provide
precise waveforms, but are typically too computationally expensive
to produce waveforms with enough orbits to cover the whole frequency
band of gravitational-wave observatories. Accordingly, it is
important to be able to hybridize NR waveforms with analytic,
post-Newtonian (PN) waveforms, which are accurate during the early
inspiral phase. We show that to build such hybrids, it is crucial to
both fix the Bondi-Metzner-Sachs (BMS) frame of the NR waveforms to
match that of PN theory, and optimize over the PN parameters. We
test such a hybridization procedure including all spin-weighted
spherical harmonic modes with |m|≤ℓ for ℓ≤8, using 29 NR waveforms
with mass ratios q≤10 and spin magnitudes |χ₁|,|χ₂|≤0.8. We find
that for spin-aligned systems, the PN and NR waveforms agree very
well. The difference is limited by the small nonzero orbital
eccentricity of the NR waveforms, or equivalently by the lack of
eccentric terms in the PN waveforms. To maintain full accuracy of
the simulations, the matching window for spin-aligned systems should
be at least 5 orbits long and end at least 15 orbits before
merger. For precessing systems, the errors are larger than for
spin-aligned cases. The errors are likely limited by the absence of
precession-related spin-spin PN terms. Using 10⁵M long NR waveforms,
we find that there is no optimal choice of the matching window
within this time span, because the hybridization result for
precessing cases is always better if using earlier or longer
matching windows. We provide the mean orbital frequency of the
smallest acceptable matching window as a function of the target
error between the PN and NR waveforms and the black hole spins.</p>
</blockquote>Leo C. Steinlcstein@olemiss.eduNumerical relativity (NR) simulations of binary black holes provide precise waveforms, but are typically too computationally expensive to produce waveforms with enough orbits to cover the whole frequency band of gravitational-wave observatories. Accordingly, it is important to be able to hybridize NR waveforms with analytic, post-Newtonian (PN) waveforms, which are accurate during the early inspiral phase. We show that to build such hybrids, it is crucial to both fix the Bondi-Metzner-Sachs (BMS) frame of the NR waveforms to match that of PN theory, and optimize over the PN parameters. We test such a hybridization procedure including all spin-weighted spherical harmonic modes with |m|≤ℓ for ℓ≤8, using 29 NR waveforms with mass ratios q≤10 and spin magnitudes |χ₁|,|χ₂|≤0.8. We find that for spin-aligned systems, the PN and NR waveforms agree very well. The difference is limited by the small nonzero orbital eccentricity of the NR waveforms, or equivalently by the lack of eccentric terms in the PN waveforms. To maintain full accuracy of the simulations, the matching window for spin-aligned systems should be at least 5 orbits long and end at least 15 orbits before merger. For precessing systems, the errors are larger than for spin-aligned cases. The errors are likely limited by the absence of precession-related spin-spin PN terms. Using 10⁵M long NR waveforms, we find that there is no optimal choice of the matching window within this time span, because the hybridization result for precessing cases is always better if using earlier or longer matching windows. We provide the mean orbital frequency of the smallest acceptable matching window as a function of the target error between the PN and NR waveforms and the black hole spins.Notes: Magnetostatic multipole expansion using STF tensors2023-08-27T06:00:00+00:002023-08-27T06:00:00+00:00https://duetosymmetry.com/notes/magnetostatics-stf-mpoles<script type="math/tex">
\newcommand{\pd}{\partial}
\newcommand{\cd}{\nabla}
\newcommand{\bs}{\boldsymbol}
\newcommand{\nn}{\nonumber}
</script>
<aside class="sidebar__right">
<nav class="toc">
<header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
<ul class="toc__menu" id="markdown-toc">
<li><a href="#refresher-electrostatic-stf-multipole-expansion" id="markdown-toc-refresher-electrostatic-stf-multipole-expansion">Refresher: Electrostatic STF multipole expansion</a></li>
<li><a href="#magnetostatic-multipole-expansion" id="markdown-toc-magnetostatic-multipole-expansion">Magnetostatic multipole expansion</a></li>
</ul>
</nav>
</aside>
<p>These notes are intended for students (or profs) aware of the
multipole expansion for electrostatics in terms of symmetric tracefree
(STF) tensors. Standard texts on electrodynamics (like Jackson)
hardly mention the STF version, though it is extremely well-known to
researchers in GR. After I developed these notes, <a href="https://julioparramartinez.me/">Julio
Parra-Martinez</a> pointed me to <a href="https://arxiv.org/abs/1202.4750">a paper
by Andreas Ross</a> which implicitly
includes these results, though I want to explain a bit more slowly.</p>
<h1 id="refresher-electrostatic-stf-multipole-expansion">Refresher: Electrostatic STF multipole expansion</h1>
<p>Before getting to magnetostatics, we’ll start with electrostatics.
This is easier since we only need to solve for the scalar potential,
which satisfies</p>
<div>
\begin{align}
\cd^2 \Phi = - \frac{\rho}{\epsilon_0} .
\end{align}
</div>
<p>We’re interested in the case where <script type="math/tex">\rho</script> vanishes outside of a
compact region. The most efficient way to get to the STF version of
the multipole expansion is to start from the Green’s function
solution,</p>
<div>
\begin{align}
\Phi(\bs{x}) = \frac{1}{4\pi\epsilon_0}
\int \frac{\rho(\bs{x}')}{|\bs{x}-\bs{x}'|} d^3\bs{x}' .
\end{align}
</div>
<p>We then take the function <script type="math/tex">1/|\bs{x}-\bs{x}'|</script> and perform a multivariate
Taylor series expansion about the point <script type="math/tex">\bs{x}'=0</script>, since far away from
the source, <script type="math/tex">|\bs{x}'| \ll |\bs{x}|</script>. This expansion is</p>
<div>
\begin{align}
\frac{1}{|\bs{x}-\bs{x}'|} &= \sum_{\ell=0}^\infty \frac{(-1)^\ell}{\ell!} x^{\prime j_1} x^{\prime j_2} \cdots x^{\prime j_\ell}
\pd_{j_1} \pd_{j_2} \cdots \pd_{j_\ell} \frac{1}{r}
\,, \\
&=
\sum_{\ell=0}^\infty \frac{(-1)^\ell}{\ell!}
(r')^\ell
n'^{j_1} n'^{j_2}\cdots n'^{j_\ell}
\pd_{j_1} \pd_{j_2} \cdots \pd_{j_\ell} \frac{1}{r}
.
\end{align}
</div>
<p>In the <script type="math/tex">\ell</script> index tensor <script type="math/tex">\pd_{j_1} \pd_{j_2} \cdots \pd_{j_\ell}
(1/r)</script>, all indices are obviously symmetric; they are also tracefree
away from the origin, where we get a delta function, owing to <script type="math/tex">\cd^2
(1/r) = -4\pi \delta_{(3)}(\bs{x})</script>. Since this tensor is symmetric
and tracefree (STF), we are free to take only the STF part of the
product of <script type="math/tex">\bs{x}'</script> direction vectors. We denote this with angle
brackets around the relevant indices,</p>
<div>
\begin{align}
\frac{1}{|\bs{x}-\bs{x}'|} &=
\sum_{\ell=0}^\infty \frac{(-1)^\ell}{\ell!}
x'^{\langle j_1} x'^{j_2}\cdots x'^{j_\ell\rangle}
\pd_{j_1} \pd_{j_2} \cdots \pd_{j_\ell} \frac{1}{r}
.
\end{align}
</div>
<p>Plugging this in to the Green’s function integral, we get</p>
<div>
\begin{align}
\Phi(\bs{x}) &= \frac{1}{4\pi\epsilon_{0}} \sum_{\ell=0}^{\infty}
\frac{(-1)^\ell}{\ell!}
\left(
\pd_{j_1} \pd_{j_2} \cdots \pd_{j_\ell} \frac{1}{r}
\right) M^{j_{1}j_{2}\cdots j_{\ell}} ,
\end{align}
</div>
<p>where we have defined the <script type="math/tex">\ell</script>th STF multipole tensor of the
source as</p>
<div>
\begin{align}
M^{j_{1}j_{2}\cdots j_{\ell}} \equiv \int
\rho(\bs{x}) x^{\langle j_1} x^{j_2} \cdots x^{j_\ell \rangle}
\ d^{3} \bs{x}
.
\end{align}
</div>
<h1 id="magnetostatic-multipole-expansion">Magnetostatic multipole expansion</h1>
<p>We can apply our results from the electrostatic multipole expansion to
magnetostatics, using the potential formulation. In magnetostatics,
we are trying to find a magnetic field <script type="math/tex">\bs{B}(\bs{x})</script> satisfying</p>
<div>
\begin{align}
\cd\times\bs{B} &= \mu_{0} \bs{J}\,, & \text{(static)}
\end{align}
</div>
<p>where as usual <script type="math/tex">\cd\cdot\bs{B}=0</script>, and in statics, conservation of
charge demands that <script type="math/tex">\cd\cdot\bs{J}=0</script>. Now we go to the potential
formulation, <script type="math/tex">\bs{B}=\cd\times\bs{A}</script>, and use our gauge freedom to go
to Coulomb gauge, <script type="math/tex">\cd\cdot\bs{A}=0</script>. Plugging in, we are now trying
to solve</p>
<div>
\begin{align}
\cd^{2} A^{i} = - \mu_{0} J^{i} \,.
\end{align}
</div>
<p>In Cartesian coordinates, this is just three independent copies of the
Poisson equation, one for each Cartesian component <script type="math/tex">A^{i}</script>. Therefore
we can use the Green’s function for the scalar Laplacian’s for each
component,</p>
<div>
\begin{align}
A^{i}(\bs{x}) = \frac{\mu_{0}}{4\pi} \int
\frac{J^{i}(\bs{x}')}{|\bs{x}-\bs{x}'|} d^{3}\bs{x}'
\,.
\end{align}
</div>
<p>Just like in the electrostatic case, we Taylor expand
<script type="math/tex">\tfrac{1}{|\bs{x}-\bs{x}'|}</script>, pull things out of the integrals, etc.
Essentially, we are just making a replacement in the electrostatic
case: <script type="math/tex">\Phi \to A^{i}, \tfrac{\rho}{\epsilon_{0}} \to \mu_{0} J^{i}</script>.
This means our multipole moments get an extra index that does not
participate in the STF operation. As it stands, our solution is</p>
<div>
\begin{align}
\label{eq:A-mpole-external}
A^{i}(\bs{x}) &= \frac{\mu_{0}}{4\pi}
\sum_{\ell=0}^{\infty}
\frac{(-1)^\ell}{\ell!}
\left(
\pd_{j_1} \pd_{j_2} \cdots \pd_{j_\ell} \frac{1}{r}
\right) \mathcal{M}^{i;j_{1}j_{2}\cdots j_{\ell}} \,,
\end{align}
</div>
<p>where the magnetic multipole moments are defined as</p>
<div>
\begin{align}
\label{eq:Bstatic-mpole-tensor-def}
\mathcal{M}^{i;j_{1}j_{2}\cdots j_{\ell}}
\equiv
\int
J^{i}(\bs{x})
x^{\langle j_1} x^{j_2} \cdots x^{j_\ell \rangle}
\ d^{3} \bs{x}
\,,
\end{align}
</div>
<p>which are STF only on the <script type="math/tex">j_{1}\cdots j_{\ell}</script> indices after the
semicolon.</p>
<p>Notice that the <script type="math/tex">\ell=0</script> term vanishes – no magnetic monopoles! – by
conservation of charge. Integrate <script type="math/tex">(\cd\cdot\bs{J})x^{j}</script> and use
integration by parts:</p>
<div>
\begin{align}
\int (\pd_{i}J^{i})x^{j} \ d^{3} \bs{x}
=
-\int J^{i}\pd_{i}x^{j} \ d^{3} \bs{x}
=
-\int J^{i}\delta_{i}^{j} \ d^{3} \bs{x}
=
- \mathcal{M}^{i}
\,.
\end{align}
</div>
<p>The left hand side vanishes since in magnetostatics,
<script type="math/tex">\cd\cdot\bs{J}=0</script>. Therefore the <script type="math/tex">\ell=0</script> magnetic monopole moment
vanishes, <script type="math/tex">\mathcal{M}^{i}=0</script>.</p>
<p>Before handling the arbitrary <script type="math/tex">\ell</script> term, let’s write the dipole in
the traditional form seen in e.g. Griffiths. The traditional form for
a magnetic dipole is</p>
<div>
\begin{align}
\bs{A}_{\text{dip}} &= \frac{\mu_{0}}{4\pi} \frac{\bs{m}\times\bs{n}}{r^{2}} \,,\\
A^{i}_{\text{dip}} &= \frac{\mu_{0}}{4\pi} \epsilon^{ijk} m_{j} \pd_{k} \frac{-1}{r} \,.
\end{align}
</div>
<p>Here the magnetic dipole pseudo-vector is related to the 2-index
magnetic dipole tensor,</p>
<div>
\begin{align}
m^{i} &= \frac{1}{2} \epsilon^{ijk} \mathcal{M}_{k;j} \,, &
\mathcal{M}^{k;j} &= \epsilon^{jki} m_{i} \,,\\
\bs{m} &= \frac{1}{2} \int \bs{x} \times \bs{J}(\bs{x}) \ d^{3}\bs{x}
\,.
\end{align}
</div>
<p>This gives the ideal dipole magnetic field</p>
<div>
\begin{align}
\bs{B}_{\text{dip}} &= \cd\times\bs{A}_{\text{dip}} \,, \\
B^{i}_{\text{dip}} &= \frac{\mu_{0}}{4\pi} m^{j} \pd_{i}\pd_{j}\frac{1}{r}
\,,
\end{align}
</div>
<p>except that we have dropped the singular
<script type="math/tex">\mu_{0}m^{i}\delta_{(3)}(\bs{x})</script> term.</p>
<p>It seems like we’ve discarded some information — only the
antisymmetric part of <script type="math/tex">\mathcal{M}^{i;j}</script> contributed to <script type="math/tex">m^{i}</script>.
What about the symmetric part? This exactly vanishes, and that
generalizes to all higher <script type="math/tex">\ell</script>. The proof follows similarly to why
<script type="math/tex">\mathcal{M}^{i}</script> vanished above. Use that <script type="math/tex">\cd\cdot\bs{J}=0</script>, and
integrate this divergence against <script type="math/tex">x^{j_{1}}x^{j_{2}}\cdots
x^{j_{\ell}}</script>,</p>
<div>
\begin{align}
0 &= -\int (\pd_{i}J^{i})x^{j_{1}}x^{j_{2}}\cdots x^{j_{\ell}}
\ d^{3}\bs{x} \\
&= +\int J^{i} \pd_{i}
\left(
x^{j_{1}}x^{j_{2}}\cdots x^{j_{\ell}}
\right) \ d^{3}\bs{x} \\
&=
\int J^{i}
\left[
\delta_{i}^{j_{1}}x^{j_{2}}\cdots x^{j_{\ell}}
+
x^{j_{1}}\delta_{i}^{j_{2}}x^{j_{3}}\cdots x^{j_{\ell}}
\right. \nn\\
&\qquad\qquad
\left.
+ \ldots + x^{j_{1}}x^{j_{2}}\cdots x^{j_{\ell-1}} \delta_{i}^{j_{\ell}}
\right]\ d^{3}\bs{x} \\
&= \ell \int J^{(j_{1}} x^{j_{2}}\cdots x^{j_{\ell})}
\ d^{3}\bs{x} \,.
\end{align}
</div>
<p>What we found is that the completely symmetric part of
<script type="math/tex">\mathcal{M}^{i;j_{1}\cdots j_{\ell-1}}</script> vanishes (in fact it vanishes
even before removing the traces on the indices after the semicolon).</p>
<p>The next step for understanding these magnetic multipole tensors
requires a little knowledge of how Young diagrams classify the index
symmetries of tensors (ok, maybe not strictly necessary, but this was
how I first realized what to do). We know that the tensor
<script type="math/tex">x^{\langle j_{1}}x^{j_{2}}\cdots x^{j_{\ell}\rangle}</script> lives in the
representation labeled by the diagram of shape <script type="math/tex">(\ell)</script>,</p>
<p><img src="https://duetosymmetry.com/images/yt-j1-jl.png" alt="Young tableau of shape (ell)" class="align-center" style="width: 250px" /></p>
<p>Now recall that when we tensor-product a vector with some tensor in a
diagram with shape <script type="math/tex">\lambda</script>, we generate tensors in irreps related
by adding one box at the end of any allowed row or as a new row
underneath (the decomposition of tensor products into irreps is
determined by the <a href="https://en.wikipedia.org/wiki/Littlewood%E2%80%93Richardson_rule">Littlewood–Richardson
rule</a>;
adding one box where allowed is the simplest case. This is
encapsulated in a <em>Hasse diagram</em> called <a href="https://en.wikipedia.org/wiki/Young%27s_lattice">Young’s
lattice</a>, which gives
a partial order on Young diagrams, seen in here:</p>
<p><img src="https://duetosymmetry.com/images/Young-lattice.png" alt="Young lattice" class="align-center" /></p>
<p>Now, since <script type="math/tex">x^{\langle j_{1}}x^{j_{2}}\cdots x^{j_{\ell}\rangle}</script>
lives in the <script type="math/tex">(\ell)</script> representation, we know that tensoring with
<script type="math/tex">J^{i}</script> can produce content in exactly two representations: the
<script type="math/tex">(\ell+1)</script> diagram, and the <script type="math/tex">(\ell,1)</script> diagram, having shapes</p>
<p><img src="https://duetosymmetry.com/images/yt-lp1-and-l1.png" alt="Two Young tableaux, one of shape (ell+1), one of shape (ell,1)" class="align-center" /></p>
<p>However, above we showed that the completely symmetric part, labeled
by <script type="math/tex">(\ell+1)</script>, vanishes. Therefore, we have shown that each
<script type="math/tex">\mathcal{M}^{i;j_{1}\cdots j_{\ell}}</script> lives in the <script type="math/tex">(\ell,1)</script>
diagram, and this means the <script type="math/tex">i</script> index is antisymmetric with each <script type="math/tex">j</script>
index.</p>
<p>Because of the antisymmetry between <script type="math/tex">i</script> and any one of the <script type="math/tex">j</script>’s, we
are free to insert a projector in the space of 2-forms,</p>
<div>
\begin{align}
\mathcal{M}^{i;j_{1}j_{2}\cdots j_{\ell}}
= \delta^{i}_{[k}\delta^{j_{1}}_{p]} \mathcal{M}^{k;pj_{2}\cdots j_{\ell}}
= \tfrac{1}{2}\epsilon^{ij_{1}q}\epsilon_{qkp} \mathcal{M}^{k;pj_{2}\cdots j_{\ell}}
\,.
\end{align}
</div>
<p>This motivates defining an auxiliary tensor <script type="math/tex">m</script>, like in the dipole
case,</p>
<div>
\begin{align}
\label{eq:mstatic-mpole-and-dual-rels}
m^{k j_{2}j_{3}\cdots j_{\ell}} &\equiv -\tfrac{1}{2} \epsilon^{k}{}_{i j_{1}} \mathcal{M}^{i;j_{1}j_{2}\cdots j_{\ell}}
\,, &
\mathcal{M}^{i;j_{1}j_{2}\cdots j_{\ell}} &=
-\epsilon^{ij_{1}}{}_{k} m^{k j_{2}j_{3}\cdots j_{\ell}}
\,.
\end{align}
</div>
<p>The two minus signs (which cancel) are here to agree with the
traditional notation for the magnetic dipole vector. We can insert
the integral expression,</p>
<div>
\begin{align}
m^{k j_{2}j_{3}\cdots j_{\ell}}
=
\int -\tfrac{1}{2} \epsilon^{k}{}_{i j_{1}} J^{i}
x^{\langle j_{1}} x^{j_{2}} \cdots x^{j_{\ell}\rangle} d^{3}x
\,.
\end{align}
</div>
<p>What are the symmetries of <script type="math/tex">m^{kj_{2}\cdots j_{\ell}}</script>? It is
obviously symmetric and tracefree on the <script type="math/tex">j</script>’s. It is also easy to
see that tracing <script type="math/tex">k</script> with any of the <script type="math/tex">j</script>’s would result in a symmetric
pair of indices contracting with the <script type="math/tex">\epsilon</script> tensor in the
definition of <script type="math/tex">m</script>, so by symmetry-antisymmetry,
<script type="math/tex">m^{kj_{2}\cdots j_{\ell}}</script> is tracefree on all indices.</p>
<p>Now we will show that <script type="math/tex">m^{kj_{2}\cdots j_{\ell}}</script> is symmetric on
<script type="math/tex">(k,j_{2})</script> and thus on <script type="math/tex">k</script> with any of the <script type="math/tex">j</script>’s. Suppose we split
the tensor into parts that are symmetric and antisymmetric on these
two indices,
<script type="math/tex">m^{kj_{2}\cdots j_{\ell}} = m^{(kj_{2})\cdots j_{\ell}} +
m^{[kj_{2}]\cdots j_{\ell}}</script>. For the antisymmetric part, we could
again insert a projector in the space of 2-forms.
While evaluating this projector, we have the dual on <script type="math/tex">[k j_{2}]</script>.
But this is simply a trace of <script type="math/tex">\mathcal{M}</script>: from
Eq. \eqref{eq:mstatic-mpole-and-dual-rels},</p>
<div>
\begin{align}
\epsilon^{p}{}_{kj_{2}}m^{kj_{2}\cdots j_{\ell}} =
\mathcal{M}^{p;j_{1}j_{2}j_{3}\cdots j_{\ell}}\delta_{j_{1}j_{2}} = 0
\,,
\end{align}
</div>
<p>which vanishes since <script type="math/tex">\mathcal{M}</script> is tracefree on all the <script type="math/tex">j</script>’s.
Since this antisymmetric part of <script type="math/tex">m^{kj_{2}\cdots j_{\ell}}</script> vanished,
we found that <script type="math/tex">m</script> is STF on all indices.</p>
<p>We can finally restate <script type="math/tex">A^{k}</script> and <script type="math/tex">B^{i}</script> in terms of these magnetic
STF moments, after a bit of algebra:</p>
<div>
\begin{align}
A^{k}(\bs{x}) &= \frac{\mu_{0}}{4\pi}
\sum_{\ell=0}^{\infty}
\frac{(-1)^{\ell}}{\ell!}
\left(
\pd_{j_1} \pd_{j_2} \cdots \pd_{j_\ell} \frac{1}{r}
\right) \epsilon^{kp j_{1}}m^{p j_{2}\cdots j_{\ell}} \,,
\\
B^{i} = \epsilon^{ijk}\pd_{j}A_{k} &=
\frac{\mu_{0}}{4\pi}
\sum_{\ell=0}^{\infty}
\frac{(-1)^{\ell+1}}{\ell!}
\left(
\pd_{i} \pd_{j_{1}}\pd_{j_2} \cdots \pd_{j_\ell} \frac{1}{r}
\right)
m^{j_{1} j_{2}\cdots j_{\ell}} \,.
\end{align}
</div>Leo C. Steinlcstein@olemiss.eduHow to do the STF multipole expansion of the magnetic potential and field (it's been on my TODO list for a while)Numerical relativity surrogate model with memory effects and post-Newtonian hybridization2023-06-05T00:00:00+00:002023-06-05T00:00:00+00:00https://duetosymmetry.com/pubs/CCE-surrogate<p class="align-right" style="width: 350px; margin: 2em 0 0 1em;"><img src="https://duetosymmetry.com/images/CCE-surrogate.png" alt="" /></p>
<blockquote>
<p>Numerical relativity simulations provide the most precise templates
for the gravitational waves produced by binary black hole
mergers. However, many of these simulations use an incomplete
waveform extraction technique – extrapolation – that fails to
capture important physics, such as gravitational memory
effects. Cauchy-characteristic evolution (CCE), by contrast, is a
much more physically accurate extraction procedure that fully
evolves Einstein’s equations to future null infinity and accurately
captures the expected physics. In this work, we present a new
surrogate model, <tt>NRHybSur3dq8_CCE</tt>, built from CCE waveforms
that have been mapped to the post-Newtonian (PN) BMS frame and then
hybridized with PN and effective one-body (EOB) waveforms. This
model is trained on 102 waveforms with mass ratios q≤8 and aligned
spins χ<sub>1z</sub>,χ<sub>2z</sub> ∈ [−0.8,0.8]. The model spans
the entire LIGO-Virgo-KAGRA (LVK) frequency band (with
f<sub>low</sub>=20Hz) for total masses M ≳ 2.25M<sub>⊙</sub> and
includes the ℓ≤4 and (ℓ,m)=(5,5) spin-weight −2 spherical harmonic
modes, but not the (3,1), (4,2) or (4,1) modes. We find that
<tt>NRHybSur3dq8_CCE</tt> can accurately reproduce the training
waveforms with mismatches ≲ 2×10<sup>−4</sup> for total masses
2.25M<sub>⊙</sub> ≤ M ≤ 300M<sub>⊙</sub> and can, for a modest
degree of extrapolation, capably model outside of its training
region. Most importantly, unlike previous waveform models, the new
surrogate model successfully captures memory effects.</p>
</blockquote>Leo C. Steinlcstein@olemiss.eduNumerical relativity simulations provide the most precise templates for the gravitational waves produced by binary black hole mergers. However, many of these simulations use an incomplete waveform extraction technique – extrapolation – that fails to capture important physics, such as gravitational memory effects. Cauchy-characteristic evolution (CCE), by contrast, is a much more physically accurate extraction procedure that fully evolves Einstein’s equations to future null infinity and accurately captures the expected physics. In this work, we present a new surrogate model, NRHybSur3dq8_CCE, built from CCE waveforms that have been mapped to the post-Newtonian (PN) BMS frame and then hybridized with PN and effective one-body (EOB) waveforms. This model is trained on 102 waveforms with mass ratios q≤8 and aligned spins χ1z,χ2z ∈ [−0.8,0.8]. The model spans the entire LIGO-Virgo-KAGRA (LVK) frequency band (with flow=20Hz) for total masses M ≳ 2.25M⊙ and includes the ℓ≤4 and (ℓ,m)=(5,5) spin-weight −2 spherical harmonic modes, but not the (3,1), (4,2) or (4,1) modes. We find that NRHybSur3dq8_CCE can accurately reproduce the training waveforms with mismatches ≲ 2×10−4 for total masses 2.25M⊙ ≤ M ≤ 300M⊙ and can, for a modest degree of extrapolation, capably model outside of its training region. Most importantly, unlike previous waveform models, the new surrogate model successfully captures memory effects.