Tuning the bddc preconditioner

More
4 years 4 months 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
More
4 years 4 months 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
More
4 years 4 months 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:
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()
More
4 years 4 months ago #2964 by lkogler
You need separate BilinearForms.
Time to create page: 0.113 seconds