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(ML_Operator * mlOp,
25  const Teuchos::RCP<Epetra_Map> & rowMap=Teuchos::null);
26 
27 Teko::LinearOp buildTekoBlockOp(ML_Operator * mlOp,int level);
28 
29 
32 struct SmootherData {
33  Teuchos::RCP<Epetra_Operator> Amat;
34  Teuchos::RCP<Epetra_Operator> smootherOperator;
35 };
36 
39 int smoother(ML_Smoother *mydata, int leng1, double x[], int leng2,
40  double rhs[]);
41 
42 extern "C"
43 int ML_Gen_Smoother_Teko(ML *ml, int level, int pre_or_post, int ntimes, const Teuchos::RCP<const Teuchos::ParameterList> & tekoPL,
44  const Teuchos::RCP<const Teko::InverseLibrary> & invLib, const std::string & inverse, bool isBlocked);
45 
46 }
47 }
48 
49 #endif