Forum Message

 

 

We have moved the forum to https://forum.ngsolve.org . This is an archived version of the topics until 05/05/23. All the topics were moved to the new forum and conversations can be continued there. This forum is just kept as legacy to not invalidate old links. If you want to continue a conversation just look for the topic in the new forum.

Notice

The forum is in read only mode.

Tuning the bddc preconditioner

More
3 years 8 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
3 years 8 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
3 years 8 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
3 years 8 months ago #2964 by lkogler
You need separate BilinearForms.
Time to create page: 0.177 seconds