<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Jan 3, 2017 at 4:02 PM, Rochan Upadhyay <span dir="ltr"><<a href="mailto:u.rochan@gmail.com" target="_blank">u.rochan@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I think I sent my previous question (on Dec 28th) to the wrong place <br>(<a href="mailto:petsc-users-request@mcs.anl.gov" target="_blank">petsc-users-request@mcs.anl.<wbr>gov</a>).</div></blockquote><div><br></div><div>Yes, this is the correct mailing list.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>To repeat,<br><br>I am having bit of a difficulty in understanding the introduction of</div><div>constraints in DMPlex. From a quick study of the User Manual I gather <br>that it is easiest done using DMPlexSetAnchors ? The description of this <br>routine says that there is an anchorIS that specifies the anchor points (rows in the </div><div>matrix). This is okay and easily understood.</div></div></blockquote><div><br></div><div>I think this is not the right mechanism for you.</div><div><br></div><div>Anchors:</div><div><br></div><div>This is intended for constraints in the discretization, such as hanging nodes, which are</div><div>purely local, and intended to take place across the entire domain. That determines the</div><div>interface.</div><div><br></div><div>Dirichlet Boundary Conditions:</div><div><br></div><div>For these, I would recommend using the Constraint interface in PetscSection, which</div><div>eliminates these unknowns from the global system, but includes the values in the local</div><div>vectors used in assembly.</div><div><br></div><div>You can also just alter your equations for constrained unknowns.</div><div><br></div><div>Constraints among Fields:</div><div><br></div><div>I would recommend just putting the constraint in as an equation. In your case the effect can</div><div>be non-local, so this seems like the best strategy.</div><div><br></div><div>  Thanks,</div><div><br></div><div>     Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>There is also an anchorSection which is described as a map from constraint points </div><div>(columns ?)  to the anchor points listed in the anchorIS. Should this not be a map between <br></div><div>solution indices (i.e. indices appearing in the vectors and matrices) ?<br></div><div><br></div><div>For example I am completely unable to set up a simple constraint matrix for the following (say):<br></div><div><br>Point 1, Field A, B<br></div><div>Point 2-10 Field A<br></div><div>At point 1, Field B depends on Field A at points 1-10 <br><br></div><div>When I set it up it appears to create a matrix where field A depends on field A values at points 1-10.<br></div><div><br></div><div>How does the mapping work in this case ? Will the DMPlexSetAnchors() routine work <br>for this simple scenario ? <br> </div><div>If not, is the only recourse to create the constraint matrix oneself </div><div>using DMSetDefaultConstraints ?<br> <br></div><div>Also documentation for DMSetDefaultConstraints is incomplete.<br></div><div>The function accepts three arguments (dm, section and Mat) but<br></div><div>what the section is is not described at all. <br></div><div><br></div><div>I don't know if my question makes any sense. If it does not then it is</div><div>only a reflection of my utter confusion regarding the routine DMPlexSetAnchors :-(</div><div><br></div><div>Regards,<br></div>Rochan</div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">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></div>