Lars,
> I am trying to implement and HDG like method from [1], but without the
> elimination process described in step 51. Thereby creating a block matrix.
>
> To implement this I use as finite element a system of FE_DGQ + FE_FaceQ.
> On the face I need to compute integrals between the functions from the
> trace space (i.e., from FE_FaceQ) and the normal times gradient of the
> functions inside the element (i.e., from FE_DGQ). Therefore, I pass
> update_gradients to FE_FaceValues, but this runs into the exception that
> the gradients are not implemented for FE_FaceQ. Note that the lack of
> gradients of FE_FaceQ is no problem, as its gradients are not need and
> (I expect) not well defined, but I do need the gradients of FE_DGQ.
I see the problem. I *think* that the right approach would probably be
to remove the assertion in the fill_fe_values function of FE_FaceQ that
you see, and instead fill the fields that should be filled with the
gradients with some kind of numbers::signaling_nan() -- in other words,
make sure that it's allowed to call the function with update_gradient,
but also ensure that you're poisoning the returned values with values
that will trigger a floating point exception once anyone tries to use
them. (It is conceivable that these memory locations are already pre-set
to have these signaling nans in them.)
Do you want to give this a try and see whether you can come up with a patch?
Best
W.
--
------------------------------------------------------------------------
Wolfgang Bangerth email:
bang...@colostate.edu
www:
http://www.math.colostate.edu/~bangerth/