1. 17 Oct, 2021 2 commits
  2. 12 Oct, 2021 19 commits
    • Carsten Gräser's avatar
      Merge branch 'feature/disable-deprecation-in-test' into 'master' · 53729fc0
      Carsten Gräser authored
      [test] Disable deprecation of evaluate() interface in test
      See merge request !332
    • Carsten Gräser's avatar
      [test] Disable deprecation of evaluate() interface in test · 4447d95f
      Carsten Gräser authored
      By defining the macro, testing `interpolate(...)` with a function
      supporting the od style function interface with `evaluate(domain, range)`
      will not lead to a deprecation warning.
    • Carsten Gräser's avatar
      Merge branch 'feature/remove-old-code' into 'master' · 4c658749
      Carsten Gräser authored
      Remove dome deprecated code
      See merge request !331
    • Carsten Gräser's avatar
      Remove unsed include · 28fffecc
      Carsten Gräser authored
    • Carsten Gräser's avatar
    • Carsten Gräser's avatar
      Remove NodeIndexSet concept · 453c5fd5
      Carsten Gräser authored
      The `NodeIndexSet` interface was deprecated in 2.8 and meanwhile
      removed. Not removing the concept was an oversight.
    • Carsten Gräser's avatar
      Remove deprecated header optional.hh · 9385d05a
      Carsten Gräser authored
      This was deprecated in 2.8
    • Carsten Gräser's avatar
      Merge branch 'fix/add-missing-include' into 'master' · 71672809
      Carsten Gräser authored
      Add another missing include.
      See merge request !330
    • Lasse Hinrichsen-Bischoff's avatar
      Add another missing include. · 1b9f2fd2
      Lasse Hinrichsen-Bischoff authored
    • Carsten Gräser's avatar
      Merge branch 'feature/simplify-multiindex-generation' into 'master' · 25ced6df
      Carsten Gräser authored
      Cleanup MultiIndex generation
      See merge request !326
    • Carsten Gräser's avatar
      Merge branch 'feature/cleanup-stokes-example' into 'master' · 17797f10
      Carsten Gräser authored
      Cleanup stokes exmaple
      See merge request !328
    • Carsten Gräser's avatar
    • Carsten Gräser's avatar
      [python] Simplify setup of GlobalBasis in python · e837b200
      Carsten Gräser authored
      Directly build the `PreBasis` type instead of using the indirection
      via `Imp:Imp::PreBasisFactory`.
    • Carsten Gräser's avatar
      [python] Update global basis creation in python · 7834c04d
      Carsten Gräser authored
      The old solution was to first construct the nested `PreBasisFactory`
      object relying on the fact that this does not store any information.
      With the modified `PreBasis` interface this is hugely simplified,
      since we can directly construct the `PreBasis` type from the `GridView`.
      Now we can directly construct the global basis from the `GridView`.
      This assumes that the `PreBasis` can be constructed from the `GridView`
      which is now also true for the `CompositePreBasis`. Notice that this
      does only work if the `PreBasis` does not depend on dynamic data
      except the `GridView`. However this assumption was also made implicitly
      before but in a much more hidden way. Furthermore it is satisfied for
      `LagrangePreBasis` which is the only one supported currently.
    • Carsten Gräser's avatar
      Add DefaultGlobalBasis constructor from GridView and PreBasisFactory · 680ca3ca
      Carsten Gräser authored
      By also providing deduction guides we can now write
      DefaultGlobalBasis(gridView, power<3>(composite(...)))
      instead of
      makeBasis(gridView, power<3>(composite(...)))
    • Carsten Gräser's avatar
      Add CompositePreBasis constructor from GridView · 8751a2c7
      Carsten Gräser authored
      This constructor is only available, if all child-`PreBasis`
      classes can be constructed from a `GridView`. This is now
      also tested for a nested `LagrangePreBasis`
      This should allow to significantly simplify the basis
      construction in the python bindings.
    • Carsten Gräser's avatar
      Adjust PreBasis implementations to new MultiIndex handling · 2b47a51e
      Carsten Gräser authored
      This modifies the following prebasis implementations:
      * `PowerPreBasis`
      * `CompositePreBasis`
      * `LagrangePreBasis`
      * `RannacherTurekPreBasis`
      * `BrezziDouglasMariniPreBasis`
      * `HierarchicalLagrangePreBasis`
      * `LagrangeDGPreBasis`
      * `NedelecPreBasis`
      * `RaviartThomasPreBasis`
      * `TaylorHoodPreBasis`
      * `BSplinePreBasis`
      * `TransformedIndexPreBasis`
      *  `PeriodicIndexingTransformation`
      In most implementations the named `*PreBasisFactory` class
      was replaced by a simple lambda.
      In some implementations one has to replace `size({})` by
      `size()`, because the former no longer works with the templated
      `size(prefix)` method.
      For `BSplinePreBasis` this needs a small hack: Since there is already a `size(size_type)`
      method, using
        template<class SizePrefix>
        size_type size(const SizePrefix& prefix) const
      would be to gready and has to be replaced by the more specific
      template<class ST, int i>
      size_type size(const Dune::ReservedVector<ST, i>& prefix) const
      This also implement deduction guides to simplify construction of
    • Carsten Gräser's avatar
      Cleanup MultiIndex generation · eed883be
      Carsten Gräser authored
      This changes the generation and forwarding of multi index types
      and related information in the interfaces of the `PreBasis` and `PreBasisFactory`
      and the implementation `DefaultGlobalBasis`.
      In summary: The `PreBasis` now longer depends on the `MultiIndex` type
      which allows to move all information about required size of the multi indices
      to the `PreBasis`. Now the `DefaultGlobalBasis` is responsible to create
      suitable indices for the `PreBasis` (instead of `makeBasis()`).
      Changes in detail:
      * Changes to `PreBasis`
        * The typedefs `PreBasis::MultiIndex` and `PreBasis::SizePrefix` are
        * The `SizePrefix` argument type of `PreBasis::size()` is a now template parameter.
        * The `MultiIndex`-type is no longer handed to the `PreBasis`.
        * There are new constants `PreBasis::minMultiIndexSize` <=
          `PreBasis::maxMultiIndexSize` <= `PreBasis::multiIndexBufferSize`.
          They denote the minimal and maximal size of the handed out
          multi indices and the maximal intermediate size needed for
          building each multi index.
      * Changes to `PreBasisFactory`
        * The `MultiIndex`-type is no longer a template argument of `PreBasisFactory::makePreBasis`.
        * `PreBasisFactory::requiredMultiIndexSize` is removed.
        * `PreBasisFactory` is now a simple callback supporting
          `preBasisFactory(gridView)` instead of
      * Changes to `DefaultGlobalBasis` and `makeBasis` implementation:
        * `PreBasis` is build before `MultiIndex` type is constructed.
        * The `MultiIndex` type is constructed in the `DefaultGlobalBasis`
          instead of `makeBasis`.
        * `makeBasis<MultiIndex>` was removed. This could be re-added, if we
          make the `MultiIndex` and additional template parameter of
          `DefaultGlobalBasis` with the automatically generated type as
    • Carsten Gräser's avatar
      Cleanup stokes exmaple · 459da8ea
      Carsten Gräser authored
      * Remove some useless code artifacts.
      * Reorder typedefs such that the macro switch
        `BLOCKEDBASIS` is usable again.
  3. 11 Oct, 2021 2 commits
  4. 05 Oct, 2021 5 commits
  5. 16 Sep, 2021 4 commits
  6. 02 Sep, 2021 4 commits
    • Carsten Gräser's avatar
      [test] Add test for ComposedGridFunction · 29c2f988
      Carsten Gräser authored
    • Carsten Gräser's avatar
      Add ComposedGridFunction · 30757956
      Carsten Gräser authored
      For given inner grid functions `g0`, ..., `gn` and an
      outer function `f` this implements the grid function
      mapping `x`  to `f(g0(x), ..., gn(x))`. It is assumed
      that the grid functions are defined on the same
      `EntitySet` and that their range type can be passed to
      the outer function.
      All functions are stored by value. Storing references
      is possible using passing `std::ref(f)`. To resolve
      extended methods internally this makes use of the
      `Dune::Functions::resolveRef()` utility.
    • Carsten Gräser's avatar
    • Carsten Gräser's avatar
      Add utilities for std::reference_wrapper · e66acc60
      Carsten Gräser authored
      This adds the following helpers for handling `std::reference_wrapper`:
      * A predicate `IsReferenceWrapper_v<R>` for detecting if
        `R` is a `std::reference_wrapper<T>`.
      * A helper function `resolveRef` for resolving references
        wrapped in `std::reference_wrapper`. For type `T` providing
        a method `T::foo()` this allows to transparently use
        `resolveRef(t).foo()` if `t` is either a plain `T` or
        a `std::reference_wrapper<T>`.
      * A type alias `ResolveRef_t<T>` to determine the resolved
        type for `T`.
  7. 31 Aug, 2021 4 commits