1. 18 Dec, 2019 24 commits
    • Marcus Mohr's avatar
      Removes instantiations superfluous due to specialisation · ada01b0d
      Marcus Mohr authored
      Thanks to clang-8.0 for being the first compiler to remind of this.
      ada01b0d
    • Marcus Mohr's avatar
      Comments out extern template class statements · e3bb0d2a
      Marcus Mohr authored
      The commit comments out the following two statements
         extern template class VertexDoFFunction< double >;
         extern template class EdgeDoFFunction< double >;
      in the corresponding header files of the two classes. For some
      reason that is currently totally obscure to me I get errors of
      the following form when the two statements are active and the
      cpp files of the classes are compiled:
      
      VertexDoFFunction.cpp:1765:95: error: specialization of ‘void hyteg::vertexdof::VertexDoFFunction<VType>::invertElementwise(walberla::uint_t, hyteg::DoFType) const [with ValueType = double; walberla::uint_t = long unsigned int]’ after instantiation
       void VertexDoFFunction< real_t >::invertElementwise( const uint_t level, const DoFType flag ) const
      
      This happens with GCC 8.3. The error seems strange to me as my
      understanding of the statements is that they suppress instantiation.
      e3bb0d2a
    • Marcus Mohr's avatar
      Removes duplicated code error from EdgeDoFFunction.cpp · c9b0b7f4
      Marcus Mohr authored
      Removes wrong duplicated code that was introduced while fixing
      a merge during a rebase on master.
      c9b0b7f4
    • Marcus Mohr's avatar
      Combine tests for mass operators into a single file · 8533e526
      Marcus Mohr authored
      * The source file for the P2MassOperatorTest is relocated to operators
        sub-directory and renamed to MassOperatorTest.cpp. The reason is that
        we now use the file to also test P1 operators.
      * For the same reason the P1MassOperatorTest.cpp is removed.
      8533e526
    • Marcus Mohr's avatar
      Adds a P1ElementwiseOperator class · ed1c5a21
      Marcus Mohr authored
      ed1c5a21
    • Marcus Mohr's avatar
      Implements integrateAll() for P1FenicsForm · d75274b3
      Marcus Mohr authored
      We now can ask also a P1FenicsForm to compute and hand back the
      full local element matrix.
      d75274b3
    • Marcus Mohr's avatar
      Implements computeDiagonalOperatorValues() for 3D setting · dd4fcc53
      Marcus Mohr authored
      The commit implements the missing setup of the diagonal operator values,
      i.e. the central stencil weights, for the case of a 3D simulation with
      the P2ElementwiseOperator. Still needs testing, though.
      dd4fcc53
    • Marcus Mohr's avatar
      Adds setToZero() method to scalar function classes · 77bfb0fc
      Marcus Mohr authored
      We add a setToZero() method to the following functions
      - VertexDoFFunction (aka P1Function)
      - EdgeDoFFunction
      - P2Function
      The method differs from calling interpolate() with a zero constant
      in the sense that setToZero() will also set all DoFs in the halos of
      the primitives to zero, while interpolate() only touches interior
      DoFs. The new method is currently used by the P2ElementwiseOpertor.
      77bfb0fc
    • Marcus Mohr's avatar
      Fixes bug in a WALBERLA_ASSERT statement · 53e3894a
      Marcus Mohr authored
      53e3894a
    • Marcus Mohr's avatar
      Completes implementation of P2ElementwiseOperator::apply() for 3D · db776d82
      Marcus Mohr authored
      - The apply() method now also works correctly for 3D settings and we
        include the P2ElementwiseMassOperator now in the 3D test runs of
        the P2MassOperatorTest.
      - EdgeDoFIndexing now provides an additional functional
        getEdgeDoFDataIndicesFromMicroCellFEniCSOrdering()
        which is used in the 3D apply. Need to generalise our approach,
        once we also have our own P2Forms with maybe different local DoF
        numbering.
      - Removed them superfluous members of the P2ElementwiseOperator class
        and made computeDiagonalOperatorValues() a public method.
      - P2FenicsForm now provides integrateAll() which returns the complete
        local element matrix.
      - In PointND we now also typedef a Point10D, for our local vectors
        in the case of a P2Tet.
      
      TODO: Implement computeDiagonalOperatorValues() for 3D setting
      db776d82
    • Marcus Mohr's avatar
      Adds a test for new indexing functionality w.r.t. micro-cells · e14ee6f4
      Marcus Mohr authored
      This commit adds a minimal test for iterating over all micro-cells in
      a macro-cell and getting the indi9ces of vertex and edge dofs associated
      with a micro-cell.
      
      The test is not very sophisticated. So it will probably not be sufficient
      to assure correctness, but at least should help avoiding regressions.
      e14ee6f4
    • Marcus Mohr's avatar
      Adds two functions related to indexing and an auxilliary map · aac63bcd
      Marcus Mohr authored
      * The map CellTypeToStr allows to convert variables of the enum
        type CellType, such as e.g. BLUE_UP, to a string.
      * vertexdof::getVertexDoFDataIndicesFromMicroCell()
        returns the data indices, i.e. for accessing the dof values,
        of all four vertex dofs associated with a micro-cell inside
        a macro-cell.
      * edgedof::getEdgeDoFDataIndicesFromMicroCell()
        returns the data indices, i.e. for accessing the dof values,
        of all six edge dofs associated with a micro-cell inside
        a macro-cell.
      aac63bcd
    • Marcus Mohr's avatar
      9ca2b0cf
    • Marcus Mohr's avatar
      3002b6f2
    • Marcus Mohr's avatar
      Extends P2MassOperatorTest to cover 3D. · 98a642fb
      Marcus Mohr authored
      The P2MassOperatorTest will now also perform tests for two 3D meshes.
      Currently we only run this for the P2ConstantOperator, as the
      P2Elementwise is missing implementations for cells, yet.
      98a642fb
    • Marcus Mohr's avatar
      9cfe1f9f
    • Marcus Mohr's avatar
      Performs several updates on P2ElementwiseOperator class. · df8c8a5f
      Marcus Mohr authored
      - apply() method now respects the passed flag parameter and hands it
        on towards communicateAdditively(). Also we no longer update halos
        after the additive communication,
      - computeDiagonalOperatorValues() now accepts another parameter called
        invert so that we can store also the inverse of the central stencil
        value. This is now done for diagonalValues_ if needsDiagEntries is
        set to true in the constructor.
      - The commit significantly simplifies the implementation of Jacobi
        smoothing, as this now only triggers other methods and no longer
        performs computations of its own. It is now only based on
        - apply()
        - assign()
        - multElementwise()
        Thus, once apply() works for 3D so should Jacobi smoothing.
      df8c8a5f
    • Marcus Mohr's avatar
      Pimps P2JacobiGSSmoothTest to work with different operators. · 16058298
      Marcus Mohr authored
      The test now allows to supply different operators for P2 functions.
      We can also combine different mass and laplace operators, such as
      P2ElementwiseMassOperator and P2ConstantLaplaceOperator.
      16058298
    • Marcus Mohr's avatar
      Clang-formats P2MassOperatorTest.cpp · 1ffbaaca
      Marcus Mohr authored
      1ffbaaca
    • Marcus Mohr's avatar
      Updates construction of auxilliary function in P2MassOperatorTest · 0f933a0e
      Marcus Mohr authored
      It is no longer possible or necessary to pass the primitives to skip
      in the constructor of a P2Function. Commit adapts test accordingly.
      It also makes the test a little bit more verbose.
      0f933a0e
    • Marcus Mohr's avatar
      06aa9e90
    • Marcus Mohr's avatar
      Adds an invertElementwise() method to low-level DoFFunctions · 9128b9c6
      Marcus Mohr authored
      This commit implement an invertElementwise() method for the low-level
      VertexDoFFunction and EdgeDoFFunction classes. It extends the corresponding
      function tests and adds an invertElementwise() method to the P2Function
      class.
      9128b9c6
    • Marcus Mohr's avatar
      Adds a new P2ElementwiseOperator class. · 527c36cc
      Marcus Mohr authored
      This commit adds a new operator type that, like the old P1ElementwiseOperator
      that we had in the past, is based on a different paradigm than the other
      operators. Instead of working stencil-based it operates in an elementwise
      fashion, i.e. we locally apply the element matrices to element-local vectors.
      
      For this the P2FenicsForm class has a new integrateAll() method that
      hands back the complete local element matrix.
      
      The P2ConstantMassOperatorTest is changed to a P2MassOperatorTest as it
      now also, successfully, tests the P2ElementwiseMassOperator.
      
      Note: This is still work in progress; there are some issues with the
      additive communication (see issue #111 in this context) and we can only
      do 2D so far.
      527c36cc
    • Marcus Mohr's avatar
      56f68e3b
  2. 12 Dec, 2019 3 commits
  3. 11 Dec, 2019 6 commits
  4. 09 Dec, 2019 7 commits