Skip to content
  • Marcus Mohr's avatar
    Add numberOfLocalDoFs() for Generic- and BlockFunctions · 11449739
    Marcus Mohr authored
    Our usual tag-based approach to the numberOfLocalDoFs() free functions
    cannot work with Generic- and BlockFunctions, as for those we need an
    object instance of the class to determine that value.
    
    In order to remain somewhat compatible with the current approach this
    commit adds a version of numberOfLocalDoFs() that takes as input a
    function object. For our standard function classes work is then delegated
    to the existing free functions by determining the function tag. For the
    Generic- and BlockFunction we have special implementations that call
    their getNumberOfLocalDoFs() member function.
    
    For the case of the GenericFunction this member function is implemented
    by this commit. As usual it is purely virtual and the actual implementation
    happens in the FunctionWrapper class.
    
    We use this new function variant in the construction of PETScVector for
    testing and as this is where we will need it when converting
    GenericFunction objects to PETScVector objects.
    
    Additionally this commit implements enumerate() without an offset in
    GenericFunction and FunctionWrapper.
    11449739