Skip to content
Snippets Groups Projects
  1. Jul 03, 2019
    • Robert K's avatar
      [!302] Make apply<forward> work with BlockPreconditioner and NonoverlappingBlockPreconditioner · 1baedfab
      Robert K authored
      Merge branch 'issue/apply_forward' into 'master'
      
      ref:core/dune-istl
      
      ### Summary
      
      Implement apply<forward> for NonoverlappingBlockPreconditioner and replace
      stored pointer with concrete type to allow the call to this non-virtual
      function.
      
      ### Details
      
      The method apply<forward>() is added for some preconditioners to allow to
      distinguish between forward and backward application. This is not part of the
      virtual interface in Preconditioner, so needs a concrete type to be called.
      The function was missing in the NonoverlappingBlockPreconditioner that wraps
      another preconditioner.
      
      For both block preconditioners, the function apply<forward>() is called on the
      abstract base class Preconditioner that does not have this method. So, instead
      of storing a pointer to the base class, store the passed preconditioner type
      directly that is available by template parameter.
      
      ### Backport
      
      In dune 2.6 the base-class problem was not a problem, since there always the
      template parameter type was stored. But the implementation in
      NonoverlappingBlockPreconditioner is missing there as well. This simply breaks
      generic code.
      
      Note, the problem was introduced in [!274]. This MR is related to issue [#69].
      
      See merge request [!302]
      
        [!274]: gitlab.dune-project.org/NoneNone/merge_requests/274
        [#69]: gitlab.dune-project.org/NoneNone/issues/69
        [!302]: gitlab.dune-project.org/core/dune-istl/merge_requests/302
      1baedfab
  2. Jun 27, 2019
  3. Jun 16, 2019
  4. Jun 15, 2019
  5. Jun 13, 2019
  6. Jun 12, 2019
  7. Jun 11, 2019
  8. Jun 04, 2019
  9. Jun 03, 2019
  10. May 16, 2019
  11. May 06, 2019
  12. Apr 16, 2019
    • Oliver Sander's avatar
      [!289] Simplify code using asMatrix() · 85fce383
      Oliver Sander authored
      Merge branch 'feature/implement-scalarmatrixview' into 'master'
      
      ref:core/dune-istl This is based on [dune-common!656] which introduces
      Impl::asMatrix() using this we can avoid many Hybrid::ifElse constructions
      which increase complexity of the implementation and error messages.
      Furthermore we can drop toMatrix() which fixed [#63].
      
      This is a clone of [!288]. Is was created in order to tell the CI to use the
      corresponding branch in dune-common using a matching branch name.
      
      See merge request [!289]
      
        [dune-common!656]: gitlab.dune-project.org/Nonedune-common/merge_requests/656
        [#63]: gitlab.dune-project.org/NoneNone/issues/63
        [!288]: gitlab.dune-project.org/NoneNone/merge_requests/288
        [!289]: gitlab.dune-project.org/core/dune-istl/merge_requests/289
      
      
      Closes #63
      85fce383
  13. Apr 10, 2019
  14. Apr 09, 2019
    • Oliver Sander's avatar
      [!287] Simplify implementation for vectors with scalar entries · 39995de5
      Oliver Sander authored
      Merge branch 'feature/simplify-scalar-entries' into 'master'
      
      ref:core/dune-istl Using the new Impl::asVector() from dune-common we can get
      rid of
      
      -   several Hybrid::isElse() constructions used to implement special cases for
          isNumber,
      -   undefined behaviour invoked by toVector() due to the latter violating
          strict aliasing rules.
      
      This also removed the dangerous toVector() methods. This is only a partial
      solution to [#63]. We also need to do the same for toMatrix() which requires
      an analogue Impl::asMatrix() function and a ScalarMatrixView wrapper class.
      
      See merge request [!287]
      
        [#63]: gitlab.dune-project.org/NoneNone/issues/63
        [!287]: gitlab.dune-project.org/core/dune-istl/merge_requests/287
      39995de5
    • Carsten Gräser's avatar
      Get rid of toVector() · d883ca6e
      Carsten Gräser authored and Oliver Sander's avatar Oliver Sander committed
      Using the wrapper generated by `asVector()` we can get rid of `toVector()`.
      The important difference is, that `toVector()` invokes undefined behaviour
      by dereferencing the result of an aliasing `reinterpret_cast`. However,
      there's no noteable properties of the new implementation:
      * You can't use `asVector()` directly in calls to `mv()` and friends,
        because the latter is not robust wrt. to proxy references.
      * When creating copies of values, you can't replace
        `auto rhs = v[i];` by `auto rhs = Impl::asVector(v[i])`
        because proxy references don't use deep copy on purpose.
        Instead we have to use the two step
        `auto rhsValue = v[i]; auto&& rhs = Impl::asVector(rhsValue);`
      d883ca6e
    • Carsten Gräser's avatar
      Add missing include · 36190383
      Carsten Gräser authored and Oliver Sander's avatar Oliver Sander committed
      36190383
    • Carsten Gräser's avatar
      Simplify scalar entries in block vector classes · 0e962e10
      Carsten Gräser authored and Oliver Sander's avatar Oliver Sander committed
      Using `Impl::asVector()` we can get rid of several `Hybrid::ifElse()`
      constructions used to implement the special case of scalar entries
      (i.e. `IsNumber==true`).
      0e962e10
  15. Mar 28, 2019
  16. Mar 24, 2019
  17. Mar 22, 2019
Loading