<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Sep 6, 2013 at 1:53 PM, Matthew Knepley <span dir="ltr"><<a href="mailto:knepley@gmail.com" target="_blank">knepley@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 class="im">On Fri, Sep 6, 2013 at 1:33 PM, Jed Brown <span dir="ltr"><<a href="mailto:jedbrown@mcs.anl.gov" target="_blank">jedbrown@mcs.anl.gov</a>></span> wrote:<br>
</div><div class="gmail_extra"><div class="gmail_quote"><div class="im">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Please send these questions to petsc-dev (Cc'd now) or petsc-users so<br>
that others can comment.<br>
<br>
Lulu Liu <<a href="mailto:lulu.liu@kaust.edu.sa" target="_blank">lulu.liu@kaust.edu.sa</a>> writes:<br>
<br>
> Hi,<br>
><br>
> I want to implement ASPIN-like ideas, but based on field splitting. You<br>
> could find the details in PDF file.<br>
<br>
You are proposing left-preconditioned nonlinear additive fieldsplit.<br>
This is a sensible algorithm that we have discussed before.  The only<br>
part that needs to be implemented is the fieldsplit solve: separation of<br>
G and H, then solving each separately.<br>
<br>
Unfortunately, I think it's kinda tricky to come up with a generally<br>
useful interface.  In particular, many applications cannot partition the<br>
variables like you have done, meaning that the preconditioner is<br>
becomes: change variables, solve in other bases, then change back.  At<br>
this point, I would recommend implementing the solve with \hat F using<br>
SNESShell.<br></blockquote><div><br></div></div><div>Did we throw away the SNES 'multiblock' code? It was supposed to do this.</div><div><br></div></div></div></div></blockquote><div><br></div><div>Multiblock never actually ran and therefore it has been removed from compilation for some time.  The code is still sitting there, though.  We've (Jed and I) been discussing how to put this together for some time and we haven't settled on a model of prying apart the fields and field residual/Jacobian assembly in such a way that makes this easy enough for users to futz around with.  We could easily do something akin to what we do with (N)ASM and have hooks that spirit the whole solution to where the evaluation needs it.</div>
<div><br></div><div>So, what do you do?  Do you do whole-system residual evaluation followed by restriction to the subsystem?  Do you require the user to give you a number of subproblems living on potentially different discretizations and ways of gluing them together?  These things need to be decided.</div>
<div><br></div><div>ASPIN-like things with this would require having the outer solver know how to pull apart the inner solver and get at its tasty, tasty fieldsplit Jacobians.  It would be a pretty easy extension of the preexisting ASPIN stuff.</div>
<div><br></div><div>- Peter</div><div><br></div><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>
<div>   Matt</div><div class="im"><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

> My questions:<br>
><br>
> I have a nonlinear system including two equations. In my implementation, I<br>
> need to solve each equation separately, also I need to solve the coupled<br>
> system. I feel confused about ordering:<br>
><br>
> I know the unknowns are ordered as [p1,s1,p2,s2,p3,s3,......] in PETSc,<br>
> however, it seems that I need the variables like [p1,p2,p3,... s1,s2,s3,...]<br>
<br>
No, just use a strided IS to describe each set of variables.  You can<br>
VecScatter from the packed/monolithic global vector to the split space.<br>
<br>
> Is there any example to do the similar things in PETSc?<br>
> Do you have any ideas to implement the algorithm easier?<br>
> How to quickly extract [p1,p2,...p_{N}] or [s1,s2,....] from<br>
> [p1,p2,....s1,s2,s3,...] ?<br>
> How to quickly get the composed [p1,p2,...s1,s2,....] if I have [p1,p2,...]<br>
> and [s1,s2,..]?<br>
><br>
<br>
</blockquote></div></div><span class="HOEnZb"><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><br></div></div>