clang-format PreconditionerWithUpdate.hpp

This commit is contained in:
Tobias Meyer Andersen 2024-04-15 16:28:37 +02:00
parent 9ab15e3ff9
commit 9e7b7b3e40

View File

@ -87,9 +87,10 @@ getDummyUpdateWrapper(Args&&... args)
/// @brief Interface class ensuring make function is overriden /// @brief Interface class ensuring make function is overriden
/// @tparam OriginalPreconditioner - An arbitrary Preconditioner type /// @tparam OriginalPreconditioner - An arbitrary Preconditioner type
template <class OriginalPreconditioner> template <class OriginalPreconditioner>
struct GeneralPreconditionerMaker struct GeneralPreconditionerMaker {
{ virtual std::unique_ptr<
virtual std::unique_ptr<Preconditioner<typename OriginalPreconditioner::domain_type, typename OriginalPreconditioner::range_type>> make() = 0; Preconditioner<typename OriginalPreconditioner::domain_type, typename OriginalPreconditioner::range_type>>
make() = 0;
}; };
/// @brief Struct implementing a make function which creates a preconditioner /// @brief Struct implementing a make function which creates a preconditioner
@ -97,15 +98,18 @@ struct GeneralPreconditionerMaker
/// @tparam OriginalPreconditioner - An arbitrary preconditioner type /// @tparam OriginalPreconditioner - An arbitrary preconditioner type
/// @tparam ...Args - All arguments needed to construct the preconditioner of choice /// @tparam ...Args - All arguments needed to construct the preconditioner of choice
template <class OriginalPreconditioner, class... Args> template <class OriginalPreconditioner, class... Args>
struct PreconditionerMaker : public GeneralPreconditionerMaker<OriginalPreconditioner> struct PreconditionerMaker : public GeneralPreconditionerMaker<OriginalPreconditioner> {
{
PreconditionerMaker(Args&&... args) PreconditionerMaker(Args&&... args)
: args_(args...) : args_(args...)
{ {
} }
std::unique_ptr<Preconditioner<typename OriginalPreconditioner::domain_type, typename OriginalPreconditioner::range_type>> make() override std::unique_ptr<
Preconditioner<typename OriginalPreconditioner::domain_type, typename OriginalPreconditioner::range_type>>
make() override
{ {
return std::unique_ptr<Preconditioner<typename OriginalPreconditioner::domain_type, typename OriginalPreconditioner::range_type>>{new auto(std::make_from_tuple<OriginalPreconditioner>(args_))}; return std::unique_ptr<
Preconditioner<typename OriginalPreconditioner::domain_type, typename OriginalPreconditioner::range_type>> {
new auto(std::make_from_tuple<OriginalPreconditioner>(args_))};
} }
std::tuple<Args...> args_; std::tuple<Args...> args_;
}; };
@ -119,8 +123,8 @@ class RebuildOnUpdatePreconditioner : public PreconditionerWithUpdate<typename O
{ {
public: public:
RebuildOnUpdatePreconditioner(Args... args) RebuildOnUpdatePreconditioner(Args... args)
: preconditioner_params_(args...), : preconditioner_params_(args...)
preconditioner_maker_(std::make_unique<ConcreteMakerType>(std::forward<Args>(args)...)) , preconditioner_maker_(std::make_unique<ConcreteMakerType>(std::forward<Args>(args)...))
{ {
update(); update();
} }
@ -160,7 +164,9 @@ private:
std::tuple<Args...> preconditioner_params_; std::tuple<Args...> preconditioner_params_;
std::unique_ptr<AbstractMakerType> preconditioner_maker_; std::unique_ptr<AbstractMakerType> preconditioner_maker_;
std::unique_ptr<Preconditioner<typename OriginalPreconditioner::domain_type,typename OriginalPreconditioner::range_type>> orig_precond_; std::unique_ptr<
Preconditioner<typename OriginalPreconditioner::domain_type, typename OriginalPreconditioner::range_type>>
orig_precond_;
}; };
/// @brief Wrapper function creating and return a shared pointer to a preconditioner which is reconstructed on update /// @brief Wrapper function creating and return a shared pointer to a preconditioner which is reconstructed on update
@ -172,7 +178,8 @@ template <class OriginalPreconditioner, class... Args>
std::shared_ptr<RebuildOnUpdatePreconditioner<OriginalPreconditioner, Args...>> std::shared_ptr<RebuildOnUpdatePreconditioner<OriginalPreconditioner, Args...>>
getRebuildOnUpdateWrapper(Args... args) getRebuildOnUpdateWrapper(Args... args)
{ {
return std::make_shared<RebuildOnUpdatePreconditioner<OriginalPreconditioner, Args...>>(std::forward<Args>(args)...); return std::make_shared<RebuildOnUpdatePreconditioner<OriginalPreconditioner, Args...>>(
std::forward<Args>(args)...);
} }
} // namespace Dune } // namespace Dune