44 #ifndef _fei_Trilinos_Helpers_hpp_
45 #define _fei_Trilinos_Helpers_hpp_
47 #include "fei_trilinos_macros.hpp"
48 #include "fei_fwd.hpp"
50 #include <fei_Include_Trilinos.hpp>
53 #include <fei_SharedPtr.hpp>
55 #include <fei_LinearProblemManager.hpp>
56 #include <fei_VectorSpace.hpp>
57 #include <fei_Reducer.hpp>
58 #include <fei_MatrixGraph.hpp>
60 namespace Trilinos_Helpers {
62 #ifdef HAVE_FEI_EPETRA
70 const std::vector<int>& local_eqns);
83 bool orderRowsWithLocalColsFirst=
false);
87 bool blockEntryMatrix,
89 bool orderRowsWithLocalColsFirst=
false);
93 bool blockEntryMatrix,
111 #ifdef HAVE_FEI_EPETRA
116 get_Epetra_MultiVector(
fei::Vector* feivec,
bool soln_vec);
159 int global_row_index,
int global_col_index)
164 int local_row = erowmap.
LID(global_row_index);
165 int local_col = ecolmap.
LID(global_col_index);
172 int* row_ptr = &colIndices[rowOffsets[local_row]];
173 int* end_row = &colIndices[rowOffsets[local_row+1]];
176 for(; row_ptr != end_row; ++row_ptr) {
177 if (*row_ptr == local_col)
break;
181 return rowOffsets[local_row] + col_offset;
190 int local_row_index,
int local_col_index)
199 int* row_ptr = &colIndices[rowOffsets[local_row_index]];
200 int* end_row = &colIndices[rowOffsets[local_row_index+1]];
203 for(; row_ptr != end_row; ++row_ptr) {
204 if (*row_ptr == local_col_index)
break;
208 return rowOffsets[local_row_index] + col_offset;
211 #endif // HAVE_FEI_EPETRA
215 #endif // _Trilinos_Helpers_hpp_
const Epetra_Map & ColMap() const
const Epetra_Map & RowMap() const
int ExtractCrsDataPointers(int *&IndexOffset, int *&Indices, double *&Values_in) const