libmesh icon indicating copy to clipboard operation
libmesh copied to clipboard

FE pre-requests for error estimation

Open nmnobre opened this issue 1 year ago • 3 comments

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

nmnobre avatar Nov 03 '23 16:11 nmnobre

nice sleuthing!

lindsayad avatar Nov 03 '23 16:11 lindsayad

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?

jwpeterson avatar Nov 03 '23 18:11 jwpeterson

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 the ExactSolution 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).

nmnobre avatar Nov 03 '23 19:11 nmnobre