Tuning the bddc preconditioner

3 months 2 weeks ago #2961 by Guosheng Fu
Hi,

I have a symmetric indefinite matrix to solve,
K = [A, B]
[B^T -S].
Minres with a block diagonal preconditioner
M = [A^{-1} 0]
[0, S^{-1}]
works quite well for this particular system.

Here A is roughly a (h.o.) mass matrix and S is the diffusion operator.
I was wondering if the bddc preconditioner can be separately applied to the sub matrices A and S, instead of directly on the big matrix K by default?

Also, how can I change the coarsetype in bddc to other solvers like the ones in the petsc library?

Best regards,
Guosheng

Please Log in or Create an account to join the conversation.

3 months 2 weeks ago #2962 by lkogler

I was wondering if the bddc preconditioner can be separately applied to the sub matrices A and S, instead of directly on the big matrix K by default?

You could set up two seperate bddc preconditioners and then use BlockMatrix.

Also, how can I change the coarsetype in bddc to other solvers like the ones in the petsc library?

This does not currently work with the PETSc interface, sorry.

Best,
Lukas

Please Log in or Create an account to join the conversation.

3 months 2 weeks ago #2963 by Guosheng Fu
How to apply bddc to submatrices? Do I need to create separate bilinear forms for each block, or can I directly work with the big bilinear form by providing the active dofs?
Here is a minimal code:
(u,p) , (v,q) = fes.TnT()
a = BilinearForm(fes, condense=True)
a += (u*v - grad(p)*grad(q))*dx
c = Preconditioner(a, "bddc") # change it to two bddc for each block
a.Assemble()

Please Log in or Create an account to join the conversation.

3 months 2 weeks ago #2964 by lkogler
You need separate BilinearForms.

Please Log in or Create an account to join the conversation.

© 2019 Netgen/NGSolve