44#ifndef _fei_Factory_Trilinos_hpp_
45#define _fei_Factory_Trilinos_hpp_
47#include "fei_trilinos_macros.hpp"
51#include <fei_Include_Trilinos.hpp>
54#include <fei_VectorTraits_Epetra.hpp>
55#include <fei_MatrixTraits_Epetra.hpp>
56#include <fei_Trilinos_Helpers.hpp>
57#include <fei_LinProbMgr_EpetraBasic.hpp>
60#include <fei_Factory.hpp>
61#include <fei_ParameterSet.hpp>
62#include <fei_Reducer.hpp>
63#include <fei_Vector_Impl.hpp>
64#include <fei_Matrix_Impl.hpp>
65#include <fei_MatrixGraph_Impl2.hpp>
66#include <fei_SparseRowGraph.hpp>
67#include <fei_utils.hpp>
70#define fei_file "fei_Factory_Trilinos.hpp"
71#include <fei_ErrMacros.hpp>
78 Factory_Trilinos(MPI_Comm comm);
80 virtual ~Factory_Trilinos();
83 fei::SharedPtr<fei::Factory>
clone()
const
85 fei::SharedPtr<fei::Factory> factory(
new Factory_Trilinos(comm_));
90 virtual int parameters(
int numParams,
91 const char*
const* paramStrings);
94 virtual void parameters(
const fei::ParameterSet& parameterset);
97 fei::SharedPtr<fei::MatrixGraph>
98 createMatrixGraph(fei::SharedPtr<fei::VectorSpace> rowSpace,
99 fei::SharedPtr<fei::VectorSpace> colSpace,
103 fei::SharedPtr<fei::Vector>
104 createVector(fei::SharedPtr<fei::VectorSpace> vecSpace,
int numVectors=1);
106#ifdef HAVE_FEI_EPETRA
111 fei::SharedPtr<fei::Vector>
112 wrapVector(fei::SharedPtr<fei::VectorSpace> vecSpace,
113 fei::SharedPtr<Epetra_MultiVector> multiVec);
119 fei::SharedPtr<fei::Vector>
120 wrapVector(fei::SharedPtr<fei::MatrixGraph> matGraph,
121 fei::SharedPtr<Epetra_MultiVector> multiVec);
125 fei::SharedPtr<fei::Vector>
126 createVector(fei::SharedPtr<fei::VectorSpace> vecSpace,
127 bool isSolutionVector,
131 fei::SharedPtr<fei::Vector>
132 createVector(fei::SharedPtr<fei::MatrixGraph> matrixGraph,
136 fei::SharedPtr<fei::Vector>
137 createVector(fei::SharedPtr<fei::MatrixGraph> matrixGraph,
138 bool isSolutionVector,
141 fei::SharedPtr<fei::Matrix>
142 createMatrix(fei::SharedPtr<fei::MatrixGraph> matrixGraph);
144 fei::SharedPtr<fei::Solver> createSolver(
const char* name=0);
149 void create_LinProbMgr(
bool replace_if_already_created=
false);
153 fei::SharedPtr<fei::Reducer> reducer_;
154 fei::SharedPtr<fei::LinearProblemManager> lpm_epetrabasic_;
155 bool use_lpm_epetrabasic_;
158 bool use_feiMatrixLocal_;
159 bool blockEntryMatrix_;
160 bool orderRowsWithLocalColsFirst_;
virtual fei::SharedPtr< Factory > clone() const =0
virtual int getOutputLevel() const =0