Skip to content
  • Marcus Mohr's avatar
    Starts implementation of function getNumberOfDoFCouplings() · c22d6bfd
    Marcus Mohr authored
    The idea of this function is to return for a given operator
    the number of couplings between degrees of freedom. Modulo
    elimination of Dirichlet boundary conditions and zero coupling
    weights this will correspond to the number of non-zeros in
    the sparsity pattern of the associated matrix.
    
    Note that the coupling counts will only depend on the function
    spaces involved, but not on the specifics of the operator resp.
    bilinear form.
    
    Thus, getNumberOfDoFCouplings() is a driver that in turn relies
    on the actual counting being done in the countLocalDoFCouplings()
    function. Its purpose is mostly to determine from the operator
    the underlying sub-operators and function spaces.
    
    This commit implements the functionality for 2D and for
    P1Operators in 3D.
    
    Further work on coupling count
    
    - 2D case works now for P1-P1 for the "All" case
    - In 3D the results are incorrect
    - Started adding BC stuff, but will remove that again, as it get's
      too complicated; we would need to discard not only the to but also
      the from couplings on those primivites.
    
    Coupling count now works also for scalar P2 operators in 2D
    
    * Implemented the basic VertexDoFFunction and EdgeDoFFunction combos as
      building blocks.
    * Removed all boundary condition stuff.
    
    Makes getNumberOfGlobalDoFCouplings() a free-function
    
    The reason for this is that inside the Operator class we do not have
    enough information to compute the number of couplings for block operators
    such as Stokes. For those cases it is not only the supports of the
    ansatz functions that determine the number of couplings, but also the
    block structure of the operator itself.
    
    CouplingCountTest now also works for P2-P1Taylor-Hood-Stokes operators
    in 2D.
    
    Fixes problem with CouplingCountTest when building w/o PETSc
    
    Completes implementation of countLocalDoFCouplings for P1Functions in 3D
    
    The CouplingCountTest now runs through for a P1Operator on the 3D mesh
    pyramid_4el.msh. Thanks to Nils for pointing out to use getLocalEdgeID()
    to get the edge into cell couplings right.
    c22d6bfd