<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div>  From src/ksp/pc/impls/fieldsplit/fieldsplit.c this is how the saddle point is detected and set into the PC</div><div><br class=""></div><div><div>     if (jac->detect) {</div><div>        IS       zerodiags,rest;</div><div>        PetscInt nmin,nmax;</div><div><br class=""></div><div>        ierr = MatGetOwnershipRange(pc->mat,&nmin,&nmax);CHKERRQ(ierr);</div><div>        if (jac->diag_use_amat) {</div><div>          ierr = MatFindZeroDiagonals(pc->mat,&zerodiags);CHKERRQ(ierr);</div><div>        } else {</div><div>          ierr = MatFindZeroDiagonals(pc->pmat,&zerodiags);CHKERRQ(ierr);</div><div>        }</div><div>        ierr = ISComplement(zerodiags,nmin,nmax,&rest);CHKERRQ(ierr);</div><div>        ierr = PCFieldSplitSetIS(pc,"0",rest);CHKERRQ(ierr);</div><div>        ierr = PCFieldSplitSetIS(pc,"1",zerodiags);CHKERRQ(ierr);</div><div>        ierr = ISDestroy(&zerodiags);CHKERRQ(ierr);</div><div>        ierr = ISDestroy(&rest);CHKERRQ(ierr);</div><div><br class=""></div><div>In addition these two options are set</div><div><br class=""></div><div><div>PetscErrorCode PCFieldSplitSetDetectSaddlePoint(PC pc,PetscBool flg)</div><div>{</div><div>  PC_FieldSplit  *jac = (PC_FieldSplit*)pc->data;</div><div>  PetscErrorCode ierr;</div><div><br class=""></div><div>  PetscFunctionBegin;</div><div>  jac->detect = flg;</div><div>  if (jac->detect) {</div><div>    ierr = PCFieldSplitSetType(pc,PC_COMPOSITE_SCHUR);CHKERRQ(ierr);</div><div>    ierr = PCFieldSplitSetSchurPre(pc,PC_FIELDSPLIT_SCHUR_PRE_SELF,NULL);CHKERRQ(ierr);</div><div>  }</div><div>  PetscFunctionReturn(0);</div><div>}</div><div><br class=""></div><div>You can use these routines to directly manage the IS yourself in any manner you choice.</div><div><br class=""></div><div>Good luck</div><div><br class=""></div><div>  Barry</div><div><br class=""></div></div><blockquote type="cite" class=""><div class="">On Oct 18, 2020, at 2:55 PM, Namala, Solomon <<a href="mailto:namala2@illinois.edu" class="">namala2@illinois.edu</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">Hello,</div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">I am working to solve Stokes problem on a domain that is discretized using two different types of mesh. A part of the mesh uses fem formulation and the rest uses nodal integral method (NIM) formulation (the details of which I will skip). However, the key takeaway is that NIM formulation of stokes uses pressure Poisson formulation instead of the continuity equation while FEM formulation uses the continuity equation. They are coupled at the interface. Right now, I am building a single matrix for the entire domain and solving it using fieldsplit option in a nested fashion. The matrix structure and the unknown vector are shown below. </div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">My questions are:</div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><div style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><ul class=""><li class=""><font face="Calibri, Arial, Helvetica, sans-serif" class=""><span style="caret-color: rgb(0, 0, 0);" class="">Are there any basic guidelines to solve these kind of problems.</span></font></li><li class=""><font face="Calibri, Arial, Helvetica, sans-serif" class=""><span style="caret-color: rgb(0, 0, 0);" class="">As I have mentioned I am currently using nested fieldsplit. The first split is using indices and the other split is done using detect saddle point option. is there a way to avoid using that option and doing it by combining set of indices or fields.</span></font><span style="caret-color: rgb(0, 0, 0); background: var(--white);" class=""> </span></li></ul></div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">The matrix structure is </div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">[A<sub class="">u_fem  <span class="Apple-converted-space"> </span></sub>B<sub class="">p_fem</sub>   0   0]</div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">[C<sub class="">u_fem.       </sub>0          0   0]</div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt;" class="">[0            0        D<sub class="">u_nim    </sub>E<sub class="">p_nim</sub>]</div><div style="font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif;" class=""><span style="font-size: 12pt;" class="">[0            0           0         F<sub class="">p_nim</sub>]</span></div><div style="font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif;" class=""><span style="font-size: 12pt;" class=""><br class=""></span></div><div style="font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif;" class=""><span style="font-size: 12pt;" class="">the unknown vector is given by</span></div><div style="font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif;" class=""><span style="font-size: 12pt;" class=""><br class=""></span></div><div style="font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif;" class=""><span style="font-size: 12pt;" class="">[u<sub class="">fem</sub> p<sub class="">fem</sub> u<sub class="">nim</sub> p<sub class="">nim</sub>]</span></div><div style="font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif;" class=""><span style="font-size: 12pt;" class=""><br class=""></span></div><div style="font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif;" class=""><span style="font-size: 12pt;" class="">Let me know if any additional information is needed.</span></div><div style="font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif;" class=""><span style="font-size: 12pt;" class=""><br class=""></span></div><div style="font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Calibri, Arial, Helvetica, sans-serif;" class=""><span style="font-size: 12pt;" class="">Thanks,<br class="">Solomon.</span></div></div></blockquote></div><br class=""></body></html>