OwningTwoLevelPreconditioner.hpp
Go to the documentation of this file.
39// Circular dependency between PreconditionerFactory [which can make an OwningTwoLevelPreconditioner]
40// and OwningTwoLevelPreconditioner [which uses PreconditionerFactory to choose the fine-level smoother]
78class OwningTwoLevelPreconditioner : public Dune::PreconditionerWithUpdate<VectorType, VectorType>
97 , coarseSolverPolicy_(prm.get_child_optional("coarsesolver") ? prm.get_child("coarsesolver") : Opm::PropertyTree())
130 , coarseSolverPolicy_(prm.get_child_optional("coarsesolver") ? prm.get_child("coarsesolver") : Opm::PropertyTree())
186 = Dune::Amg::TwoLevelMethodCpr<OperatorType, CoarseSolverPolicy, Dune::Preconditioner<VectorType, VectorType>>;
194 finesmoother_ = PrecFactory::create(linear_operator_, child ? *child : Opm::PropertyTree(), *comm_);
Definition: PressureSolverPolicy.hpp:35 Definition: twolevelmethodcpr.hh:387 void updatePreconditioner(FineOperatorType &, std::shared_ptr< SmootherType > smoother, CoarseLevelSolverPolicy &coarsePolicy) Definition: twolevelmethodcpr.hh:465 void apply(FineDomainType &v, const FineRangeType &d) Definition: twolevelmethodcpr.hh:497 void pre(FineDomainType &x, FineRangeType &b) Definition: twolevelmethodcpr.hh:488 Definition: FlexibleSolver.hpp:45 Definition: OwningTwoLevelPreconditioner.hpp:79 virtual void apply(VectorType &v, const VectorType &d) override Definition: OwningTwoLevelPreconditioner.hpp:155 virtual bool hasPerfectUpdate() const override Definition: OwningTwoLevelPreconditioner.hpp:176 typename OperatorType::matrix_type MatrixType Definition: OwningTwoLevelPreconditioner.hpp:81 OwningTwoLevelPreconditioner(const OperatorType &linearoperator, const Opm::PropertyTree &prm, const std::function< VectorType()> weightsCalculator, std::size_t pressureIndex) Definition: OwningTwoLevelPreconditioner.hpp:85 virtual void post(VectorType &x) override Definition: OwningTwoLevelPreconditioner.hpp:160 virtual void pre(VectorType &x, VectorType &b) override Definition: OwningTwoLevelPreconditioner.hpp:150 OwningTwoLevelPreconditioner(const OperatorType &linearoperator, const Opm::PropertyTree &prm, const std::function< VectorType()> weightsCalculator, std::size_t pressureIndex, const Communication &comm) Definition: OwningTwoLevelPreconditioner.hpp:117 virtual void update() override Definition: OwningTwoLevelPreconditioner.hpp:165 Dune::AssembledLinearOperator< MatrixType, VectorType, VectorType > AbstractOperatorType Definition: OwningTwoLevelPreconditioner.hpp:83 virtual Dune::SolverCategory::Category category() const override Definition: OwningTwoLevelPreconditioner.hpp:171 Interface class adding the update() method to the preconditioner interface. Definition: PreconditionerWithUpdate.hpp:32 Definition: PreconditionerFactory.hpp:64 static PrecPtr create(const Operator &op, const PropertyTree &prm, const std::function< Vector()> &weightsCalculator={}, std::size_t pressureIndex=std::numeric_limits< std::size_t >::max()) Definition: PreconditionerFactory_impl.hpp:735 Definition: PropertyTree.hpp:37 T get(const std::string &key) const std::optional< PropertyTree > get_child_optional(const std::string &key) const Definition: fvbaseprimaryvariables.hh:141 std::istream & operator>>(std::istream &input, BlockVector< FieldVector< T, i >, A > &vector) Definition: OwningTwoLevelPreconditioner.hpp:63 std::ostream & operator<<(std::ostream &out, const BlockVector< FieldVector< T, i >, A > &vector) Definition: OwningTwoLevelPreconditioner.hpp:55 Dune::Communication< MPIComm > Communication Definition: ParallelCommunication.hpp:30 Definition: blackoilboundaryratevector.hh:37 Algebraic twolevel methods. |