<div dir="ltr">Thank you for the reply.<div><br></div><div>If I understand the example correctly, you are suggesting that I define my interpolation matrix implicitly by defining the <span style="color:rgb(0,0,0);white-space:pre-wrap">MATOP_MULT and </span><span style="color:rgb(0,0,0);white-space:pre-wrap">MATOP_MULT_TRANSPOSE_ADD operations.  In my case, I want the coarse grid operators defined via the Galerkin process, so would I also have to define the MATOP_PTAP operation?

Also, is there a more convenient PETSc matrix type that I can use?  My interpolation operators can easily be represented in matrix form, and it seems a bit unusual to have to define the matrix operations </span><span style="color:rgb(0,0,0);white-space:pre-wrap">MATOP_MULT, </span><span style="color:rgb(0,0,0);white-space:pre-wrap">MATOP_MULT_TRANSPOSE_ADD, and </span><span style="color:rgb(0,0,0);white-space:pre-wrap">MATOP_PTAP myself.  (Perhaps you are suggesting that defining these operations without explicitly constructing the matrix is more computationally efficient?)</span></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Aug 21, 2017 at 6:00 PM, Jed Brown <span dir="ltr"><<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>Ben Yee <<a href="mailto:bcyee@umich.edu" target="_blank">bcyee@umich.edu</a>> writes:<br>
<br>
> Hi,<br>
><br>
> I was wondering what type of matrix I should use if I want to define my own<br>
> interpolation matrix in PCMG.<br>
><br>
> I don't have any DM objects, and I wanted to provide the matrix entries to<br>
> the interpolation matrix manually.  Moreover, I want the coarse grid<br>
> operators to be defined via the Galerkin process, so I only need to define<br>
> the interpolation operator.  The fine grid problem/operator is defined as a<br>
> parallel sparse matrix using MATMPIAIJ.  My interpolation operator is also<br>
> parallel and sparse -- does that mean I should also use MATMPIAIJ for my<br>
> interpolation operator?<br>
><br>
> I did some digging but I couldn't find any examples where the<br>
> interpolation/restriction operators in PETSc were defined explicitly by the<br>
> user.<br>
<br>
</span>src/ksp/pc/examples/tests/ex5.<wbr>c<br>
<span><br>
> I also found the documentation for the matrix type MATMAIJ (<br>
> <a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/" rel="noreferrer" target="_blank">http://www.mcs.anl.gov/petsc/p<wbr>etsc-current/docs/</a><br>
> manualpages/Mat/MATMAIJ.html#M<wbr>ATMAIJ), which indicates that it is a<br>
> specialized matrix for interpolation/restriction operations.  However,<br>
> I also noticed that the description for MATMAIJ indicates that it will<br>
> interpolate each component the same way independently.  I do have a<br>
> multicomponent problem, but I was hoping to interpolate each component<br>
> differently -- does that mean I can't use the MATMAIJ matrix type?<br>
<br>
</span>Correct, MAIJ applies the Kronecker product of a scalar interpolation<br>
with the identity so it acts the same on each component.  It's more<br>
efficient if you want each component treated the same way.<br>
<div class="m_-494553195298791600m_3898694850012655199HOEnZb"><div class="m_-494553195298791600m_3898694850012655199h5"><br>
> If it is recommended that I use the MATMAIJ matrix type, I would like some<br>
> clarification regarding the MatCreateMAIJ function.  In particular, I'm not<br>
> really sure how the input matrix "A" (first argument of MatCreateMAIJ) is<br>
> supposed to be -- the description of MatCreateMAIJ says "the AIJ matrix<br>
> describing the action on blocks," but I don't know what that means.  The<br>
> use of MatCreateMAIJ in ex48.c is not really clear to me.<br>
><br>
> Any guidance would be much appreciated.  Thanks!<br>
><br>
> --<br>
> Ben Yee<br>
><br>
> NERS PhD Candidate, University of Michigan<br>
> B.S. Mech. & Nuclear Eng., U.C. Berkeley<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="m_-494553195298791600m_3898694850012655199gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr">Ben Yee<div><font size="1"><br></font><div><font size="1">NERS PhD Candidate, University of Michigan</font></div><div><font size="1">B.S. Mech. & Nuclear Eng., U.C. Berkeley</font></div></div></div></div></div></div>
</div></div>