<div dir="ltr"><div>Hi Matt,</div><div><br></div><div>Thanks for the reply! I haven't played with DMSwarm yet but that looks like it would be a very nice solution to this sort of thing. I ended up using VecScatter to transfer the donor grid values to the destination process then doing the interpolation there. Not the most elegant solution but it's definitely not the bottleneck in my code right now!<br></div><div><br></div><div>Thanks again,</div><div>Colton <br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jun 14, 2023 at 2:17 PM Matthew Knepley <<a href="mailto:knepley@gmail.com">knepley@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">On Wed, Jun 7, 2023 at 10:46 AM Colton Bryant <<a href="mailto:coltonbryant2021@u.northwestern.edu" target="_blank">coltonbryant2021@u.northwestern.edu</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Hello,</div><div><br></div><div>I am new to PETSc so apologies in advance if there is an easy answer to this question I've overlooked.</div><div><br></div><div>I have a problem in which the computational domain is divided into two overlapping regions (overset grids). I would like to discretize each region as a separate DMSTAG object. What I do not understand is how to go about interpolating a vector from say DM1 onto nodes in DM2. My current (likely inefficient) idea is to create vectors of query points on DM2, share these vectors among all processes, perform the interpolations on DM1, and then insert the results into the vector on DM2. <br></div><div><br></div><div>Before I embark on manually setting up the communication here I wanted to just ask if there is any native support for this kind of operation in PETSc I may be missing. <br></div><div><br></div><div>Thanks in advance for any advice!</div></div></blockquote><div><br></div><div>This sounds like a good first step. We do not currently have support for this, but I would like to support this pattern. I was thinking</div><div><br></div><div> 1) Create a DMSwarm() with your query points</div><div><br></div><div> 2) Call DMSwarmMigrate() to put the points on the correct processors</div><div><br></div><div>     This needs some implementation work, but is not super hard. We need to preserve the map so</div><div>     that you can send the results back.</div><div><br></div><div> 3) Interpolate on the DMStag</div><div><br></div><div> 3) Use the PetscSF that migrated particles to send back the results</div><div><br></div><div>Joe and I are working on this support.</div><div><br></div><div>  Thanks,</div><div><br></div><div>    Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Best,</div><div>Colton Bryant <br></div></div>
</blockquote></div><br clear="all"><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div><div><br></div><div><a href="http://www.cse.buffalo.edu/~knepley/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div></div></div></div>
</blockquote></div>