FEI Package Browser (Single Doxygen Collection)  Version of the Day
fei_Matrix_Local.hpp
Go to the documentation of this file.
1 /*--------------------------------------------------------------------*/
2 /* Copyright 2007 Sandia Corporation. */
3 /* Under the terms of Contract DE-AC04-94AL85000, there is a */
4 /* non-exclusive license for use of this work by or on behalf */
5 /* of the U.S. Government. Export of this program may require */
6 /* a license from the United States Government. */
7 /*--------------------------------------------------------------------*/
8 
9 #ifndef _fei_Matrix_Local_hpp_
10 #define _fei_Matrix_Local_hpp_
11 
12 #include <fei_SharedPtr.hpp>
13 #include <fei_MatrixGraph.hpp>
14 #include <fei_Matrix.hpp>
15 #include <fei_SparseRowGraph.hpp>
16 
17 #include <vector>
18 
19 namespace fei {
20 class Matrix_Local : public fei::Matrix {
21  public:
24 
25  virtual ~Matrix_Local();
26 
29  bool blockEntry);
30 
31  const char* typeName();
32 
35  int parameters(const fei::ParameterSet& paramset);
36 
39  int parameters(int numParams, const char* const* paramStrings);
40 
43 
46 
49  int getGlobalNumRows() const;
50 
53  int getLocalNumRows() const;
54 
60  int getRowLength(int row, int& length) const;
61 
63  int putScalar(double scalar);
64 
74  int copyOutRow(int row, int len, double* coefs, int* indices) const;
75 
88  int sumIn(int numRows, const int* rows,
89  int numCols, const int* cols,
90  const double* const* values,
91  int format=0);
92 
105  int copyIn(int numRows, const int* rows,
106  int numCols, const int* cols,
107  const double* const* values,
108  int format=0);
109 
125  int sumInFieldData(int fieldID,
126  int idType,
127  int rowID,
128  int colID,
129  const double* const* data,
130  int format=0);
131 
149  int sumInFieldData(int fieldID,
150  int idType,
151  int rowID,
152  int colID,
153  const double* data,
154  int format=0);
155 
165  int sumIn(int blockID, int connectivityID,
166  const double* const* values,
167  int format=0);
168 
173  int globalAssemble();
174 
177  int multiply(fei::Vector* x,
178  fei::Vector* y);
179 
180  void setCommSizes();
181 
187  int gatherFromOverlap(bool accumulate = true);
188 
204  int writeToFile(const char* filename,
205  bool matrixMarketFormat=true);
206 
219  int writeToStream(FEI_OSTREAM& ostrm,
220  bool matrixMarketFormat=true);
221 
224  bool usingBlockEntryStorage();
225 
230  void markState();
231 
236  bool changedSinceMark();
237 
238  const std::vector<int>& getRowNumbers() const;
239 
240  const std::vector<int>& getRowOffsets() const;
241 
242  const std::vector<int>& getColumnIndices() const;
243 
244  const std::vector<double>& getCoefs() const;
245 
246  private:
247  int getRowIndex(int rowNumber) const;
248 
249  int giveToMatrix(int numRows, const int* rows,
250  int numCols, const int* cols,
251  const double* const* values,
252  bool sumInto, int format);
253 
256  std::vector<double> coefs_;
258  std::vector<double> work_data1D_;
259  std::vector<const double*> work_data2D_;
260 };//class Matrix_Local
261 }//namespace fei
262 
263 #endif
264 
fei::Vector
Definition: fei_Vector.hpp:57
fei::Matrix_Local::globalAssemble
int globalAssemble()
Definition: fei_Matrix_Local.cpp:263
fei::Matrix_Local::setCommSizes
void setCommSizes()
Definition: fei_Matrix_Local.cpp:275
fei::Matrix_Local::create_Matrix_Local
static fei::SharedPtr< fei::Matrix > create_Matrix_Local(fei::SharedPtr< fei::MatrixGraph > matrixGraph, bool blockEntry)
Definition: fei_Matrix_Local.cpp:34
fei::Matrix_Local::markState
void markState()
Definition: fei_Matrix_Local.cpp:358
fei::Matrix_Local
Definition: fei_Matrix_Local.hpp:20
fei::Matrix_Local::copyIn
int copyIn(int numRows, const int *rows, int numCols, const int *cols, const double *const *values, int format=0)
Definition: fei_Matrix_Local.cpp:187
fei::Matrix_Local::getCoefs
const std::vector< double > & getCoefs() const
Definition: fei_Matrix_Local.cpp:380
fei::SharedPtr< fei::MatrixGraph >
fei::Matrix_Local::sumInFieldData
int sumInFieldData(int fieldID, int idType, int rowID, int colID, const double *const *data, int format=0)
Definition: fei_Matrix_Local.cpp:197
fei::Matrix_Local::getGlobalNumRows
int getGlobalNumRows() const
Definition: fei_Matrix_Local.cpp:71
fei::Matrix_Local::work_data2D_
std::vector< const double * > work_data2D_
Definition: fei_Matrix_Local.hpp:259
fei::Matrix_Local::coefs_
std::vector< double > coefs_
Definition: fei_Matrix_Local.hpp:256
fei::Matrix_Local::writeToFile
int writeToFile(const char *filename, bool matrixMarketFormat=true)
Definition: fei_Matrix_Local.cpp:287
fei_SharedPtr.hpp
fei::Matrix_Local::stateChanged_
bool stateChanged_
Definition: fei_Matrix_Local.hpp:257
fei::Matrix_Local::sumIn
int sumIn(int numRows, const int *rows, int numCols, const int *cols, const double *const *values, int format=0)
Definition: fei_Matrix_Local.cpp:177
fei::Matrix_Local::gatherFromOverlap
int gatherFromOverlap(bool accumulate=true)
Definition: fei_Matrix_Local.cpp:280
fei::Matrix_Local::sparseRowGraph_
fei::SharedPtr< fei::SparseRowGraph > sparseRowGraph_
Definition: fei_Matrix_Local.hpp:255
fei::ParameterSet
Definition: fei_ParameterSet.hpp:46
fei::Matrix_Local::copyOutRow
int copyOutRow(int row, int len, double *coefs, int *indices) const
Definition: fei_Matrix_Local.cpp:106
fei::Matrix_Local::getRowLength
int getRowLength(int row, int &length) const
Definition: fei_Matrix_Local.cpp:87
fei_MatrixGraph.hpp
fei::Matrix_Local::putScalar
int putScalar(double scalar)
Definition: fei_Matrix_Local.cpp:98
fei::Matrix_Local::matrixGraph_
fei::SharedPtr< fei::MatrixGraph > matrixGraph_
Definition: fei_Matrix_Local.hpp:254
FEI_OSTREAM
#define FEI_OSTREAM
Definition: fei_iosfwd.hpp:24
filename
std::string filename
fei::Matrix_Local::writeToStream
int writeToStream(FEI_OSTREAM &ostrm, bool matrixMarketFormat=true)
Definition: fei_Matrix_Local.cpp:306
fei::Matrix_Local::changedSinceMark
bool changedSinceMark()
Definition: fei_Matrix_Local.cpp:364
fei::Matrix_Local::getColumnIndices
const std::vector< int > & getColumnIndices() const
Definition: fei_Matrix_Local.cpp:376
fei::Matrix_Local::getLocalNumRows
int getLocalNumRows() const
Definition: fei_Matrix_Local.cpp:75
fei_Matrix.hpp
fei::Matrix_Local::parameters
int parameters(const fei::ParameterSet &paramset)
Definition: fei_Matrix_Local.cpp:50
fei
Definition: fei_ArrayUtils.hpp:16
fei::Matrix
Definition: fei_Matrix.hpp:30
fei::Matrix_Local::multiply
int multiply(fei::Vector *x, fei::Vector *y)
Definition: fei_Matrix_Local.cpp:267
fei::Matrix_Local::Matrix_Local
Matrix_Local(fei::SharedPtr< fei::MatrixGraph > matrixGraph, fei::SharedPtr< fei::SparseRowGraph > sparseRowGraph)
Definition: fei_Matrix_Local.cpp:17
fei::Matrix_Local::~Matrix_Local
virtual ~Matrix_Local()
Definition: fei_Matrix_Local.cpp:28
fei_SparseRowGraph.hpp
fei::Matrix_Local::giveToMatrix
int giveToMatrix(int numRows, const int *rows, int numCols, const int *cols, const double *const *values, bool sumInto, int format)
Definition: fei_Matrix_Local.cpp:124
fei::Matrix_Local::getRowNumbers
const std::vector< int > & getRowNumbers() const
Definition: fei_Matrix_Local.cpp:368
fei::Matrix_Local::getRowIndex
int getRowIndex(int rowNumber) const
Definition: fei_Matrix_Local.cpp:79
fei::Matrix_Local::typeName
const char * typeName()
Definition: fei_Matrix_Local.cpp:45
fei::Matrix_Local::work_data1D_
std::vector< double > work_data1D_
Definition: fei_Matrix_Local.hpp:258
fei::Matrix_Local::getMatrixGraph
fei::SharedPtr< fei::MatrixGraph > getMatrixGraph() const
Definition: fei_Matrix_Local.cpp:63
fei::Matrix_Local::usingBlockEntryStorage
bool usingBlockEntryStorage()
Definition: fei_Matrix_Local.cpp:354
fei::Matrix_Local::setMatrixGraph
void setMatrixGraph(fei::SharedPtr< fei::MatrixGraph > matrixGraph)
Definition: fei_Matrix_Local.cpp:67
fei::Matrix_Local::getRowOffsets
const std::vector< int > & getRowOffsets() const
Definition: fei_Matrix_Local.cpp:372