<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Thanks Barry!</p>
<p>Best,</p>
<p>Anton<br>
</p>
<div class="moz-cite-prefix">On 10.04.25 21:17, Barry Smith wrote:<br>
</div>
<blockquote type="cite"
cite="mid:58F541B8-B574-4B41-A88E-5754A1B503F0@petsc.dev">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<div> Sounds correct.<br id="lineBreakAtBeginningOfMessage">
<div><br>
<blockquote type="cite">
<div>On Apr 10, 2025, at 2:04 PM, Anton Popov
<a class="moz-txt-link-rfc2396E" href="mailto:popov@uni-mainz.de"><popov@uni-mainz.de></a> wrote:</div>
<br class="Apple-interchange-newline">
<div>
<div class="Singleton">
<div
style="margin-bottom: 0.1in; line-height: 20.700001px; background: none;"><br
class="webkit-block-placeholder">
</div>
<p
style="margin-bottom: 0in; line-height: 18px; background: none;">Hi
guys,</p>
<p
style="margin-bottom: 0in; line-height: 18px; background: none;">I have
a custom multigrid preconditioner that uses Galerkin
coarsening for the staggered grid finite difference.
Now I want to replace a few top level operators with
the matrix-free shell matrices.</p>
<p
style="margin-bottom: 0in; line-height: 18px; background: none;">Here is
my plan:</p>
<p
style="margin-bottom: 0in; line-height: 18px; background: none;">1. Set
PC_MG_GALERKIN_NONE</p>
<p
style="margin-bottom: 0in; line-height: 18px; background: none;">2. Call
PCMGSetRestriction and PCMGSetInterpolation on all
levels as I do it already</p>
<p
style="margin-bottom: 0in; line-height: 18px; background: none;">3. Use
a combination of PCMGGetSmoother and KSPSetOperators
to communicate my operators with PCMG</p>
<p
style="margin-bottom: 0in; line-height: 18px; background: none;"> a.
On the top levels just set the shell matrices
minimalistically equipped with<span
class="Apple-converted-space"> </span><span
style="font-variant-ligatures: normal; font-variant-caps: normal; font-variant-alternates: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal;"><font><span
style="letter-spacing: normal;"><span
style="font-style: normal;"><span
style="font-weight: normal;">MATOP_GET_DIAGONAL<span
class="Apple-converted-space"> </span></span></span></span></font></span><span
style="font-variant-ligatures: normal; font-variant-caps: normal; font-variant-alternates: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal;"><font><span
style="letter-spacing: normal;"><span
style="font-style: normal;"><span
style="font-weight: normal;">and MATOP_MULT.</span></span></span></font></span></p>
<p
style="margin-bottom: 0in; line-height: 18px; background: none;"> b.
On the bottom levels generate the operators by
explicitly calling MatMatMatMult (R is not the same as
P in my case).</p>
<div
style="margin-bottom: 0in; line-height: 18px; background: none;"><br
class="webkit-block-placeholder">
</div>
<p
style="margin-bottom: 0in; line-height: 18px; background: none;">
Use MAT_INITIAL_MATRIX for the first time<span
class="Apple-converted-space"> </span></p>
<p
style="margin-bottom: 0in; line-height: 18px; background: none;">
Use MAT_REUSE_MATRIX for the subsequent calls</p>
<div
style="margin-bottom: 0in; line-height: 18px; background: none;"><br
class="webkit-block-placeholder">
</div>
<p
style="margin-bottom: 0in; line-height: 18px; background: none;">Is this
a proper way to do it, or there is something wrong?<span
class="Apple-converted-space"> </span></p>
<p
style="margin-bottom: 0in; line-height: 18px; background: none;">If I
want the restriction/interpolation matrices to be
matrix-free on the top levels as well, I would need to
set<span class="Apple-converted-space"> </span><span
style="font-variant-ligatures: normal; font-variant-caps: normal; font-variant-alternates: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal;"><font><span
style="letter-spacing: normal;"><span
style="font-style: normal;"><span
style="font-weight: normal;">MATOP_MULT_ADD<span
class="Apple-converted-space"> </span></span></span></span></font></span><span
style="font-variant-ligatures: normal; font-variant-caps: normal; font-variant-alternates: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal;"><font><span
style="letter-spacing: normal;"><span
style="font-style: normal;"><span
style="font-weight: normal;">for them. Is
this enough, or do I need something else?</span></span></span></font></span></p>
<p
style="margin-bottom: 0in; line-height: 18px; background: none; font-weight: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-alternates: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; letter-spacing: normal; font-style: normal;"><font>Thanks!</font></p>
<p
style="margin-bottom: 0in; line-height: 18px; background: none; letter-spacing: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-alternates: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-style: normal; font-weight: normal;"><font>Anton</font></p>
<div
style="margin-bottom: 0.1in; line-height: 20.700001px; background: none;"><br
class="webkit-block-placeholder">
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
</body>
</html>