<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
Dear Petsc team,
<div class=""><br class="">
</div>
<div class="">I have a question about the setting up of a multigrid solver.</div>
<div class=""><br class="">
</div>
<div class="">I would like yo use a PCG smoother, preconditioned with a mass matrix, just on the fine level.</div>
<div class="">But when add the line for preconditioning the CG with the mass matrix my MG diverges.</div>
<div class=""><br class="">
</div>
<div class="">I have implemented the same solver in MATLAB and it converges fine. Also the operators in PETSc are the same and the PCG applied directly on the problem (without MG) works the same in both PETSC and MATLAB. </div>
<div class=""><br class="">
</div>
<div class="">This is what I do in PETSC for 2 levels:</div>
<div class=""><br class="">
</div>
<div class=""><font face="Menlo" class=""><br class="">
</font></div>
<div class="">
<div class=""><font face="Menlo" class="">    KSP space_solver;       </font></div>
<div class=""><font face="Menlo" class=""><br class="">
</font></div>
<div class=""><font face="Menlo" class="">    ierr = KSPCreate(PETSC_COMM_WORLD,&space_solver);CHKERRQ(ierr);</font></div>
<div class=""><font face="Menlo" class="">    ierr = KSPSetTolerances(space_solver,1e-8,PETSC_DEFAULT,PETSC_DEFAULT,PETSC_DEFAULT);CHKERRQ(ierr);           </font></div>
<div class=""><font face="Menlo" class="">    ierr = KSPSetOperators(space_solver, K, K);CHKERRQ(ierr); </font></div>
<div class=""><font face="Menlo" class="">    ierr = KSPSetNormType(space_solver,  KSP_NORM_UNPRECONDITIONED );CHKERRQ(ierr);  </font></div>
<div class=""><font face="Menlo" class=""><br class="">
</font></div>
<div class=""><font face="Menlo" class="">    ierr = KSPSetType(space_solver,KSPRICHARDSON);CHKERRQ(ierr);    </font></div>
<div class=""><font face="Menlo" class="">    ierr = KSPSetFromOptions(space_solver);CHKERRQ(ierr);         </font></div>
<div class=""><font face="Menlo" class="">    ierr = KSPSetUp(space_solver);CHKERRQ(ierr);        </font></div>
<div class=""><font face="Menlo" class=""><br class="">
</font></div>
<div class=""><font face="Menlo" class="">    PC pcmg;</font></div>
<div class=""><font face="Menlo" class="">    ierr = KSPGetPC(space_solver, &pcmg);</font></div>
<div class=""><font face="Menlo" class="">    ierr = PCSetType(pcmg, PCMG);    </font></div>
<div class=""><font face="Menlo" class="">    ierr = PCMGSetLevels(pcmg,levels, NULL);CHKERRQ(ierr);</font></div>
<div class=""><font face="Menlo" class="">    ierr = PCMGSetGalerkin(pcmg,PC_MG_GALERKIN_BOTH);CHKERRQ(ierr);</font></div>
<div class=""><font face="Menlo" class=""><br class="">
</font></div>
<div class=""><font face="Menlo" class="">    // smoothers</font></div>
<div class=""><font face="Menlo" class="">    for (int i = 1; i < levels; ++i)  </font></div>
<div class=""><font face="Menlo" class="">    {</font></div>
<div class=""><font face="Menlo" class="">        KSP smoother;</font></div>
<div class=""><font face="Menlo" class="">        ierr = PCMGGetSmoother(pcmg, i, &smoother);CHKERRQ(ierr);</font></div>
<div class=""><font face="Menlo" class=""><br class="">
</font></div>
<div class=""><font face="Menlo" class="">            ierr = KSPSetType(smoother, KSPCG);CHKERRQ(ierr); </font></div>
<div class=""><font face="Menlo" class="">            ierr = KSPSetOperators(smoother, K, M);CHKERRQ(ierr);             </font></div>
<div class=""><font face="Menlo" class=""><br class="">
</font></div>
<div class=""><font face="Menlo" class="">            // ierr = KSPSetUp(smoother);CHKERRQ(ierr);              </font></div>
<div class=""><font face="Menlo" class=""><br class="">
</font></div>
<div class=""><font face="Menlo" class="">            ierr = KSPSetTolerances(smoother,1e-12,PETSC_DEFAULT,PETSC_DEFAULT,s_p);CHKERRQ(ierr);               </font></div>
<div class=""><font face="Menlo" class="">            ierr = KSPSetNormType(smoother, KSP_NORM_NONE);CHKERRQ(ierr);  </font></div>
<div class=""><font face="Menlo" class=""><br class="">
</font></div>
<div class=""><font face="Menlo" class="">            PC sm;</font></div>
<div class=""><font face="Menlo" class="">            ierr = KSPGetPC(smoother, &sm);CHKERRQ(ierr);            </font></div>
<div class=""><font face="Menlo" class="">            ierr = PCSetType(sm,   PCLU);CHKERRQ(ierr);       </font></div>
<div class=""><font face="Menlo" class="">                        </font></div>
<div class=""><font face="Menlo" class="">        ierr = PCMGSetInterpolation(pcmg, i, interpolation_operators[i-1]);CHKERRQ(ierr);                   </font></div>
<div class=""><font face="Menlo" class="">    }</font></div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">I think there is a problem with the PETSc syntax, because I checked everything else and it is fine.</div>
<div class=""><br class="">
</div>
<div class="">Do you any ideas?</div>
<div class=""><br class="">
</div>
<div class="">Thank you very much!</div>
<div class=""><br class="">
</div>
<div class="">Best,</div>
<div class="">Pietro </div>
<div class=""><br class="webkit-block-placeholder">
</div>
<div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
~~~~~~~~~~~~</div>
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
Pietro Benedusi</div>
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<br class="">
</div>
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
Numerical Simulation in Science,<br class="">
Medicine and Engineering research group</div>
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
ICS, Institute of Computational Science<br class="">
</div>
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
USI, Università della Svizzera Italiana<br class="">
Via Giuseppe Buffi, 13<br class="">
CH - 6900 Lugano<br class="">
<div class=""><a href="mailto:benedp@usi.ch" class="">benedp@usi.ch</a><br class="">
<br class="">
</div>
</div>
</div>
</div>
</div>
<br class="">
</div>
</body>
</html>