<div dir="ltr"><div class="gmail_quote">On Fri, Apr 8, 2011 at 09:59,  <span dir="ltr">&lt;<a href="mailto:domenico.borzacchiello@univ-st-etienne.fr">domenico.borzacchiello@univ-st-etienne.fr</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi,<br>
I&#39;m trying to implement a 3d stokes solver on a simple cartesian staggered<br>
grid using the a MAC FV Discretisation. I&#39;m following the example given in<br>
/snes/examples/tutorials/ex30.c. As the stokes solver is ready I&#39;ll add<br>
some more complex constitutive laws. For the moment I&#39;m testing the solver<br>
with just 1-level MG and I&#39;d like a few clarification to know if what I&#39;m<br>
doing is correct.<br>
<br>
- The solver solves for u v w p. I&#39;m using a single DA with 4 DOFs and due<br>
to the MAC arrangement I have some &quot;extraboundary&quot; nodes for u ( in the y<br>
and z directions) v (x &amp; z dir) w ( x &amp; y dir) and p (x,y &amp; z dir). If<br>
what I&#39;m getting from ex30.c is right I have to write a simple identity<br>
for each of these nodes (i.e. p_extra = anyvalue) as they are not coupled<br>
with the rest of the system. I&#39;m doing the same for Dirichlet BCs nodes<br>
(i.e. u = Ubound). Is this correct?<br></blockquote><div><br></div><div>yes</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
- How does Petsc deal with the pressure-velocity coupling? Is it correct<br>
to try to solve the whole coupled system with DMMG as in ex30.c? At<br>
present time I&#39;m getting no convergence by running dmmgsolve (snes) with<br>
all the default options on a very small system.<br>
<br>
  0 SNES Function norm 7.128085632250e+00<br>
Number of Newton iterations = 0<br>
Number of Linear iterations = 0<br>
Average Linear its / Newton = -nan<br>
Converged Reason = -3<br></blockquote><div><br></div><div>You may as well check why the linear solve failed by running with -ksp_converged_reason.</div><div><br></div><div>There are two challenges for solving Stokes in this way. First, the interpolation operators that the DA gives you are probably not what you want (pressure and velocity should be interpolated differently) and second, the standard smoother of ILU is not expected to work with interlaced velocity and pressure (you would want to either use a &quot;Vanka smoother&quot; that solves small problems associated with each pressure cell and all adjacent velocities, use field-split as a smoother, or (tricky and not guaranteed to work) order the pressures last in each subdomain with ILU as a smoother).</div>
<div><br></div><div>Vanka smoothers are very problem-dependent so you would need to write that part yourself. It would be nice to have an example for Stokes. An alternative to coupled multigrid is to use PCFieldSplit at the top level and multigrid for the viscous part separately (see e.g. Elman&#39;s many papers on this approach). We don&#39;t currently have an example doing PCFieldSplit with geometric multigrid inside the splits, but it should work with petsc-dev if you follow the approach in src/ksp/ksp/examples/tutorials/ex45.c (which does not use DMMG, we are working to fold DMMG&#39;s functionality into the existing solver objects).</div>
</div></div>