<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Jul 30, 2014 at 5:01 PM, Justin Chang <span dir="ltr"><<a href="mailto:jychang48@gmail.com" target="_blank">jychang48@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 class=""><div dir="ltr"><div><div>That's good to know thanks. I have another question somewhat related.<br><br>
</div>In that quadratic programming problem I have shown earlier, my K matrix is of global size <i>Ndof</i> by <i>Ndof</i> where <i>Ndof</i>
 is number of free dofs (for instance, if I have a 2x2 quadrilateral 
mesh and want to evaluate concentration at all the verticies, I will 
have nine total dofs but if I have Dirichlet constraints all along the 
boundary, only my center vertex is free so <i>Ndof</i> = 1. Thus when I simply call DMCreateMatrix(...) it would give me a 1x1 matrix.)<br>
<br></div>However, I want my M constraint matrix to be of size <i>Nele</i> by <i>Ndof</i> where <i>Nele</i> is the total number of elements. How would I create this matrix? Because ultimately, I am subjecting all of my free u's to <i>Nele</i> number of equality constraints, and if possible I want this M matrix to be compatible with the layout from Vec u.</div>
</div></blockquote><div><br></div><div>This is not hard in principle. I used to have code that did this, but I took it out during the rewrite because no one</div><div>was using it and it was complicated. It just generalizes the code in DMPlexPreallocateOperator() to take two</div>
<div>PetscSections instead of one.</div><div><br></div><div>Are you sure that this does not belong inside a large square matrix for the entire problem?</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 class="gmail_extra"><br><div class="gmail_quote"><div class="">On Wed, Jul 30, 2014 at 2:03 PM, Matthew Knepley <span dir="ltr"><<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>></span> wrote:<br>

</div><div><div class="h5"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div>On Wed, Jul 30, 2014 at 2:53 PM, Justin Chang <span dir="ltr"><<a href="mailto:jychang48@gmail.com" target="_blank">jychang48@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"><div><div><div><div>Hi,<br><br>This might be a silly question, but I am developing a finite element code to solve the non-negative diffusion equation. I am using the DMPlex structure and plan on subjecting the problem to a bounded constraint optimization to ensure non-negative concentrations. Say for instance, I want to solve:<br>



<br></div>min || K*u - F ||^2<br></div>subject to u >= 0<br></div><div>             M*u = 0<br></div><div><br></div>Where K is the Jacobian, F the residual, u the concentration, and M some equality constraint matrix. I know how to do this via Tao, but my question is can Tao handle Mats and Vecs created via DMPlex? Because from the SNES and TS examples I have seen in ex12, ex62, and ex11, it seems there are solvers tailored to handle DMPlex created data structures.<br>


</div></div></blockquote><div><br></div></div></div><div>Yes, TAO can handle objects created by DMPlex since they are just Vec and Mat structures. The additions</div><div>to ex12, ex62, and ex11 concern the callbacks from the solver to the constructions routines for residual and</div>


<div>Jacobian. Right now, none of the callbacks are automatic for TAO so you would have to code them yourself,</div><div>probably by just calling the routines from SNES or TS so it should not be that hard. We are working to get</div>


<div>everything integrated as it is in the other solvers.</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></div>Thanks,<br>Justin<span><font color="#888888"><br></font></span></div><span><font color="#888888">
</font></span></blockquote></div><span><font color="#888888"><br><br clear="all"><div><br></div>-- <br>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
</font></span></div></div>
</blockquote></div></div></div><br></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>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>