New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MG two-level restrict_and_add
functionality
#16905
Comments
Could you please elaborate on this a bit more? I would not expect the function to remain constant, because the restriction transfers residuals (i.e., quantities multiplied by test functions and integrated over the domain, or functionals in mathematical terms), so the question is what a constant input vector to the restriction would mean. In any case, I would not change the prolongation matrix without further insight, because we should implement the transpose of the prolongation (which one can interpret as applying to dual functionals). |
Along the same lines as @kronbichler , you typically choose the restriction operation as the transpose of the interpolation from coarse to fine grid. It is true that if you start with a constant function, interpolating it onto a finer grid should result in a function that is constant and has the same value. The important point is that the restriction is simply the transpose of this operation, and is -- despite its name -- not the interpolation from fine to coarse mesh. In other words, the multigrid "restriction" operation is not what the |
See also #16906. |
Thank you both for the clarification. If the restriction operator is the transpose of the prolongation operator, it makes sense that the residual does not stay constant, opposite to injection with the matrix returned by |
While working on #16856 (especially on @peterrum's comment #16856 (comment)) I noticed, that restriction function
MGTwoLevelTransfer::restrict_and_add_internal()
seems to be faulty, not only for simplex elements but also hypercube elements.When running the test
multigrid-global-coarsening/mg-transfer_a_05
with a constant function the resulting restricted vector is non-constant. As the refinement of Tet elements was changed this was expected for these kinds of elements but it is also happening for hypercube elements in 3D with polynomial degrees of 3 and above (test<3, double>(3, Functions::ConstantFunction<3, double>(1.), false);
inmain()
).Changing in
MGTwoLevelTransfer::restrict_and_add_internal()
prolongation_matrix
torestriction_matrix
reduced the error for hypercube elements but it does not vanish.With @kronbichler we discussed to introduce new
transfer.schemes
inMGTwoLevelTransfer
for the different refinement choices of the Tetrahedrons to fix the simplex transfer, yet I'm not sure where the error is for the hypercube elements.The text was updated successfully, but these errors were encountered: