Jed, ierr = PCLSCAllocate_Private(pc);CHKERRQ(ierr); ierr = PetscObjectQuery((PetscObject)pc->pmat,"LSC_L",(PetscObject*)&L);CHKERRQ(ierr); ierr = PetscObjectQuery((PetscObject)pc->pmat,"LSC_Lp",(PetscObject*)&Lp);CHKERRQ(ierr); It uses pc->pmat in both places. Is this really what you want? Wouldn't you sometimes want mat? Barry