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.