On 9/11/06, <b class="gmail_sendername">Matt Funk</b> &lt;<a href="mailto:mafunk@nmsu.edu">mafunk@nmsu.edu</a>&gt; wrote:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi,<br><br>i had a general question. I have a simple rectangular domain on which i<br>evaluate a pde. I am using PETSCs DA object. To set the right hand side of<br>the linear system i need to evaluate the laplacian before solving the system.
<br>To do that i need to access the ghostnodes.<br><br>So, i was wondering if the standard procedure is to access the (global)<br>vectors i need is as follows:<br><br>DACreateLocalVector(...) //create temporary (local) vector with ghostnodes
<br>DAGlobalToLocalBegin<br>DAGlobalToLocalEnd //map global to local vector<br>DAVecGetArray //get work array<br><br>... do my thing ...<br><br>DAVecRestoreArray<br>DALocalToGlobalBegin<br>DALocalToGlobalEnd<br>VecDestroy //destroy temporary local vector
<br><br>or if there is another (better?!) way ...</blockquote><div><br>
You probably only need DALocalToGlobal() which discards the ghosts. <br>
</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I guess what bothers me (and i don't know if it should) is that i need to<br>create the local temporary vectors every time step. What i mean is that the
<br>global vector already resides distributed on the different procs, so does<br>DACreateLocalVector(...) allocate all that memory again or does it just<br>allocate memory for the ghostnodes?</blockquote><div><br>
Well, you should use DAGetLocalVector(). It does duplicate the&nbsp; local storage,<br>
but if you want the nice data layout, this is necessary. Unless you are running<br>
an explicit solver&nbsp; with extreme memory limitations, I wouldn't worry.<br>
<br>
&nbsp; Matt <br>
</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">thanks<br>mat<br><br><br>On Sunday 10 September 2006 17:50, Barry Smith wrote:<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;Jens,<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; You are correct; functionality to do this does not exist in DMMG. So<br>&gt; you have to write it yourself as you have, let us know if you have any<br>&gt; trouble with it.<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Barry
<br>&gt;<br>&gt; On Sun, 10 Sep 2006, <a href="mailto:jens.madsen@risoe.dk">jens.madsen@risoe.dk</a> wrote:<br>&gt; &gt; Hi again<br>&gt; &gt;<br>&gt; &gt; My linear problem Ax = b. In my case the matrix A is timepdependent. In
<br>&gt; &gt; my KSP code I calculate A and call KSPSetOperators() in each timestep.<br>&gt; &gt; When using DMMG I have not been able to find such a functionallity ? I am<br>&gt; &gt; using galerkin matrices on all coarser MG levels. Here is the code that I
<br>&gt; &gt; am currently using<br>&gt; &gt;<br>&gt; &gt; /*Matrix is time dependent*/<br>&gt;
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if(para.PolEq==GLOBAL)<br>&gt;
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{<br>&gt;
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ierr =<br>&gt; &gt; MGComputePolaMatrix(*dmmg,dmmg[para.MG_levels-1]-&gt;J,dmmg[para.MG_levels-1<br>&gt; &gt;]-&gt;B); /*ierr =<br>&gt; &gt; MatView(dmmg[DMMGGetLevels(dmmg)-1]-&gt;B,PETSC_VIEWER_STDOUT_WORLD);*/ for<br>
&gt; &gt; (i=DMMGGetLevels(dmmg)-2; i&gt;-1; i--)<br>&gt;
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{<br>&gt;
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (dmmg[i]-&gt;galerkin)<br>&gt;
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{<br>&gt; &gt;<br>&gt;
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
MatPtAP(dmmg[i+1]-&gt;B,dmmg[i+1]-&gt;R,MAT_REUSE_MATRIX,1.0,&amp;dmmg[i]-&gt;B);<br>&gt; &gt; if (!dmmg[i]-&gt;J)<br>&gt;
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{<br>&gt;
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dmmg[i]-&gt;J = dmmg[i]-&gt;B;<br>&gt;
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<br>&gt;
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<br>&gt;
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ierr =<br>&gt; &gt; KSPSetOperators(dmmg[i]-&gt;ksp,dmmg[i]-&gt;B,dmmg[i]-&gt;B,SAME_NONZERO_PATTERN);<br>&gt; &gt;CHKERRQ(ierr); }<br>&gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&gt;
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ierr =<br>&gt; &gt; KSPSetOperators(dmmg[i]-&gt;ksp,dmmg[i]-&gt;B,dmmg[i]-&gt;B,SAME_PRECONDITIONER);C<br>&gt; &gt;HKERRQ(ierr); }<br>&gt;
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ierr = DMMGSolve(dmmg);CHKERRQ(ierr);<br>&gt; &gt;<br>&gt; &gt; I this the way to do it or have missed some functionallity in DMMG&nbsp;&nbsp;?<br>&gt; &gt;<br>&gt; &gt; Cheers Jens<br>&gt; &gt;<br>&gt; &gt; -----Original Message-----
<br>&gt; &gt; From: Barry Smith [mailto:<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>]<br>&gt; &gt; Sent: Thu 8/31/2006 10:12 PM<br>&gt; &gt; To: <a href="mailto:jens.madsen@risoe.dk">jens.madsen@risoe.dk</a>
<br>&gt; &gt; Subject: Re: SV: SV: SV: [PETSC #14613] DMMG question; more stupid danish<br>&gt; &gt; questions :-)<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;&nbsp;&nbsp; Yes, one of the arguments to DACreate is which directions you want
<br>&gt; &gt; periodicity.<br>&gt; &gt;<br>&gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; Barry<br>&gt; &gt;<br>&gt; &gt; On Thu, 31 Aug 2006, <a href="mailto:jens.madsen@risoe.dk">jens.madsen@risoe.dk</a> wrote:<br>&gt; &gt;&gt; Ok I had not figured that out. Think I misunderstood a response from you
<br>&gt; &gt;&gt; that you mailed in the winter :-)<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; I am now trying to implement DMMG in my code. Just one question: is DMMG<br>&gt; &gt;&gt; able to handle periodic boundary conditions ? I think I have made it
<br>&gt; &gt;&gt; work but I have not performed intensive testing ....<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; thx Jens :-)<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; ________________________________<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; Fra: Barry Smith [mailto:
<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>]<br>&gt; &gt;&gt; Sendt: on 23-08-2006 00:06<br>&gt; &gt;&gt; Til: <a href="mailto:jens.madsen@risoe.dk">jens.madsen@risoe.dk</a><br>&gt; &gt;&gt; Cc: <a href="mailto:petsc-maint@mcs.anl.gov">
petsc-maint@mcs.anl.gov</a><br>&gt; &gt;&gt; Emne: Re: SV: SV: [PETSC #14613] DMMG question<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;&nbsp;&nbsp;Actually DMMG does not always start at the coarsest level.
<br>&gt; &gt;&gt; It will only do that if you pass in the -dmmg_grid_sequence option.<br>&gt; &gt;&gt; You can run with -pc_mg_type multiplicative -pc_mg_cycles 1 for<br>&gt; &gt;&gt; V cycle and -pc_mg_cycles 2 for W cycles.
<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;&nbsp;&nbsp; There may be other reasons you might not be able to use DMMG like<br>&gt; &gt;&gt; it only works on logically rectangular grids, etc.<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; The only example for the mg directly is
<br>&gt; &gt;&gt; src/ksp/ksp/examples/tests/ex19.c it is terribly ugly.<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;&nbsp;&nbsp;Barry<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; It is a different ex19.c<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; On Tue, 22 Aug 2006 
<a href="mailto:jens.madsen@risoe.dk">jens.madsen@risoe.dk</a> wrote:<br>&gt; &gt;&gt;&gt; Hi again<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; As far as I can see petsc/src/snes/examples/tutorials/ex19.c uses DMMG<br>&gt; &gt;&gt;&gt; ?
<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; I am trying to use the preconditioner itself. I do not want to use DMMG<br>&gt; &gt;&gt;&gt; because DMMG always starts at the coarsest grid in order to improve the<br>&gt; &gt;&gt;&gt; initial guess. I want to start on the finest grid in each timestep and
<br>&gt; &gt;&gt;&gt; do a V or W...<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; Kind regards<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; JEns
<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; ________________________________<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; Fra: Hong Zhang [mailto:
<a href="mailto:petsc-maint@mcs.anl.gov">petsc-maint@mcs.anl.gov</a>]<br>&gt; &gt;&gt;&gt; Sendt: lø 19-08-2006 03:04<br>&gt; &gt;&gt;&gt; Til: <a href="mailto:jens.madsen@risoe.dk">jens.madsen@risoe.dk</a><br>&gt; &gt;&gt;&gt; Cc: 
<a href="mailto:petsc-maint@mcs.anl.gov">petsc-maint@mcs.anl.gov</a><br>&gt; &gt;&gt;&gt; Emne: RE: SV: [PETSC #14613] DMMG question<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; See
<br>&gt; &gt;&gt;&gt; ~petsc/src/snes/examples/tutorials/ex19.c<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; Hong<br>&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt;&gt; On Fri, 18 Aug 2006 <a href="mailto:jens.madsen@risoe.dk">jens.madsen@risoe.dk
</a> wrote:<br>&gt; &gt;&gt;&gt;&gt; Hi again<br>&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt; First I will thank you guys for developing such a great product. Since<br>&gt; &gt;&gt;&gt;&gt; i wrote the mails below I have developed a code simulating 2D
<br>&gt; &gt;&gt;&gt;&gt; plasmaphysics. At the moment I am using the Krylov subspace methods,<br>&gt; &gt;&gt;&gt;&gt; KSP. Now that this is runnning I would like to see which improvements<br>&gt; &gt;&gt;&gt;&gt; a MG precoditioner would give. Before starting doing so I would ask
<br>&gt; &gt;&gt;&gt;&gt; you guys whether you have any examples ? The documentation on the PCMG<br>&gt; &gt;&gt;&gt;&gt; is a bit sparse (:-))<br>&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt; cheers Jens<br>&gt; &gt;&gt;&gt;&gt;
<br>&gt; &gt;&gt;&gt;&gt; PS. I will not forget to site you @:-)<br>&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt; -----Original Message-----<br>&gt; &gt;&gt;&gt;&gt; From: Barry Smith [mailto:<a href="mailto:petsc-maint@mcs.anl.gov">
petsc-maint@mcs.anl.gov</a>]<br>&gt; &gt;&gt;&gt;&gt; Sent: Thu 3/30/2006 2:35 AM<br>&gt; &gt;&gt;&gt;&gt; To: <a href="mailto:jens.madsen@risoe.dk">jens.madsen@risoe.dk</a><br>&gt; &gt;&gt;&gt;&gt; Cc: <a href="mailto:petsc-maint@mcs.anl.gov">
petsc-maint@mcs.anl.gov</a><br>&gt; &gt;&gt;&gt;&gt; Subject: Re: SV: [PETSC #14613] DMMG question<br>&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt; On Wed, 29 Mar 2006, <a href="mailto:jens.madsen@risoe.dk">jens.madsen@risoe.dk
</a> wrote:<br>&gt; &gt;&gt;&gt;&gt;&gt; Hi Barry and Matt<br>&gt; &gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt; Thank you for you quick response :-)<br>&gt; &gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt; I have actually tried those command line options that you suggest. It
<br>&gt; &gt;&gt;&gt;&gt;&gt; is probably me not using the right terminology; I am not that<br>&gt; &gt;&gt;&gt;&gt;&gt; experienced. I try to rephrase my problem.<br>&gt; &gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt; As far as I understand the full multigrid always starts on the
<br>&gt; &gt;&gt;&gt;&gt;&gt; coarsest grid G_0. On the coarsest grid you calculate an approximate<br>&gt; &gt;&gt;&gt;&gt;&gt; solution v_0 (using jacobi, GaussSeiddel, Krylov etc). This<br>&gt; &gt;&gt;&gt;&gt;&gt; approximate solution is interpolated to a fine grid and used as an
<br>&gt; &gt;&gt;&gt;&gt;&gt; initial guess on this finer grid G_1. Now you make a few iterative<br>&gt; &gt;&gt;&gt;&gt;&gt; sweeps on G_1 smoothening out the high k modes and get v_1. Restrict<br>&gt; &gt;&gt;&gt;&gt;&gt; this approximate solution to G_0. Relax on G_0. Correct the solution
<br>&gt; &gt;&gt;&gt;&gt;&gt; v_1 and use this as an initial guess on an even finer grid G_2 etc.<br>&gt; &gt;&gt;&gt;&gt;&gt; etc. In other words it combines &quot;nested iteration&quot; and &quot;coarse grid<br>&gt; &gt;&gt;&gt;&gt;&gt; correction&quot;.
<br>&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;You are correct this is exactly traditional full multigrid.&nbsp;&nbsp;The<br>&gt; &gt;&gt;&gt;&gt; &quot;PETSc full multigrid&quot; is slightly different. We start with a right
<br>&gt; &gt;&gt;&gt;&gt; hand side (and initial guess) on the finest grid, restrict the<br>&gt; &gt;&gt;&gt;&gt; residual to the coarsest grid and then start up the grids with nested<br>&gt; &gt;&gt;&gt;&gt; iteration AND coarse grid correction. Thus unlike &quot;traditional&quot; full
<br>&gt; &gt;&gt;&gt;&gt; multigrid you only need to define your problem on the finest grid.<br>&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt; We've found that this usually works better than just using regular V<br>&gt; &gt;&gt;&gt;&gt; or W cycles. (BTW: PETSc full multigrid can, of course, use either V
<br>&gt; &gt;&gt;&gt;&gt; or W cycles.<br>&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt; My &quot;algorithm&quot; is as follows:<br>&gt; &gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt; 1) apply initial conditions to Density,n, and Temperature,T.
<br>&gt; &gt;&gt;&gt;&gt;&gt; 2) find \phi solving a Poisson like equation using a multigrid<br>&gt; &gt;&gt;&gt;&gt;&gt; scheme. Use \phi from previous timestep as an initial guess. n and T<br>&gt; &gt;&gt;&gt;&gt;&gt; are variables in this equation. 3) Step n and T forward in time using
<br>&gt; &gt;&gt;&gt;&gt;&gt; the &quot;stiffly stable&quot; time stepping scheme. This is to be done using a<br>&gt; &gt;&gt;&gt;&gt;&gt; pre-LU-factorized matrix. 4) goto 2)<br>&gt; &gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt; I would like to make a V (or W) cycle starting on the finest grid
<br>&gt; &gt;&gt;&gt;&gt;&gt; instead. On the finest grid I would like to apply boundary<br>&gt; &gt;&gt;&gt;&gt;&gt; conditions, provide the previous time step as an initial guess and<br>&gt; &gt;&gt;&gt;&gt;&gt; use &quot;coarse grid correction&quot; only. My own code is (probably) full of
<br>&gt; &gt;&gt;&gt;&gt;&gt; errors :-) so I have tried running the multigrid examples under KSP<br>&gt; &gt;&gt;&gt;&gt;&gt; and SNES with -pc_type richardson and/or, -pc_mg_type additive and/or<br>&gt; &gt;&gt;&gt;&gt;&gt; -ksp_type preonly 
etc.What I can see using -ksp/snes_view is that the<br>&gt; &gt;&gt;&gt;&gt;&gt; starting point is always the coarsest grid with dimensions given by<br>&gt; &gt;&gt;&gt;&gt;&gt; DACreateNd ? The next MG-Grids are always finer. Can I make DMMG
<br>&gt; &gt;&gt;&gt;&gt;&gt; start on the finest grid with dimensions given in DACreateNd ?<br>&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;You need to create a DA with a coarser size so that after it is<br>&gt; &gt;&gt;&gt;&gt; refined the number of times it gives you the grid you want. That is if
<br>&gt; &gt;&gt;&gt;&gt; you want 5 grid points with two levels you would create a DA with 3<br>&gt; &gt;&gt;&gt;&gt; grid points and pass that into the DMMG. Sorry there is no way to<br>&gt; &gt;&gt;&gt;&gt; start with a DA on the finest (but you get the same effect by starting
<br>&gt; &gt;&gt;&gt;&gt; with a coarser DA.<br>&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; Barry<br>&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt; Cheers and thanks Jens<br>&gt; &gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt; ________________________________
<br>&gt; &gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt; Fra: Barry Smith [mailto:<a href="mailto:petsc-maint@mcs.anl.gov">petsc-maint@mcs.anl.gov</a>]<br>&gt; &gt;&gt;&gt;&gt;&gt; Sendt: on 29-03-2006 17:20<br>&gt; &gt;&gt;&gt;&gt;&gt; Til: 
<a href="mailto:jens.madsen@risoe.dk">jens.madsen@risoe.dk</a><br>&gt; &gt;&gt;&gt;&gt;&gt; Cc: <a href="mailto:petsc-maint@mcs.anl.gov">petsc-maint@mcs.anl.gov</a><br>&gt; &gt;&gt;&gt;&gt;&gt; Emne: Re: [PETSC #14613] DMMG question
<br>&gt; &gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp; Jens,<br>&gt; &gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;YOu can access any of the low level PCMG options from
<br>&gt; &gt;&gt;&gt;&gt;&gt; DMMG. For example, -pc_type richardson gives you &quot;multigrid<br>&gt; &gt;&gt;&gt;&gt;&gt; as a solve&quot;. -pc_mg_type additive gives you additive<br>&gt; &gt;&gt;&gt;&gt;&gt; -pc_mg_type multiplicative gives you standard v or w cycel
<br>&gt; &gt;&gt;&gt;&gt;&gt; -pc_mg_type full gives &quot;full&quot; multigrid&quot;.&nbsp;&nbsp;-pg_mg_cycles 2<br>&gt; &gt;&gt;&gt;&gt;&gt; gives W cycle. -pc_mg_levels_pc_type sor gives SOR as the smoother<br>&gt; &gt;&gt;&gt;&gt;&gt; etc etc etc. Run with -help to see all the choices for the parts
<br>&gt; &gt;&gt;&gt;&gt;&gt; of the multigrid process.<br>&gt; &gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;Barry<br>&gt; &gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt; As Matt noted, using the PCMG directly requires YOU provide
<br>&gt; &gt;&gt;&gt;&gt;&gt; a mesh infrastructure that manages the meshes, thus it is not<br>&gt; &gt;&gt;&gt;&gt;&gt; realistic for us to provide this whole infrastructure in an<br>&gt; &gt;&gt;&gt;&gt;&gt; example. We currently only provide the full infrastructure
<br>&gt; &gt;&gt;&gt;&gt;&gt; for structured grids (in DMMG).<br>&gt; &gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt; On Wed, 29 Mar 2006, <a href="mailto:jens.madsen@risoe.dk">jens.madsen@risoe.dk</a> wrote:<br>&gt; &gt;&gt;&gt;&gt;&gt;&gt; Hi Petsc :-)
<br>&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt;&gt; I am trying to use Petsc for solving plasma fluid equations. Is it<br>&gt; &gt;&gt;&gt;&gt;&gt;&gt; possible to use the DMMG with multiplicative or additive multigrid
<br>&gt; &gt;&gt;&gt;&gt;&gt;&gt; schemes ? Also can I use multigrid as a solver not only as a<br>&gt; &gt;&gt;&gt;&gt;&gt;&gt; preconditioner in DMMG ?<br>&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt;&gt; Also I cannot find any examples using the &quot;low-level&quot;&nbsp;&nbsp;PCMG<br>&gt; &gt;&gt;&gt;&gt;&gt;&gt; multigrid interface ? Only a testprogram in the PC/TEST directory ?
<br>&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>&gt; &gt;&gt;&gt;&gt;&gt;&gt; Cheers Jens Madsen<br><br></blockquote></div><br><br clear="all"><br>-- <br>&quot;Failure has a thousand explanations. Success doesn't need one&quot; -- Sir Alec Guiness