I'm sorry for the confusion. PETSc does not have a drop tolerance ILU so this function does nothing as you've noted.
Barry > On Feb 27, 2024, at 7:27 AM, Константин Мурусидзе > <konstantin.murusi...@math.msu.ru> wrote: > > This Message Is From an External Sender > This message came from outside your organization. > Hello! I have such problem, while solving linear system and using > PCFactorSetDropTolerance. As I understand this function could significantly > reduce number of iterations of system of solution, but there is no iterations > decreasing.I had try a lot of options for this function, but there is no > result > Could you suggest me if I have some mistake, while I setting up the > preconditioner? > > PetscCall(KSPSetType(ksp, KSPCG)); > PetscCall(KSPSetInitialGuessNonzero(ksp,PETSC_TRUE)); > PetscCall(KSPSetNormType(ksp, KSP_NORM_DEFAULT)); > PetscCall(KSPCGSetType(ksp, KSP_CG_SYMMETRIC)); > > PetscCall(KSPGetPC(ksp, &pc)); > PetscCall(PCSetType(pc, PCILU)); > PetscCall(PCFactorSetShiftType(pc, MAT_SHIFT_POSITIVE_DEFINITE)); > > PetscCall(PCFactorSetLevels(pc, 2)); > PetscCall(PCFactorSetReuseOrdering(pc,PETSC_TRUE)); > PetscCall(PCFactorSetDropTolerance(pc, 1.e-5, 1.e-3, 10000)); > PetscCall(PCFactorSetZeroPivot(pc, 1.e-3)); > PetscCall(KSPSetTolerances(ksp, 1.e-8, 1.e-8, PETSC_DEFAULT, > PETSC_DEFAULT)); > > PetscCall(KSPSetFromOptions(ksp)); > > PetscCall(KSPSolve(ksp, b, x)); > PetscCall(KSPGetIterationNumber(ksp, &its));