Teko  Version of the Day
 All Classes Files Functions Variables Pages
Teko_mlutils.hpp
1 // @HEADER
2 // *****************************************************************************
3 // Teko: A package for block and physics based preconditioning
4 //
5 // Copyright 2010 NTESS and the Teko contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
10 #ifndef __Teko_mlutils_hpp__
11 #define __Teko_mlutils_hpp__
12 
13 #include "ml_operator.h"
14 #include "Epetra_Map.h"
15 #include "Epetra_CrsMatrix.h"
16 
17 #include "Teuchos_RCP.hpp"
18 
19 #include "Teko_Utilities.hpp"
20 
21 namespace Teko {
22 
23 class InverseLibrary;
24 
25 namespace mlutils {
26 
28 Teuchos::RCP<Epetra_Map> buildRowMap(ML_Operator *mlOp);
29 
33 Teuchos::RCP<Epetra_CrsMatrix> convertToCrsMatrix(
34  ML_Operator *mlOp, const Teuchos::RCP<Epetra_Map> &rowMap = Teuchos::null);
35 
36 Teko::LinearOp buildTekoBlockOp(ML_Operator *mlOp, int level);
37 
40 struct SmootherData {
41  Teuchos::RCP<Epetra_Operator> Amat;
42  Teuchos::RCP<Epetra_Operator> smootherOperator;
43 };
44 
47 int smoother(ML_Smoother *mydata, int leng1, double x[], int leng2, double rhs[]);
48 
49 extern "C" int ML_Gen_Smoother_Teko(ML *ml, int level, int pre_or_post, int ntimes,
50  const Teuchos::RCP<const Teuchos::ParameterList> &tekoPL,
51  const Teuchos::RCP<const Teko::InverseLibrary> &invLib,
52  const std::string &inverse, bool isBlocked);
53 
54 } // namespace mlutils
55 } // namespace Teko
56 
57 #endif