9 #include <dune/common/concept.hh> 10 #include <dune/common/reservedvector.hh> 11 #include <dune/common/shared_ptr.hh> 12 #include <dune/common/typeutilities.hh> 13 #include <dune/common/version.hh> 14 #include <dune/functions/common/type_traits.hh> 15 #include <dune/functions/functionspacebases/concepts.hh> 16 #include <dune/functions/functionspacebases/defaultglobalbasis.hh> 17 #include <dune/functions/functionspacebases/flatmultiindex.hh> 18 #include <dune/grid/common/adaptcallback.hh> 19 #include <dune/typetree/treepath.hh> 21 #include <amdis/AdaptiveGrid.hpp> 22 #include <amdis/Observer.hpp> 23 #include <amdis/Output.hpp> 24 #include <amdis/common/Concepts.hpp> 25 #include <amdis/common/TypeTraits.hpp> 26 #include <amdis/functions/FlatPreBasis.hpp> 27 #include <amdis/functions/LocalView.hpp> 28 #include <amdis/linearalgebra/Traits.hpp> 29 #include <amdis/typetree/MultiIndex.hpp> 31 #if DUNE_VERSION_LT(DUNE_FUNCTIONS,2,7) 32 #include <dune/functions/functionspacebases/defaultlocalindexset.hh> 37 template <
class PreBasisFactory,
class PBF = remove_cvref_t<PreBasisFactory>>
38 using MultiIndex_t = std::conditional_t<(PBF::requiredMultiIndexSize == 1),
39 Dune::Functions::FlatMultiIndex<std::size_t>,
40 Dune::ReservedVector<std::size_t, PBF::requiredMultiIndexSize>>;
54 :
public Dune::Functions::DefaultGlobalBasis<PB>
59 using Super = Dune::Functions::DefaultGlobalBasis<PB>;
67 using Grid =
typename GridView::Grid;
73 using Comm = std::conditional_t<Traits::IsFlatIndex<typename Super::MultiIndex>::value,
78 using ADH = Dune::AdaptDataHandle<Grid, DummyImpl>;
89 template <
class... Args,
90 Dune::Functions::enableIfConstructible<
PreBasis, Args...> = 0>
91 GlobalBasis(std::string
const& name, Grid
const& grid, Args&&... args)
100 PBF
const& preBasisFactory)
102 flatPreBasis(preBasisFactory.template makePreBasis<MultiIndex_t<PBF>>(gridView)))
106 template <
class Arg,
class... Args,
126 Super::preBasis().update(gv);
127 Super::preBasis().initializeIndices();
151 ADH globalRefineCallback()
const 154 error_exit(
"Not implemented: GlobalBasis::globalRefineCallback()");
163 update(Super::gridView());
176 template <
class GV,
class PBF>
177 GlobalBasis(std::string
const& name, GV
const& gridView, PBF
const& preBasisFactory)
179 preBasisFactory.template makePreBasis<MultiIndex_t<PBF>>(gridView)))>;
181 template <
class GV,
class PBF>
182 GlobalBasis(GV
const& gridView, PBF
const& preBasisFactory)
184 preBasisFactory.template makePreBasis<MultiIndex_t<PBF>>(gridView)))>;
GlobalBasis const & rootBasis() const
Return *this because we are not embedded in a larger basis.
Definition: GlobalBasis.hpp:138
GlobalBasis(std::string const &name, Grid const &grid, Args &&... args)
Construct this global basis with given name and grid, and constructing a preBasis.
Definition: GlobalBasis.hpp:91
void error_exit(std::string const &str, Args &&... args)
print a message and exit
Definition: Output.hpp:142
typename remove_cvref< T >::type remove_cvref_t
Helper alias template for remove_cvref.
Definition: TypeTraits.hpp:24
void update(GridView const &gv)
Update the stored grid view.
Definition: GlobalBasis.hpp:124
Global basis defined on a pre-basis.
Definition: GlobalBasis.hpp:53
Definition: FieldMatVec.hpp:12
AMDiS::LocalView< Self > LocalView
Type of the local view on the restriction of the basis to a single element.
Definition: GlobalBasis.hpp:70
void updateImpl(event::adapt e) override
Updates the underlying basis when event::adapt is triggered by the observed grid. ...
Definition: GlobalBasis.hpp:160
Contains all classes needed for solving linear and non linear equation systems.
Definition: AdaptBase.hpp:6
Implementation of a creator pattern for Communication types.
Definition: Communication.hpp:47
Definition: GlobalBasis.hpp:77
The restriction of a finite element basis to a single element.
Definition: LocalView.hpp:20
Implementation of the ObserverInterface.
Definition: Observer.hpp:100
GlobalBasis(std::string const &name, GridView const &gridView, PBF const &preBasisFactory)
Construct this global basis with a preBasisFactory.
Definition: GlobalBasis.hpp:99
Dummy implementation for sequential communication.
Definition: Communication.hpp:14
Definition: Observer.hpp:25
PB PreBasis
Pre-basis providing the implementation details.
Definition: GlobalBasis.hpp:63
typename PreBasis::GridView GridView
The grid view that the FE space is defined on.
Definition: GlobalBasis.hpp:66
std::conditional_t< Traits::IsFlatIndex< typename Super::MultiIndex >::value, typename BackendTraits< Self >::Comm, SequentialCommunication > Comm
Type of the communicator.
Definition: GlobalBasis.hpp:75
Mixin for signaling of certain events.
Definition: Observer.hpp:54
Comm const & communicator() const
Return the communicator.
Definition: GlobalBasis.hpp:148
GlobalBasis(Arg &&arg, Args &&... args)
Construct this global basis with empty name.
Definition: GlobalBasis.hpp:108
LocalView localView() const
Return local view for basis.
Definition: GlobalBasis.hpp:132