MueLu Version of the Day
Loading...
Searching...
No Matches
Thyra_MueLuTpetraQ2Q1PreconditionerFactory_decl.hpp
Go to the documentation of this file.
1// @HEADER
2// *****************************************************************************
3// MueLu: A package for multigrid based preconditioning
4//
5// Copyright 2012 NTESS and the MueLu contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#ifndef THYRA_MUELU_TPETRA_Q2Q1PRECONDITIONER_FACTORY_DECL_HPP
11#define THYRA_MUELU_TPETRA_Q2Q1PRECONDITIONER_FACTORY_DECL_HPP
12#ifdef HAVE_MUELU_EXPERIMENTAL
13
14#include "Thyra_PreconditionerFactoryBase.hpp"
15
16#include <Tpetra_KokkosCompat_DefaultNode.hpp>
17
18#include <Teko_Utilities.hpp>
19#include <Xpetra_Matrix_fwd.hpp>
20
21#include "MueLu_FactoryBase.hpp"
22
23namespace Thyra {
24
29template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
30class MueLuTpetraQ2Q1PreconditionerFactory : public PreconditionerFactoryBase<Scalar> {
31 private:
32 typedef Scalar SC;
35 typedef Node NO;
36
37 public:
40
44
47
49 bool isCompatible(const LinearOpSourceBase<SC>& fwdOp) const;
51 Teuchos::RCP<PreconditionerBase<SC> > createPrec() const;
53 void initializePrec(const Teuchos::RCP<const LinearOpSourceBase<SC> >& fwdOp, PreconditionerBase<SC>* prec, const ESupportSolveUse supportSolveUse) const;
55 void uninitializePrec(PreconditionerBase<SC>* prec, Teuchos::RCP<const LinearOpSourceBase<SC> >* fwdOp, ESupportSolveUse* supportSolveUse) const;
57
60
62 void setParameterList(const Teuchos::RCP<Teuchos::ParameterList>& paramList);
64 Teuchos::RCP<Teuchos::ParameterList> unsetParameterList();
66 Teuchos::RCP<Teuchos::ParameterList> getNonconstParameterList();
68 Teuchos::RCP<const Teuchos::ParameterList> getParameterList() const;
70 Teuchos::RCP<const Teuchos::ParameterList> getValidParameters() const;
72
75
77 std::string description() const;
78
79 // ToDo: Add an override of describe(...) to give more detail!
80
82
83 private:
84 Teuchos::RCP<MueLu::TpetraOperator<SC, LO, GO, NO> >
85 Q2Q1MkPrecond(const ParameterList& paramList,
86 const Teuchos::RCP<Tpetra::MultiVector<SC, LO, GO, NO> >& velCoords,
87 const Teuchos::RCP<Tpetra::MultiVector<SC, LO, GO, NO> >& presCoords,
88 const Teuchos::ArrayRCP<LO>& p2vMap,
89 const Teko::LinearOp& thA11, const Teko::LinearOp& thA12, const Teko::LinearOp& thA21, const Teko::LinearOp& thA11_9Pt) const;
90
91 Teuchos::RCP<Xpetra::Matrix<SC, LO, GO, NO> > Absolute(const Xpetra::Matrix<SC, LO, GO, NO>& A) const;
92 Teuchos::RCP<Xpetra::Matrix<SC, LO, GO, NO> > FilterMatrix(Xpetra::Matrix<SC, LO, GO, NO>& A, Xpetra::Matrix<SC, LO, GO, NO>& Pattern, SC dropTol) const;
93
94 void SetDependencyTree(MueLu::FactoryManager<SC, LO, GO, NO>& M, const ParameterList& paramList) const;
95 void SetBlockDependencyTree(MueLu::FactoryManager<SC, LO, GO, NO>& M, LO row, LO col, const std::string& mode, const ParameterList& paramList) const;
96
97 RCP<MueLu::FactoryBase> GetSmoother(const std::string& type, const ParameterList& paramList, bool coarseSolver) const;
98
99 Teuchos::RCP<Teuchos::ParameterList> paramList_;
100};
101
102} // namespace Thyra
103#endif
104#endif // THYRA_MUELU_TPETRA_Q2Q1PRECONDITIONER_FACTORY_DECL_HPP
MueLu::DefaultLocalOrdinal LocalOrdinal
MueLu::DefaultScalar Scalar
MueLu::DefaultGlobalOrdinal GlobalOrdinal
MueLu::DefaultNode Node
This class specifies the default factory that should generate some data on a Level if the data does n...
Concrete preconditioner factory subclass based on MueLu.
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const
Teuchos::RCP< Xpetra::Matrix< SC, LO, GO, NO > > FilterMatrix(Xpetra::Matrix< SC, LO, GO, NO > &A, Xpetra::Matrix< SC, LO, GO, NO > &Pattern, SC dropTol) const
void SetDependencyTree(MueLu::FactoryManager< SC, LO, GO, NO > &M, const ParameterList &paramList) const
Teuchos::RCP< Xpetra::Matrix< SC, LO, GO, NO > > Absolute(const Xpetra::Matrix< SC, LO, GO, NO > &A) const
void uninitializePrec(PreconditionerBase< SC > *prec, Teuchos::RCP< const LinearOpSourceBase< SC > > *fwdOp, ESupportSolveUse *supportSolveUse) const
void SetBlockDependencyTree(MueLu::FactoryManager< SC, LO, GO, NO > &M, LO row, LO col, const std::string &mode, const ParameterList &paramList) const
Teuchos::RCP< MueLu::TpetraOperator< SC, LO, GO, NO > > Q2Q1MkPrecond(const ParameterList &paramList, const Teuchos::RCP< Tpetra::MultiVector< SC, LO, GO, NO > > &velCoords, const Teuchos::RCP< Tpetra::MultiVector< SC, LO, GO, NO > > &presCoords, const Teuchos::ArrayRCP< LO > &p2vMap, const Teko::LinearOp &thA11, const Teko::LinearOp &thA12, const Teko::LinearOp &thA21, const Teko::LinearOp &thA11_9Pt) const
RCP< MueLu::FactoryBase > GetSmoother(const std::string &type, const ParameterList &paramList, bool coarseSolver) const
void initializePrec(const Teuchos::RCP< const LinearOpSourceBase< SC > > &fwdOp, PreconditionerBase< SC > *prec, const ESupportSolveUse supportSolveUse) const
void setParameterList(const Teuchos::RCP< Teuchos::ParameterList > &paramList)
Teuchos::RCP< const Teuchos::ParameterList > getParameterList() const