Teko  Version of the Day
 All Classes Files Functions Variables Pages
Teko_mlutils.hpp
1 #ifndef __Teko_mlutils_hpp__
2 #define __Teko_mlutils_hpp__
3 
4 #include "ml_operator.h"
5 #include "Epetra_Map.h"
6 #include "Epetra_CrsMatrix.h"
7 
8 #include "Teuchos_RCP.hpp"
9 
10 #include "Teko_Utilities.hpp"
11 
12 namespace Teko {
13 
14 class InverseLibrary;
15 
16 namespace mlutils {
17 
19 Teuchos::RCP<Epetra_Map> buildRowMap(ML_Operator *mlOp);
20 
24 Teuchos::RCP<Epetra_CrsMatrix> convertToCrsMatrix(
25  ML_Operator *mlOp, const Teuchos::RCP<Epetra_Map> &rowMap = Teuchos::null);
26 
27 Teko::LinearOp buildTekoBlockOp(ML_Operator *mlOp, int level);
28 
31 struct SmootherData {
32  Teuchos::RCP<Epetra_Operator> Amat;
33  Teuchos::RCP<Epetra_Operator> smootherOperator;
34 };
35 
38 int smoother(ML_Smoother *mydata, int leng1, double x[], int leng2, double rhs[]);
39 
40 extern "C" int ML_Gen_Smoother_Teko(ML *ml, int level, int pre_or_post, int ntimes,
41  const Teuchos::RCP<const Teuchos::ParameterList> &tekoPL,
42  const Teuchos::RCP<const Teko::InverseLibrary> &invLib,
43  const std::string &inverse, bool isBlocked);
44 
45 } // namespace mlutils
46 } // namespace Teko
47 
48 #endif