Here *n_dofs = 320* and so *system_to_component_index()* does not like to have an argument i>=160 and throws an error. How come n_dofs=320 in this case ? I was expecting 2 interfaces * 2 nodes * 40 components = 160 dofs, unless I am considering all the interfaces of the cell at onces in which case I have 2 interfaces * 4 nodes * 40 components = 320.

*My main question is therefore:*
How can I access the ith component of my shape function in face_worker like in the cell_worker if I cannot use system_to_component_index() ?

You are using FEInterfaceValues, which considers the shape functions that live on the interface. This set of shape functions is the union of the shape functions living on the two adjacent cells. Because you have a discontinuous element, this set has size 2 * the number of dofs per cell, which gives you exactly the 2*160=320 you observe.

Since you can't use FiniteElement::system_to_component_index on your index 'i', you need to find a different way. One approach is to compute a mapping from this index 'i' to a pair '(here_or_there, index within cell)' and then call system_to_component_index() on the second half of the pair.

Best
 W.

--
------------------------------------------------------------------------
Wolfgang Bangerth          email:                 [email protected]
                           www: http://www.math.colostate.edu/~bangerth/

--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- You received this message because you are subscribed to the Google Groups "deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/dealii/b11d4d9f-17ae-387c-aa53-6c7f2af833ab%40colostate.edu.

Reply via email to