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/