<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class="im"><br>
> � ! setup solver now that matrix is complete<br>
> � call KSPSetUp( solver%ksp, ierr ) �!!! poisson.F90:213<br>
<br>
</div>Where does your code call PCFieldSplitSetIS() or similar? �</blockquote><div><br></div><div>I use DM's. �I've appended some of the code and attached the whole file.</div><div>�</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
How is the<br>
PCFieldSplit supposed to know about the splits? �What runtime options<br>
are you passing?<br>
</blockquote></div><br></div><div class="gmail_extra">I just use the petsc.rc files that I sent before. �We don't usually use command line options.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Mark</div>
<div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">! lambda DM</div><div class="gmail_extra">� call VecCreate(comm,x2Vec,ierr)</div><div class="gmail_extra">� call VecSetSizes(x2Vec,N2loc,nflux,ierr)</div>
<div class="gmail_extra">� call VecSetFromOptions(x2Vec,ierr)</div><div class="gmail_extra"><br></div><div class="gmail_extra">� call DMShellCreate(comm,solver%dalam,ierr)</div><div class="gmail_extra">� call DMShellSetGlobalVector(solver%dalam,x2Vec,ierr)</div>
<div class="gmail_extra">� call DMShellSetMatrix(solver%dalam,solver%Dmat,ierr)</div><div class="gmail_extra"><br></div><div class="gmail_extra">� call VecCreate(PETSC_COMM_SELF,x2Vecloc,ierr)</div><div class="gmail_extra">
� call VecSetSizes(x2Vecloc,N2loc,N2loc,ierr)</div><div class="gmail_extra">� call VecSetFromOptions(x2Vecloc,ierr)</div><div class="gmail_extra">� call DMShellSetLocalVector(solver%dalam,x2Vecloc,ierr)</div><div class="gmail_extra">
� call VecDestroy(x2Vec,ierr)</div><div class="gmail_extra">� call VecDestroy(x2Vecloc,ierr)</div><div class="gmail_extra"><br></div><div class="gmail_extra">� ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</div>
<div class="gmail_extra">� ! �Create field split DM</div><div class="gmail_extra">� ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</div><div class="gmail_extra">� call DMCompositeCreate(comm,solver%da,ierr)</div>
<div class="gmail_extra">� CHKERRQ(ierr)</div><div class="gmail_extra">� call DMSetOptionsPrefix(solver%daphi,'phi_',ierr)</div><div class="gmail_extra">� call DMCompositeAddDM(solver%da,solver%daphi,ierr)</div><div class="gmail_extra">
� CHKERRQ(ierr)</div><div class="gmail_extra">� call DMSetOptionsPrefix(solver%dalam,'lambda_',ierr)</div><div class="gmail_extra">� call DMCompositeAddDM(solver%da,solver%dalam,ierr)</div><div class="gmail_extra">
� CHKERRQ(ierr)</div><div class="gmail_extra"><br></div><div class="gmail_extra">� matArray(1) = solver%Amat</div><div class="gmail_extra">� matArray(2) = solver%Bmat</div><div class="gmail_extra">� matArray(3) = solver%Cmat</div>
<div class="gmail_extra">� matArray(4) = solver%Dmat</div><div class="gmail_extra">� call MatCreateNest(comm,itwo,PETSC_NULL_OBJECT,itwo,PETSC_NULL_OBJECT,matArray,solver%KKTmat,ierr)</div><div class="gmail_extra">� call MatSetFromOptions(solver%KKTmat,ierr)</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">� ! �Extract global and local vectors from DM; then duplicate for remaining</div><div class="gmail_extra">� ! � � vectors that are the same types</div><div class="gmail_extra">
� call MatGetVecs(solver%KKTmat,solver%xVec2,solver%bVec2,ierr)</div><div class="gmail_extra">� call VecDuplicate(solver%bVec2,solver%rVec2,ierr)</div><div class="gmail_extra"><br></div><div class="gmail_extra">� ! create SNES</div>
<div class="gmail_extra">� call SNESCreate(comm,solver%snes,ierr)</div><div class="gmail_extra">� CHKERRQ(ierr)</div><div class="gmail_extra">� call SNESSetDM(solver%snes,solver%da,ierr)</div><div class="gmail_extra">� CHKERRQ(ierr)</div>
<div class="gmail_extra"><br></div></div></div>