37 #ifndef NSPRECONDITIONEROPERATOR_HPP 38 #define NSPRECONDITIONEROPERATOR_HPP 1
40 #include <lifev/core/linear_algebra/LinearOperatorAlgebra.hpp> 41 #include <lifev/core/util/Factory.hpp> 42 #include <lifev/core/util/FactorySingleton.hpp> 43 #include <Teuchos_ParameterList.hpp> 44 #include <Teuchos_XMLParameterListHelpers.hpp> 45 #include <lifev/core/array/MatrixEpetra.hpp> 46 #include <lifev/core/linear_algebra/BlockEpetra_Map.hpp> 48 #include <Teuchos_ParameterList.hpp> 49 #include <Teuchos_XMLParameterListHelpers.hpp> 50 #include <lifev/core/array/VectorEpetra.hpp> 63 typedef std::shared_ptr<matrixEpetra_Type> matrixEpetraPtr_Type;
65 typedef Epetra_Comm comm_Type;
67 typedef std::shared_ptr<comm_Type> commPtr_Type;
69 typedef Epetra_Map map_Type;
71 typedef std::shared_ptr<map_Type> mapPtr_Type;
73 typedef std::shared_ptr<
const map_Type> constMapPtr_Type;
75 typedef Epetra_Operator operator_Type;
77 typedef std::shared_ptr<operator_Type> operatorPtr_Type;
79 typedef std::shared_ptr<Teuchos::ParameterList> parameterListPtr_Type;
81 NavierStokesPreconditionerOperator();
83 ~NavierStokesPreconditionerOperator();
95 virtual int SetUseTranspose(
bool UseTranspose){};
131 virtual double NormInf()
const {};
134 virtual const char * Label()
const {};
137 virtual bool UseTranspose()
const {};
140 virtual bool HasNormInf()
const {};
143 virtual const comm_Type & Comm()
const {};
146 virtual const map_Type & OperatorDomainMap()
const {};
149 virtual const map_Type & OperatorRangeMap()
const {};
155 virtual void setUp (
const matrixEpetraPtr_Type & F,
156 const matrixEpetraPtr_Type & B,
157 const matrixEpetraPtr_Type & Btranspose ){};
159 virtual void setUp (
const matrixEpetraPtr_Type & F,
160 const matrixEpetraPtr_Type & B,
161 const matrixEpetraPtr_Type & Btranspose,
162 const matrixEpetraPtr_Type & D ){};
164 virtual void setOptions (
const Teuchos::ParameterList& solversOptions){};
166 virtual void setDomainMap (
const std::shared_ptr<BlockEpetra_Map> & domainMap){};
168 virtual void setRangeMap (
const std::shared_ptr<BlockEpetra_Map> & rangeMap){};
170 virtual void updateApproximatedMomentumOperator ( ){};
172 virtual void updateApproximatedSchurComplementOperator ( ){};
174 virtual void updateApproximatedPressureMassOperator ( ){};
176 virtual void setUp (
const matrixEpetraPtr_Type & F,
const matrixEpetraPtr_Type & B,
const matrixEpetraPtr_Type & Btranspose,
177 const matrixEpetraPtr_Type & Fp,
const matrixEpetraPtr_Type & Mp,
const matrixEpetraPtr_Type & Mu){};
179 virtual void setMomentumOptions(
const parameterListPtr_Type & _oList) {};
181 virtual void setSchurOptions(
const parameterListPtr_Type & _oList) {};
183 virtual void setPressureMassOptions(
const parameterListPtr_Type & _oList) {};
185 virtual matrixEpetraPtr_Type
const& F()
const {};
187 virtual matrixEpetraPtr_Type
const& B()
const {};
189 virtual matrixEpetraPtr_Type
const& Btranspose()
const {};
202 inline NavierStokesPreconditionerOperator::NavierStokesPreconditionerOperator()
206 inline NavierStokesPreconditionerOperator::~NavierStokesPreconditionerOperator()
210 typedef FactorySingleton<Factory<NavierStokesPreconditionerOperator, std::string> > NSPreconditionerFactory;
VectorEpetra - The Epetra Vector format Wrapper.
void importFromHDF5(std::string const &fileName, std::string const &matrixName="matrix")
Read a matrix from a HDF5 (.h5) file.
Abstract class which defines the interface of a Linear Operator.
void updateInverseJacobian(const UInt &iQuadPt)
double Real
Generic real data.
Epetra_MultiVector vector_Type