I am getting errors in code that I thought was working ... I create a PC shell like so:
! set shell PC call SNESGetKSP(solver%snes,innerksp,ierr) call KSPGetPC(innerksp,spc,ierr) call PCSetType(spc,PCSHELL,ierr) ! overriding opions !!! call PCShellSetApply(spc,PCShermanMorrisonApply,ierr) call PCSetApplicationContext(spc,solver,ierr) and in PCShermanMorrisonApply I have: call PCGetApplicationContext(pc,solver,ierr) call DMCompositeGetAccessArray(solver%da,xin,itwo,PETSC_NULL_INTEGER,Xsub,ierr) call DMCompositeGetAccessArray(solver%da,yout,itwo,PETSC_NULL_INTEGER,Ysub,ierr) call PCFieldSplitGetSubKSP(solver%pc,PETSC_NULL_INTEGER,subksp,ierr) call KSPSolve(subksp(1),Xsub(1),Ysub(1),ierr) call MatMult(solver%Cmat,Ysub(1),Xsub(2),ierr) ! ignoring <> input I get an error on this last statement about a vector being locked. There does not seem to be: call DMCompositeGetAccessArrayRead( ... I thought I fixed this problem ... or at least one like it. Mark
