FEI Package Browser (Single Doxygen Collection)  Version of the Day
fei_Matrix.hpp
Go to the documentation of this file.
1 /*--------------------------------------------------------------------*/
2 /* Copyright 2005 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_hpp_
10 #define _fei_Matrix_hpp_
11 
12 #include "fei_iosfwd.hpp"
13 #include "fei_SharedPtr.hpp"
14 #include "fei_MatrixGraph.hpp"
15 #include "fei_defs.h"
16 
17 namespace fei {
30  class Matrix {
31  public:
33  class Factory {
34  public:
36  virtual ~Factory(){}
37 
41  };
42 
44  virtual ~Matrix(){}
45 
49  virtual const char* typeName() = 0;
50 
53  virtual int parameters(const fei::ParameterSet& paramset) = 0;
54 
57 
59  virtual void setMatrixGraph(fei::SharedPtr<fei::MatrixGraph> matrixGraph) = 0;
60 
63  virtual int getGlobalNumRows() const = 0;
64 
67  virtual int getLocalNumRows() const = 0;
68 
74  virtual int getRowLength(int row, int& length) const = 0;
75 
77  virtual int putScalar(double scalar) = 0;
78 
88  virtual int copyOutRow(int row, int len, double* coefs, int* indices) const = 0;
89 
102  virtual int sumIn(int numRows, const int* rows,
103  int numCols, const int* cols,
104  const double* const* values,
105  int format=0) = 0;
106 
119  virtual int copyIn(int numRows, const int* rows,
120  int numCols, const int* cols,
121  const double* const* values,
122  int format=0) = 0;
123 
139  virtual int sumInFieldData(int fieldID,
140  int idType,
141  int rowID,
142  int colID,
143  const double* const* data,
144  int format=0) = 0;
145 
163  virtual int sumInFieldData(int fieldID,
164  int idType,
165  int rowID,
166  int colID,
167  const double* data,
168  int format=0) = 0;
169 
179  virtual int sumIn(int blockID, int connectivityID,
180  const double* const* values,
181  int format=0) = 0;
182 
187  virtual int globalAssemble() = 0;
188 
191  virtual int multiply(fei::Vector* x,
192  fei::Vector* y) = 0;
193 
199  virtual void setCommSizes() = 0;
200 
206  virtual int gatherFromOverlap(bool accumulate = true) = 0;
207 
223  virtual int writeToFile(const char* filename,
224  bool matrixMarketFormat=true) = 0;
225 
238  virtual int writeToStream(FEI_OSTREAM& ostrm,
239  bool matrixMarketFormat=true) = 0;
240 
243  virtual bool usingBlockEntryStorage() = 0;
244 
249  virtual void markState() = 0;
250 
255  virtual bool changedSinceMark() = 0;
256 
257  virtual double* getBeginPointer() { return NULL; }
258  virtual int getOffset(int row, int col) { return -1; }
259 
260  };//class Matrix
261 }//namespace fei
262 
263 #ifndef _fei_ostream_ops_hpp_
264 #include <fei_ostream_ops.hpp>
265 #endif
266 
267 #endif // _fei_Matrix_hpp_
fei::Vector
Definition: fei_Vector.hpp:57
fei::Matrix::getBeginPointer
virtual double * getBeginPointer()
Definition: fei_Matrix.hpp:257
fei::Matrix::~Matrix
virtual ~Matrix()
Definition: fei_Matrix.hpp:44
fei::Matrix::Factory::~Factory
virtual ~Factory()
Definition: fei_Matrix.hpp:36
fei::Matrix::copyOutRow
virtual int copyOutRow(int row, int len, double *coefs, int *indices) const =0
fei::Matrix::typeName
virtual const char * typeName()=0
fei::Matrix::gatherFromOverlap
virtual int gatherFromOverlap(bool accumulate=true)=0
fei::Matrix::getRowLength
virtual int getRowLength(int row, int &length) const =0
fei::SharedPtr< fei::Matrix >
fei::Matrix::setCommSizes
virtual void setCommSizes()=0
fei::Matrix::Factory::createMatrix
virtual fei::SharedPtr< fei::Matrix > createMatrix(fei::SharedPtr< fei::MatrixGraph > matrixGraph)=0
fei::Matrix::getGlobalNumRows
virtual int getGlobalNumRows() const =0
fei_SharedPtr.hpp
fei::Matrix::getMatrixGraph
virtual fei::SharedPtr< fei::MatrixGraph > getMatrixGraph() const =0
fei::Matrix::getOffset
virtual int getOffset(int row, int col)
Definition: fei_Matrix.hpp:258
fei::ParameterSet
Definition: fei_ParameterSet.hpp:46
fei_iosfwd.hpp
fei_MatrixGraph.hpp
FEI_OSTREAM
#define FEI_OSTREAM
Definition: fei_iosfwd.hpp:24
fei::Matrix::multiply
virtual int multiply(fei::Vector *x, fei::Vector *y)=0
fei::Matrix::sumIn
virtual int sumIn(int numRows, const int *rows, int numCols, const int *cols, const double *const *values, int format=0)=0
fei::Matrix::markState
virtual void markState()=0
fei::Matrix::copyIn
virtual int copyIn(int numRows, const int *rows, int numCols, const int *cols, const double *const *values, int format=0)=0
fei::Matrix::putScalar
virtual int putScalar(double scalar)=0
fei::Matrix::writeToFile
virtual int writeToFile(const char *filename, bool matrixMarketFormat=true)=0
fei
Definition: fei_ArrayUtils.hpp:16
fei::Matrix
Definition: fei_Matrix.hpp:30
fei::Matrix::writeToStream
virtual int writeToStream(FEI_OSTREAM &ostrm, bool matrixMarketFormat=true)=0
fei_defs.h
fei_ostream_ops.hpp
fei::Matrix::Factory
Definition: fei_Matrix.hpp:33
fei::Matrix::usingBlockEntryStorage
virtual bool usingBlockEntryStorage()=0
fei::Matrix::parameters
virtual int parameters(const fei::ParameterSet &paramset)=0
fei::Matrix::globalAssemble
virtual int globalAssemble()=0
fei::Matrix::setMatrixGraph
virtual void setMatrixGraph(fei::SharedPtr< fei::MatrixGraph > matrixGraph)=0
fei::Matrix::sumInFieldData
virtual int sumInFieldData(int fieldID, int idType, int rowID, int colID, const double *const *data, int format=0)=0
fei::Matrix::changedSinceMark
virtual bool changedSinceMark()=0
fei::Matrix::getLocalNumRows
virtual int getLocalNumRows() const =0