Hello again all,

I've been working at getting GMG + fieldsplit functioning together and am running into some difficulties which I hope I could get some feedback on.

In short, I cant seem to properly extract the sub-projections needed for GMG when considering problems with mutiple variables. It seems to me that this is an issue with maintaining a consistent dof ordering when passing the row and column index vectors to PetscMatrix::create_submatrix(), an order which needs to be "in sync" with the ordering of dofs coming from System::projection_matrix().

For example if I wish to extract the velocity sub-block in a Stokes type problem, my first attempt was to simply use the DofMap::local_variable_indices(), concatenating the relevant variable dofs and passing them to create_submatrix() but this seemed to provide incorrectly sorted SubMats which later manifests as deteriorated convergence on coarser grid GMG levels.

I also tried looping over active local elem, and getting their parents old_dof_indicies but this seems to provide the same submat as the earlier attempts and appears to still be ordered by variable. I'll also note that sorting these vectors seems to only make matters worse.

Ive been playing with these ideas in a branch [1] which adds a unit test that attempts to add two vars to a system, and extract the whole "sub"matrix which should be equivalent to the global projection and I cant seem to find the right way to do this.  Does anyone have any suggestions on some other DoF ordering extraction I can try, or maybe Im going about this in the wrong way altogether?

Thanks as always for any information you can provide,

 - Boris

[1] : https://github.com/bboutkov/libmesh/tree/subproj_test




_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to