Skip to content
Snippets Groups Projects
  1. Aug 11, 2020
  2. Jul 17, 2020
  3. Jul 10, 2020
  4. Jul 09, 2020
  5. Jul 07, 2020
    • Oliver Sander's avatar
      [!834] Add the sparseRange() utility function · 90cbf00f
      Oliver Sander authored
      Merge branch 'feature/sparseRange' into 'master'
      
      ref:core/dune-common\> This helper allows to use for-loops with structured
      bindings for sparse ranges R whose iterators it provide an it->index() method,
      like this
      
          for(auto&& [A_i, i] : sparseRange(R))
            doSomethingWithValueAndIndex(A_i, i);
      
      This also adds a test and fixes the placement of the range-utilities in the
      appropriate doxygen group to make them easier to discover.
      
      See merge request [core/dune-common!834]
      
        [core/dune-common!834]: gitlab.dune-project.org/core/dune-common/merge_requests/834
      90cbf00f
  6. Jun 30, 2020
    • Carsten Gräser's avatar
      Add the sparseRange() utility function · 3a6e9ea0
      Carsten Gräser authored
      This helper allows to use `for`-loops with
      structured bindings for sparse ranges `R`
      whose iterators `it` provide an
      `it->index()` method, like this
      
      ```cpp
      for(auto&& [A_i, i] : sparseRange(R))
        doSomethingWithValueAndIndex(A_i, i);
      ```
      3a6e9ea0
    • Carsten Gräser's avatar
      [!781] Allow iterator based transformations in TransformedRangeView · a6bfcb25
      Carsten Gräser authored
      Merge branch 'feature/extend-transformedrangeview' into 'master'
      
      ref:core/dune-common\> This extends TransformedRangeView by also allowing to
      apply a transformation to the iterator directly. While the (existing) default
      mechanism is to use f(*it) where f is the transformation and it an iterator of
      the wrapped range, the new iterator based transformation uses f(it) instead.
      This allows to incorporate additional information from the iterator in the
      transformation.
      
      Using the new functionality one can e.g. easily implement structured bindings
      support for sparse ranges using
      
          template<class Range>
          auto sparseRange(Range&& range) {
            return Dune::transformedRangeView(std::forward<Range>(range), Dune::taggedCallback<Dune::IteratorTransformationTag>([](auto&& it) {
                return std::tuple<decltype(*it), decltype(it.index())>(*it, it.index());
            }));
          }
      
          ...
      
          for(auto&& [entry,col] :  sparseRange(matrix[row]))
            y[row] += entry*x[col];
      
      Some more implementation details:
      
      -   This adds the TaggedCallback<Tag,F> helper class and the corresponding
          generator function taggedCallback<Tag>(f) for tagging a callback. Using
          this mechanism we can provide additional information on the callback.
      -   If the TransformedRangeView is provided with a callback of type
          TaggedCallback<IteratorTransformation,F>, then it iterator based
          transformation is used.
      
      See merge request [core/dune-common!781]
      
        [core/dune-common!781]: gitlab.dune-project.org/core/dune-common/merge_requests/781
      a6bfcb25
  7. Jun 29, 2020
  8. Jun 28, 2020
  9. Jun 27, 2020
    • Simon Praetorius's avatar
      [!830] correct name PTScotch_FOUND variable in AddPTScotchFlags · ca00f0c7
      Simon Praetorius authored
      Merge branch 'feature/find_ptscotch' into 'master'
      
      ref:core/dune-common\>
      
      ### Summary
      
      Quick-Fix of a typo in the cmake variable name
      
      See merge request [core/dune-common!830]
      
        [core/dune-common!830]: gitlab.dune-project.org/core/dune-common/merge_requests/830
      ca00f0c7
    • Simon Praetorius's avatar
      5a552db4
    • Simon Praetorius's avatar
      [!820] Rewrite FindPTScotch to provide imported targets · 0febb2ae
      Simon Praetorius authored
      Merge branch 'feature/find_ptscotch' into 'master'
      
      ref:core/dune-common\>
      
      ### Summary
      
      This MR adds imported-targets to the FindPTScotch.cmake module, following
      modern cmake guidelines.
      
      ### Details
      
      Instead of exporting include directories and libraries as variables, the find
      modules exports an imported target that contains all the necessary information
      to include and link PTScotch. The find module introduces two imported targets:
      PTScotch::Scotch for the sequential graph partitioning library and
      PTScotch::PTScotch for the parallel library that additionally depends on MPI.
      
      ### ToDo
      
      -   [x] Add version detection for (PT)Scotch library
      
      See merge request [core/dune-common!820]
      
        [core/dune-common!820]: gitlab.dune-project.org/core/dune-common/merge_requests/820
      0febb2ae
    • Simon Praetorius's avatar
      8ced45f7
    • Simon Praetorius's avatar
      [!823] Rewrite FindSuiteSparse to provide imported targets · deeddfc3
      Simon Praetorius authored
      Merge branch 'feature/find_suitesparse' into 'master'
      
      ref:core/dune-common\>
      
      ### Summary
      
      This MR adds imported-targets to the FindSuiteSparse.cmake module, following
      modern cmake guidelines.
      
      ### Details
      
      Instead of exporting include directories and libraries as variables, the find
      modules exports an imported target that contains all the necessary information
      to include and link SuiteSparse libraries. The module allows to search for
      various SuiteSparse components, like UMFPACK or SPQR, and introduces an
      imported target for each of them in the form: SuiteSparse::<component>.
      Additionally the combined imported target SuiteSparse::SuiteSparse is defined
      to link against all found components.
      
      Difference to old FindSuiteSparse module: It searches for all possible
      components and creates corresponding component targets. The collective target
      SuiteSparse::SuiteSparse then only contains the requested components.
      
      See merge request [core/dune-common!823]
      
        [core/dune-common!823]: gitlab.dune-project.org/core/dune-common/merge_requests/823
      deeddfc3
  10. Jun 26, 2020
  11. Jun 23, 2020
    • Carsten Gräser's avatar
      Allow iterator based transformations in TransformedRangeView · 7a9fef64
      Carsten Gräser authored
      This extends `TransformedRangeView` by also allowing
      to apply a transformation to the iterator directly.
      While the (existing) default mechanism is to use `f(*it)`
      where `f` is the transformation and `it` an
      iterator of the wrapped range, the new iterator
      based transformation uses `f(it)` instead. This
      allows to incorporate additional information
      from the iterator in the transformation.
      
      Using the new functionality one can e.g. easily
      implement structured bindings support for sparse
      ranges using
      
      ```cpp
      template<class Range>
      auto sparseRange(Range&& range) {
        return Dune::iteratorTransformedRangeView(std::forward<Range>(range), [](auto&& it) {
            return std::tuple<decltype(*it), decltype(it.index())>(*it, it.index());
        });
      }
      
      ...
      
      for(auto&& [entry,col] :  sparseRange(matrix[row]))
        y[row] += entry*x[col];
      
      ```
      
      Some more implementation details:
      
      * `TransformedRangeView` has a new template parameter for selecting
        value- or iterator-based transformation. Value-based is default.
      * A new helper function `iteratorTransformedRangeView()` allows
        to generate iterator based transformations.
      7a9fef64
  12. May 31, 2020
  13. May 29, 2020
  14. May 28, 2020
Loading