<div class="gmail_quote">On Wed, Jul 25, 2012 at 5:46 PM, Chao Yang <span dir="ltr"><<a href="mailto:chaoyang.cuboulder@gmail.com" target="_blank">chaoyang.cuboulder@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 id=":4w6">In PETSc-3.3, DMMG has been completely replaced by using SNESSetDM() and pc_mg. And it is shown in the changelog that resolution-dependent data should be avoided in the user context.<br>
<br>
However, for a time-dependent problem, if a fully implicit time-stepping is implemented by hand, then some solutions at previous time steps for both fine and coarse meshes are needed in FormFunction.<br></div></blockquote>
<div><br></div><div>How do you intend to represent these on coarse meshes?</div><div><br></div><div>For maximum flexibility, you can follow the methodology in TSTheta (src/ts/impls/implicit/theta/theta.c) which uses DMGetNamedVector() to cache the state vectors on levels and DMRestrictHook_Theta() to update it when necessary.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div id=":4w6">
<div id=":4w6">In PETSc-3.2, there is an example using DMMG with time-stepping:</div><div id=":4w6">src/snes/examples/tutorials/ex54.c</div><div id=":4w6">Is there a substitute for it in PETS-3.3?</div></div></blockquote>
<div> </div><div>Uh, the example did not use DMMG. It did use PCMG, but only for the linear problem and only with Galerkin coarse operators, thus the user callbacks were never called on coarse grids. If you use rediscretized coarse operators or FAS, you need to be able to handle the callbacks from coarse grids.</div>
</div>