> On 24 Oct 2025, at 4:38 PM, Nils Schween <[email protected]> wrote:
> 
> Thank you very much Pierre!
> 
> I was not aware of the fact that the fill-in in the ILU decides about
> its quality. But its clear now. I will just test what level of fill we
> need for our application.

I’ll note that block Jacobi and ILU are not very efficient solvers in most 
instances.
I tried much fancier algebraic preconditioners such as BoomerAMG and GAMG on 
your problem, and they are failing hard out-of-the-box.
Without knowing much more on the problem, it’s difficult to setup.
We also have other more robust preconditioners in PETSc by means of domain 
decomposition methods.
deal.II is interfaced with PCBDDC (which is also somewhat difficult to tune in 
a fully algebraic mode) and you could also use PCHPDDM (in fully algebraic 
mode).
On this toy problem, PCHPDDM performs much better in terms of iteration than 
the simpler PCBJACOBI + (sub) PCILU.
Of course, as we always advise our users, it’s best to do a little bit of 
literature survey to find the best method for your application, I doubt it’s 
PCBJACOBI.
If the solver part is not a problem in your application, just carry on with 
what’s easiest for you.
If you want some precise help on either PCBDDC or PCHPDDM, feel free to get in 
touch with me in private.

Thanks,
Pierre

PCGAMG
  Linear A_ solve did not converge due to DIVERGED_ITS iterations 1000
  Linear B_ solve did not converge due to DIVERGED_ITS iterations 1000
PCHYPRE
  Linear A_ solve did not converge due to DIVERGED_NANORINF iterations 0
  Linear B_ solve did not converge due to DIVERGED_NANORINF iterations 0
PCHPDDM
  Linear A_ solve converged due to CONVERGED_RTOL iterations 4
  Linear B_ solve converged due to CONVERGED_RTOL iterations 38
PCBJACOBI
  Linear A_ solve converged due to CONVERGED_RTOL iterations 134
  Linear B_ solve did not converge due to DIVERGED_ITS iterations 1000

> Once more thanks,
> Nils
> 
> 
> Pierre Jolivet <[email protected]> writes:
> 
>>> On 24 Oct 2025, at 1:52 PM, Nils Schween <[email protected]> wrote:
>>> 
>>> Dear PETSc users, Dear PETSc developers,
>>> 
>>> in our software we are solving a linear system with PETSc using GMRES
>>> in conjunction with a BlockJacobi preconditioner, i.e. the default of
>>> the KSP object.
>>> 
>>> We have two versions of the system matrix, say A and B. The difference
>>> between them is the non-zero pattern. The non-zero pattern of matrix B
>>> is a subset of the one of matrix A. Their values should be identical.
>>> 
>>> We solve the linear system, using A yields a solution after some
>>> iterations, whereas using B does not converge.
>>> 
>>> I created binary files of the two matrices, the right-hand side, and
>>> wrote a small PETSc programm, which loads them and demonstrates the
>>> issue. I attach the files to this email.
>>> 
>>> We would like to understand why the solver-preconditioner combination
>>> works in case A and not in case B. Can you help us finding this out?
>>> 
>>> To test if the two matrices are identical, I substracted them and
>>> computed the Frobenius norm of the result. It is zero.
>> 
>> The default subdomain solver is ILU(0).
>> By definition, this won’t allow fill-in.
>> So when you are not storing the zeros in B, the quality of your PC is much 
>> worse.
>> You can check this yourself with -A_ksp_view -B_ksp_view:
>> […]
>>    0 levels of fill
>>    tolerance for zero pivot 2.22045e-14
>>    matrix ordering: natural
>>    factor fill ratio given 1., needed 1.
>>      Factored matrix follows:
>>        Mat Object: (A_) 1 MPI process
>>          type: seqaij
>>          rows=1664, cols=1664
>>          package used to perform factorization: petsc
>>          total: nonzeros=117760, allocated nonzeros=117760
>>            using I-node routines: found 416 nodes, limit used is 5
>> […]
>>    0 levels of fill
>>    tolerance for zero pivot 2.22045e-14
>>    matrix ordering: natural
>>    factor fill ratio given 1., needed 1.
>>      Factored matrix follows:
>>        Mat Object: (B_) 1 MPI process
>>          type: seqaij
>>          rows=1664, cols=1664
>>          package used to perform factorization: petsc
>>          total: nonzeros=49408, allocated nonzeros=49408
>>            not using I-node routines
>> 
>> Check the number of nonzeros of both factored Mat.
>> With -B_pc_factor_levels 3, you’ll get roughly similar convergence speed 
>> (and density in the factored Mat of both PC).
>> 
>> Thanks,
>> Pierre
>> 
>>> 
>>> To give you more context, we solve a system of partial differential
>>> equations that models astrophysical plasmas. It is essentially a system
>>> of advection-reaction equations. We use a discontinuous Galerkin (dG)
>>> method. Our code relies on the finite element library library deal.ii
>>> and its PETSc interface. The system matrices A and B are the result of
>>> the (dG) discretisation. We GMRES with a BlockJaboci preconditioner,
>>> because we do not know any better.
>>> 
>>> I tested the code I sent with PETSc 3.24.0 and 3.19.1 on my workstation, 
>>> i.e.
>>> Linux home-desktop 6.17.2-arch1-1 #1 SMP PREEMPT_DYNAMIC Sun, 12 Oct 2025 
>>> 12:45:18 +0000 x86_64 GNU/Linux
>>> I use OpenMPI 5.0.8 and I compiled with mpicc, which in my cases use
>>> gcc.
>>> 
>>> In case you need more information. Please let me know.
>>> Any help is appreciated.
>>> 
>>> Thank you,
>>> Nils 
>>> <example.tar.gz>
>>> 
>>> -- 
>>> Nils Schween
>>> 
>>> Phone: +49 6221 516 557
>>> Mail: [email protected]
>>> PGP-Key: 4DD3DCC0532EE96DB0C1F8B5368DBFA14CB81849
>>> 
>>> Max Planck Institute for Nuclear Physics
>>> Astrophysical Plasma Theory (APT)
>>> Saupfercheckweg 1, D-69117 Heidelberg
>>> https://urldefense.us/v3/__https://www.mpi-hd.mpg.de/mpi/en/research/scientific-divisions-and-groups/independent-research-groups/apt__;!!G_uCfscf7eWS!YoOlZjX4v-hbz0Oaawvh2Yy3nCbpHcafn1VjON06Or7f-WVrzGzD9SMcky5YJAyzVu62BIfzC5cpshSkkkpKpA$
>>>  
> 
> -- 
> Nils Schween
> PhD Student
> 
> Phone: +49 6221 516 557
> Mail: [email protected]
> PGP-Key: 4DD3DCC0532EE96DB0C1F8B5368DBFA14CB81849
> 
> Max Planck Institute for Nuclear Physics
> Astrophysical Plasma Theory (APT)
> Saupfercheckweg 1, D-69117 Heidelberg
> https://urldefense.us/v3/__https://www.mpi-hd.mpg.de/mpi/en/research/scientific-divisions-and-groups/independent-research-groups/apt__;!!G_uCfscf7eWS!YoOlZjX4v-hbz0Oaawvh2Yy3nCbpHcafn1VjON06Or7f-WVrzGzD9SMcky5YJAyzVu62BIfzC5cpshSkkkpKpA$
>  

Reply via email to