53 #include "Epetra_CrsMatrix.h" 54 #include "Epetra_Map.h" 55 #include "Epetra_MultiVector.h" 56 #include "Epetra_LinearProblem.h" 57 #include "Epetra_SerialComm.h" 60 #include "Amesos_BaseSolver.h" 64 #include "Ifpack_Preconditioner.h" 70 #include "Isorropia_EpetraProber.hpp" 73 #ifdef HAVE_SHYLUCORE_AMESOS2 74 #include <Amesos2.hpp> 78 #ifdef HAVE_SHYLUCORE_TPETRA 79 #include <Tpetra_CrsMatrix_decl.hpp> 80 #include <Tpetra_CrsMatrix_def.hpp> 84 #ifdef HAVE_SHYLUCORE_ZOLTAN2 85 #include <Zoltan2_XpetraCrsMatrixAdapter.hpp> 86 #include <Zoltan2_XpetraMultiVectorAdapter.hpp> 87 #include <Zoltan2_PartitioningProblem.hpp> 92 #include "shylu_symbolic.h" 93 #include "shylu_config.h" 94 #include "shylu_probing_operator.h" 95 #include "shylu_amesos_schur_operator.h" 101 #define MIN(a, b) (((a) < (b)) ? a : b) 102 #define MAX(a, b) (((a) > (b)) ? a : b) 119 Teuchos::RCP<Epetra_Map> LDRowMap;
120 Teuchos::RCP<Epetra_Map> LGRowMap;
121 Teuchos::RCP<Epetra_Map> GMap;
123 Teuchos::RCP<Epetra_Import> BdImporter;
124 Teuchos::RCP<Epetra_Import> DistImporter;
125 Teuchos::RCP<Epetra_Import> BsImporter;
126 Teuchos::RCP<Epetra_Import> XsImporter;
127 Teuchos::RCP<Epetra_Export> XdExporter;
128 Teuchos::RCP<Epetra_Export> XsExporter;
130 Teuchos::RCP<Epetra_MultiVector> localrhs;
131 Teuchos::RCP<Epetra_MultiVector> temp1;
132 Teuchos::RCP<Epetra_MultiVector> temp2;
133 Teuchos::RCP<Epetra_MultiVector> Bs;
134 Teuchos::RCP<Epetra_MultiVector> Xs;
135 Teuchos::RCP<Epetra_MultiVector> LocalXs;
136 Teuchos::RCP<Epetra_MultiVector> temp3;
137 Teuchos::RCP<Epetra_MultiVector> locallhs;
147 Teuchos::RCP<IQR::IQRSolver> iqrSolver;
148 Teuchos::RCP<Epetra_CrsMatrix> Sbar;
149 Teuchos::RCP<Epetra_CrsGraph> localSbargraph;
150 AztecOO *innersolver;
151 Teuchos::RCP<Epetra_MultiVector> Sbarlhs;
152 Teuchos::RCP<Epetra_MultiVector> Sbarrhs;
153 Teuchos::RCP<Epetra_LinearProblem> LP2;
154 Teuchos::RCP<Epetra_LinearProblem> OrigLP2;
155 Teuchos::RCP<EpetraExt::ViewTransform<Epetra_LinearProblem> > ReIdx_LP2;
156 Amesos_BaseSolver *dsolver;
157 Teuchos::RCP<Ifpack_Preconditioner> schur_prec;
158 Teuchos::RCP<ShyLU_Probing_Operator> schur_op;
161 Teuchos::RCP<Isorropia::Epetra::Prober> guided_prober;
188 const Epetra_MultiVector& X, Epetra_MultiVector& Y);
197 Epetra_CrsMatrix *G, Epetra_CrsMatrix *R,
198 Epetra_LinearProblem *LP, Amesos_BaseSolver *solver,
199 Ifpack_Preconditioner *ifSolver, Epetra_CrsMatrix *C,
200 Epetra_Map *localDRowMap);
210 Epetra_CrsMatrix *G, Epetra_CrsMatrix *R,
211 Epetra_LinearProblem *LP, Amesos_BaseSolver *solver,
212 Ifpack_Preconditioner *ifSolver, Epetra_CrsMatrix *C,
213 Epetra_Map *localDRowMap);
224 Epetra_Map *localDRowMap
int shylu_solve(shylu_symbolic *ssym, shylu_data *data, shylu_config *config, const Epetra_MultiVector &X, Epetra_MultiVector &Y)
Call solve on multiple RHS.
Teuchos::RCP< Epetra_CrsMatrix > computeSchur_GuidedProbing(shylu_config *config, shylu_symbolic *ssym, shylu_data *data, Epetra_Map *localDRowMap)
Compute an approximate Schur Complement using the option of Guided Probing.
Teuchos::RCP< Epetra_CrsMatrix > computeApproxSchur(shylu_config *config, shylu_symbolic *ssym, Epetra_CrsMatrix *G, Epetra_CrsMatrix *R, Epetra_LinearProblem *LP, Amesos_BaseSolver *solver, Ifpack_Preconditioner *ifSolver, Epetra_CrsMatrix *C, Epetra_Map *localDRowMap)
Compute an approximate Schur Complement (Narrow Sep)
Teuchos::RCP< Epetra_CrsMatrix > computeApproxWideSchur(shylu_config *config, shylu_symbolic *ssym, Epetra_CrsMatrix *G, Epetra_CrsMatrix *R, Epetra_LinearProblem *LP, Amesos_BaseSolver *solver, Ifpack_Preconditioner *ifSolver, Epetra_CrsMatrix *C, Epetra_Map *localDRowMap)
Compute an approximate Shur Complete (Wide Sep)
Encapsulates the IQR inexact solver functionality.
int shylu_factor(Epetra_CrsMatrix *A, shylu_symbolic *ssym, shylu_data *data, shylu_config *config)
Main function call into ShylU.
Main data structure holding needed offset and temp variables.
int shylu_symbolic_factor(Epetra_CrsMatrix *A, shylu_symbolic *ssym, shylu_data *data, shylu_config *config)
Call symbolic factorization on matrix.