<div class="gmail_quote">On Tue, Mar 6, 2012 at 11:00, Abdul Hanan Sheikh <span dir="ltr">&lt;<a href="mailto:hanangul12@yahoo.co.uk" target="_blank">hanangul12@yahoo.co.uk</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div><span>I make my query simpler: how can I implement a preconditioner of form <br></span></div><div><span><br></span></div><div><span>P = I - A*P*(A_H)^-1 * R  <br></span></div><div><span>with any Krylov , where</span></div>

<div><span>I : Identity</span></div><div><span>P : Prolongation</span></div><div><span>A_H : Galerkin coarse matrix</span></div><div><span>R : Restriction, <br></span></div><div><br><span></span></div><div><span>Can I exploit the CGC part of PCMG , by making its pre and post smoother null ? </span></div>

</blockquote></div><br><div>You use P twice in the above, but I think I see what you mean. You can certainly use PCMG with no pre- or post-smoother or you could do the same here with PCComposite, but you probably don&#39;t want that extra application of A in the preconditioner unless you are going to use a post-smoother.</div>

<div><br></div><div>That is, suppose C = P*A_H^{-1}*R is the coarse grid solver. Then with a post-smoother S, application of the preconditioner to the vector b would be C b + S (b - A C b). If you drop the post-smoother by setting S = I, you get C b + b - A C b. Keeping the extra multiplication with A and not using a post-smoother will likely destabilize the method. As an example, take src/snes/examples/tutorials/ex5.c and just look at the first linear solve with 2-level method. First, with an additive coarse grid correction and no fine grid smoother (i.e. the preconditioner is I + C where C is an Prolongate*Exact_Coarse_Solve*Restrict).</div>
<div><font face="&#39;courier new&#39;, monospace"><br></font></div><div><div><font face="&#39;courier new&#39;, monospace">$ ./ex5 -da_grid_x 201 -da_grid_y 201 -snes_max_it 1 -ksp_monitor_singular_value -pc_type mg -pc_mg_levels 2 -pc_mg_type additive -mg_levels_ksp_type preonly -mg_levels_pc_type  none</font></div>
<div><font face="&#39;courier new&#39;, monospace">    0 KSP Residual norm 1.991818008559e+01 % max 1.000000000000e+00 min 1.000000000000e+00 max/min 1.000000000000e+00</font></div><div><font face="&#39;courier new&#39;, monospace">    1 KSP Residual norm 8.562399481020e+00 % max 9.703742797548e-01 min 9.703742797548e-01 max/min 1.000000000000e+00</font></div>
<div><font face="&#39;courier new&#39;, monospace">    2 KSP Residual norm 1.547282124742e+00 % max 4.106911489507e+00 min 9.455565835409e-01 max/min 4.343379931984e+00</font></div><div><font face="&#39;courier new&#39;, monospace">    3 KSP Residual norm 5.193012838962e-01 % max 7.849972917628e+00 min 9.390711734984e-01 max/min 8.359294949267e+00</font></div>
<div><font face="&#39;courier new&#39;, monospace">    4 KSP Residual norm 1.844773292053e-01 % max 8.102437955088e+00 min 9.157291371635e-01 max/min 8.848072673744e+00</font></div><div><font face="&#39;courier new&#39;, monospace">    5 KSP Residual norm 6.904332859839e-02 % max 8.102847554075e+00 min 8.906430581537e-01 max/min 9.097749631454e+00</font></div>
<div><font face="&#39;courier new&#39;, monospace">    6 KSP Residual norm 3.747280928850e-02 % max 8.131998087718e+00 min 8.796142392701e-01 max/min 9.244959579630e+00</font></div><div><font face="&#39;courier new&#39;, monospace">    7 KSP Residual norm 1.781146506612e-02 % max 8.153370848515e+00 min 8.294602459028e-01 max/min 9.829730705949e+00</font></div>
<div><font face="&#39;courier new&#39;, monospace">    8 KSP Residual norm 7.506605928852e-03 % max 8.160488227056e+00 min 8.035220795876e-01 max/min 1.015589793282e+01</font></div><div><font face="&#39;courier new&#39;, monospace">    9 KSP Residual norm 3.771683771569e-03 % max 8.185296438244e+00 min 7.986463109034e-01 max/min 1.024896293452e+01</font></div>
<div><font face="&#39;courier new&#39;, monospace">   10 KSP Residual norm 1.900344739083e-03 % max 8.246526708637e+00 min 7.835579388152e-01 max/min 1.052446322107e+01</font></div><div><font face="&#39;courier new&#39;, monospace">   11 KSP Residual norm 8.969235041181e-04 % max 8.246542749144e+00 min 7.698718962697e-01 max/min 1.071157784704e+01</font></div>
<div><font face="&#39;courier new&#39;, monospace">   12 KSP Residual norm 3.771331016150e-04 % max 8.253249205705e+00 min 7.665454362492e-01 max/min 1.076681017904e+01</font></div><div><font face="&#39;courier new&#39;, monospace">   13 KSP Residual norm 1.998592159889e-04 % max 8.323950632412e+00 min 7.632295016946e-01 max/min 1.090622232753e+01</font></div>
<div><font face="&#39;courier new&#39;, monospace">   14 KSP Residual norm 9.624660396860e-05 % max 8.327354837686e+00 min 7.567183120253e-01 max/min 1.100456366042e+01 </font></div></div><div><br></div><div>This is identical with one step of Richardson (-mg_levels_ksp_type richardson) because the &quot;initial guess&quot; is 0. The convergence is somewhat better if we improve the additive fine-grid smoother, e.g. ILU or SOR, though the condition number is actually worse in this case (because the preconditioned operator is now non-normal, the eigenvalues are well-clustered).</div>
<div><br></div><div><div><font face="&#39;courier new&#39;, monospace">$ ./ex5 -da_grid_x 201 -da_grid_y 201 -snes_max_it 1 -ksp_monitor_singular_value -pc_type mg -pc_mg_levels 2 -pc_mg_type additive -mg_levels_ksp_type preonly -mg_levels_pc_type ilu</font></div>
<div><font face="&#39;courier new&#39;, monospace">    0 KSP Residual norm 1.997267177320e+01 % max 1.000000000000e+00 min 1.000000000000e+00 max/min 1.000000000000e+00</font></div><div><font face="&#39;courier new&#39;, monospace">    1 KSP Residual norm 5.755612216067e+00 % max 9.658916552787e-01 min 9.658916552787e-01 max/min 1.000000000000e+00</font></div>
<div><font face="&#39;courier new&#39;, monospace">    2 KSP Residual norm 2.828695990580e-01 % max 2.491505412300e+00 min 9.583727874764e-01 max/min 2.599724705102e+00</font></div><div><font face="&#39;courier new&#39;, monospace">    3 KSP Residual norm 1.097671648754e-01 % max 7.900124346250e+00 min 5.695048906547e-01 max/min 1.387191659964e+01</font></div>
<div><font face="&#39;courier new&#39;, monospace">    4 KSP Residual norm 2.203949856452e-02 % max 9.291338218054e+00 min 3.581794670449e-01 max/min 2.594045464055e+01</font></div><div><font face="&#39;courier new&#39;, monospace">    5 KSP Residual norm 8.497097452426e-03 % max 1.013788428797e+01 min 3.272689944775e-01 max/min 3.097722197653e+01</font></div>
<div><font face="&#39;courier new&#39;, monospace">    6 KSP Residual norm 1.376443389574e-03 % max 1.055586782597e+01 min 2.933041209977e-01 max/min 3.598949714743e+01</font></div><div><font face="&#39;courier new&#39;, monospace">    7 KSP Residual norm 2.753520742081e-04 % max 1.061464021647e+01 min 2.893817762727e-01 max/min 3.668040314489e+01</font></div>
<div><font face="&#39;courier new&#39;, monospace">    8 KSP Residual norm 6.552848547677e-05 % max 1.062831125267e+01 min 2.883290857853e-01 max/min 3.686173812025e+01</font></div></div><div><br></div><div>&quot;Kaskade&quot; multigrid applies no pre-smoother, but uses a multiplicative post-smoother. That is what I wrote above and probably what you wanted.</div>
<div><br></div><div><div><font face="&#39;courier new&#39;, monospace">$ ./ex5 -da_grid_x 201 -da_grid_y 201 -snes_max_it 1 -ksp_monitor_singular_value -pc_type mg -pc_mg_levels 2 -pc_mg_type kaskade -mg_levels_ksp_type richardson -mg_levels_pc_type none</font></div>
<div><font face="&#39;courier new&#39;, monospace">    0 KSP Residual norm 1.981089588505e+01 % max 1.000000000000e+00 min 1.000000000000e+00 max/min 1.000000000000e+00</font></div><div><font face="&#39;courier new&#39;, monospace">    1 KSP Residual norm 3.481667117996e+00 % max 9.904507054699e-01 min 9.904507054699e-01 max/min 1.000000000000e+00</font></div>
<div><font face="&#39;courier new&#39;, monospace">    2 KSP Residual norm 1.652167261481e+00 % max 5.608992736195e+00 min 9.879184804293e-01 max/min 5.677586609937e+00</font></div><div><font face="&#39;courier new&#39;, monospace">    3 KSP Residual norm 1.627219442360e+00 % max 6.798397388800e+00 min 9.550178771471e-01 max/min 7.118607464301e+00</font></div>
<div><font face="&#39;courier new&#39;, monospace">    4 KSP Residual norm 7.880741343988e-01 % max 7.451381264321e+00 min 7.145924145893e-01 max/min 1.042745642438e+01</font></div><div><font face="&#39;courier new&#39;, monospace">    5 KSP Residual norm 3.537498074218e-01 % max 7.663873901737e+00 min 5.751738420032e-01 max/min 1.332444791829e+01</font></div>
<div><font face="&#39;courier new&#39;, monospace">    6 KSP Residual norm 1.078704665358e-01 % max 7.800309555756e+00 min 5.120187805734e-01 max/min 1.523442079023e+01</font></div><div><font face="&#39;courier new&#39;, monospace">    7 KSP Residual norm 4.407455476078e-02 % max 7.855365072615e+00 min 5.037708740493e-01 max/min 1.559313068156e+01</font></div>
<div><font face="&#39;courier new&#39;, monospace">    8 KSP Residual norm 2.107104852559e-02 % max 7.893144033146e+00 min 5.025484383148e-01 max/min 1.570623532254e+01</font></div><div><font face="&#39;courier new&#39;, monospace">    9 KSP Residual norm 1.763159978441e-02 % max 7.912218583050e+00 min 5.024504696471e-01 max/min 1.574726079688e+01</font></div>
<div><font face="&#39;courier new&#39;, monospace">   10 KSP Residual norm 1.745405855993e-02 % max 7.928099602729e+00 min 5.023138582042e-01 max/min 1.578315922056e+01</font></div><div><font face="&#39;courier new&#39;, monospace">   11 KSP Residual norm 1.376977330994e-02 % max 7.939644155950e+00 min 5.017479535724e-01 max/min 1.582396918497e+01</font></div>
<div><font face="&#39;courier new&#39;, monospace">   12 KSP Residual norm 9.446347797152e-03 % max 7.949376050758e+00 min 5.015718142316e-01 max/min 1.584892895734e+01</font></div><div><font face="&#39;courier new&#39;, monospace">   13 KSP Residual norm 6.843342509359e-03 % max 7.956996132919e+00 min 4.969226601251e-01 max/min 1.601254434828e+01</font></div>
<div><font face="&#39;courier new&#39;, monospace">   14 KSP Residual norm 6.437072325338e-03 % max 7.961936315836e+00 min 4.932296836382e-01 max/min 1.614245164059e+01</font></div><div><font face="&#39;courier new&#39;, monospace">   15 KSP Residual norm 6.091589527973e-03 % max 7.966811508176e+00 min 4.932019218895e-01 max/min 1.615324505966e+01</font></div>
<div><font face="&#39;courier new&#39;, monospace">   16 KSP Residual norm 4.652185214024e-03 % max 7.970648347219e+00 min 4.916668205282e-01 max/min 1.621148309064e+01</font></div><div><font face="&#39;courier new&#39;, monospace">   17 KSP Residual norm 3.701849685772e-03 % max 7.973893800218e+00 min 4.915344876340e-01 max/min 1.622245030781e+01</font></div>
<div><font face="&#39;courier new&#39;, monospace">   18 KSP Residual norm 3.482133374032e-03 % max 7.976475806296e+00 min 4.911811815837e-01 max/min 1.623937582580e+01</font></div><div><font face="&#39;courier new&#39;, monospace">   19 KSP Residual norm 3.465608263872e-03 % max 7.978688479804e+00 min 4.898709616560e-01 max/min 1.628732687652e+01</font></div>
<div><font face="&#39;courier new&#39;, monospace">   20 KSP Residual norm 3.149472026786e-03 % max 7.980652326863e+00 min 4.891722853032e-01 max/min 1.631460441778e+01</font></div><div><font face="&#39;courier new&#39;, monospace">   21 KSP Residual norm 2.763464672775e-03 % max 7.982383839733e+00 min 4.891419493795e-01 max/min 1.631915612607e+01</font></div>
<div><font face="&#39;courier new&#39;, monospace">   22 KSP Residual norm 2.689646479190e-03 % max 7.983807057995e+00 min 4.876132849055e-01 max/min 1.637323531811e+01</font></div><div><font face="&#39;courier new&#39;, monospace">   23 KSP Residual norm 2.661061400431e-03 % max 7.985119113668e+00 min 4.836465184065e-01 max/min 1.651023797292e+01</font></div>
<div><font face="&#39;courier new&#39;, monospace">   24 KSP Residual norm 2.383953808700e-03 % max 7.986314359135e+00 min 4.718949191329e-01 max/min 1.692392529636e+01</font></div><div><font face="&#39;courier new&#39;, monospace">^C</font></div>
</div><div><br></div><div>Okay, that didn&#39;t work. But it was because the Richardson step was too large. We can get away without a traditional smoothing step by fixing the relaxation parameter for Richardson:</div><div>
<br></div><div><div><div><font face="&#39;courier new&#39;, monospace">$ ./ex5 -da_grid_x 201 -da_grid_y 201 -snes_max_it 1 -ksp_monitor_singular_value -pc_type mg -pc_mg_levels 2 -pc_mg_type kaskade -mg_levels_ksp_type richardson -mg_levels_pc_type none -mg_levels_ksp_richardson_self_scale</font></div>
<div><font face="&#39;courier new&#39;, monospace">    0 KSP Residual norm 1.975857018746e+01 % max 1.000000000000e+00 min 1.000000000000e+00 max/min 1.000000000000e+00</font></div><div><font face="&#39;courier new&#39;, monospace">    1 KSP Residual norm 2.476038171898e+00 % max 9.622055302029e-01 min 9.622055302029e-01 max/min 1.000000000000e+00</font></div>
<div><font face="&#39;courier new&#39;, monospace">    2 KSP Residual norm 3.723935286980e-02 % max 1.019358214307e+00 min 8.790661889416e-01 max/min 1.159592107091e+00</font></div><div><font face="&#39;courier new&#39;, monospace">    3 KSP Residual norm 1.048082002961e-02 % max 2.231045830559e+00 min 2.203725693734e-01 max/min 1.012397249305e+01</font></div>
<div><font face="&#39;courier new&#39;, monospace">    4 KSP Residual norm 4.815690407780e-03 % max 3.167321755561e+00 min 1.859713575290e-01 max/min 1.703123425911e+01</font></div><div><font face="&#39;courier new&#39;, monospace">    5 KSP Residual norm 2.282674490066e-03 % max 5.220845319337e+00 min 1.603210979291e-01 max/min 3.256492992360e+01</font></div>
<div><font face="&#39;courier new&#39;, monospace">    6 KSP Residual norm 5.030060118813e-04 % max 6.078990414170e+00 min 1.535348150609e-01 max/min 3.959356326940e+01</font></div><div><font face="&#39;courier new&#39;, monospace">    7 KSP Residual norm 2.084516564815e-04 % max 6.195047474999e+00 min 1.466558297789e-01 max/min 4.224208123426e+01</font></div>
<div><font face="&#39;courier new&#39;, monospace">    8 KSP Residual norm 6.654981023267e-05 % max 6.379643313848e+00 min 1.442472810392e-01 max/min 4.422713043801e+01</font></div></div></div><div><br></div><div>Unfortunately, convergence is very sensitive to that step and for variable coefficient problems, we won&#39;t be able to choose a good value. If we know the matrix diagonal, we can get a lot more robustness by post-smoothing with Jacobi, and now we don&#39;t need that pesky scaling parameter.</div>
<div><br></div><div><div><font face="&#39;courier new&#39;, monospace">$ ./ex5 -da_grid_x 201 -da_grid_y 201 -snes_max_it 1 -ksp_monitor_singular_value -pc_type mg -pc_mg_levels 2 -pc_mg_type kaskade -mg_levels_ksp_type richardson -mg_levels_pc_type jacobi</font></div>
<div><font face="&#39;courier new&#39;, monospace">    0 KSP Residual norm 1.975846409514e+01 % max 1.000000000000e+00 min 1.000000000000e+00 max/min 1.000000000000e+00</font></div><div><font face="&#39;courier new&#39;, monospace">    1 KSP Residual norm 2.482202615145e+00 % max 9.621966917526e-01 min 9.621966917526e-01 max/min 1.000000000000e+00</font></div>
<div><font face="&#39;courier new&#39;, monospace">    2 KSP Residual norm 4.457401425338e-02 % max 1.020264072916e+00 min 8.821750286291e-01 max/min 1.156532479163e+00</font></div><div><font face="&#39;courier new&#39;, monospace">    3 KSP Residual norm 1.637472997384e-02 % max 1.776622548172e+00 min 7.524631434334e-01 max/min 2.361075839629e+00</font></div>
<div><font face="&#39;courier new&#39;, monospace">    4 KSP Residual norm 3.644899164209e-03 % max 1.907783379671e+00 min 4.245698995769e-01 max/min 4.493449445127e+00</font></div><div><font face="&#39;courier new&#39;, monospace">    5 KSP Residual norm 1.443735788456e-03 % max 1.935858887793e+00 min 3.898702611314e-01 max/min 4.965392544111e+00</font></div>
<div><font face="&#39;courier new&#39;, monospace">    6 KSP Residual norm 3.929697132002e-04 % max 1.961850264833e+00 min 3.669296462786e-01 max/min 5.346666001861e+00</font></div><div><font face="&#39;courier new&#39;, monospace">    7 KSP Residual norm 1.446207699005e-04 % max 1.970859698383e+00 min 3.614358036844e-01 max/min 5.452862384670e+00</font></div>
</div>