libmesh
libmesh copied to clipboard
FE pre-requests for error estimation
Hi @jwpeterson,
Regarding the warning messages you're seeing in the newest vector examples:
As discussed over slack with @roystgnr, we may have a missing FE pre-request somewhere which is triggering the following "not currently being computed" warnings for me. Something to look into for a separate PR...
WARNING: Shape function gradients for HDiv elements are not currently being computed!./include/libmesh/hdiv_fe_transformation.h, line 88, compiled Oct 31 2023 at 13:52:00 ***
WARNING: Shape function curls for HDiv elements are not currently being computed!./include/libmesh/hdiv_fe_transformation.h, line 121, compiled Oct 31 2023 at 13:52:00 ***
Originally posted by @jwpeterson in https://github.com/libMesh/libmesh/pull/3686#pullrequestreview-1707126599
The culprit is the following piece of code used to evaluate the computed solution for error estimation purposes:
https://github.com/libMesh/libmesh/blob/b2248b506847fd72d37cff56b6f4d8432f6c7e92/src/error_estimation/exact_solution.C#L616-L653
We could, perhaps, add a couple of guards, or maybe just implement the missing maps, even if they aren't really used anywhere xD
nice sleuthing!
OK, so it's nothing to do with missing pre-requests, it's that the call to fe->get_dphi()
calls HDivFETransformation::map_dphi()
which is unimplemented?
even if they aren't really used anywhere
I'm not sure what you mean, dphi_values
is definitely used in the ExactSolution
function that you highlighted?
it's that the call to fe->get_dphi() calls HDivFETransformation::map_dphi() which is unimplemented
Indeed.
I'm not sure what you mean,
dphi_values
is definitely used in theExactSolution
function that you highlighted?
In the sense that, for instance for ex6/ex7, you ask for gradients but don't compute errors w/ the H1 norm, you ask for curls, but don't compute errors w/ the H(curl) norm. That's why the warnings can be safely ignored in those cases, they just don't look very nice.
So what I meant was, we can implement the maps, and they'll be used at runtime, as you rightly said. But unless the user asks for, e.g. H1/H(curl) errors for H(div) elements, they just won't affect the semantics of the program, it'll be dead code (as it currently is, it's just all zeros).