Hi.

The attached file solves the [color=blue]mixed formulation of the diffusion equation[/color] as a [color=blue]block system[/color]. I would like to create a specific preconditioner:

[center]BlockMatrix( [ [D, None], [None, M] ] )[/center]

in which D = diag(a.mat) and M is the symmetric Gauss-Seidel (GS) matrix for

[center]Y = b.mat @ D[sup]-1[/sup] @ b.mat.T[/center]

where @ means matrix multiplication. I know one can create [color=blue]Jacobi and GS preconditioners, but I first need to compute matrix Y. Is this possible in NGSolve, so that Y can be a BaseMatrix for GS?

I would appreciate any advice about best practices for doing linear algebra in NGSolve.

Thank you,

Barry

Attachment: block_2020-01-21.py