HCurl Blocksmoother

Hi all,

I played around with the preconditioners for H(Curl).

If one applies either the local or the multigrid preconditioner with the block=True Flag, it correctly uses the AFW-smoother, but it seems to use all dofs, not just the freedofs.
See the attached file, where we converge to a wrong solution.

Best
Tim

BlockSmoother.ipynb (2.5 KB)

Thank you @joachim for updating the smoother!

Hi Tim,

yes, it’s fixed, and should be in the pip prereleases by now.

It was a surprise for me that the freedofs were missing for most of the smoothing blocks. Only the default smoother for 3D was working properly.

There is a new possibility to define smoothing blocks, it not yet entered the documentation. In case you want to experIment, here are a few examples:

fes.CreateSmoothingBlocks(blocktype=["vertex", "edge","face"])

produces blocks for vertices, edges, and faces.

fes.CreateSmoothingBlocks(blocktype=["vertexedge","face"])

vertexedge associates all edge and vertex-dofs around a vertex to the vertexblock.

best, Joachim