FEI  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
fei_LinearProblemManager.hpp
1 /*--------------------------------------------------------------------*/
2 /* Copyright 2006 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_LinearProblemManager_hpp_
10 #define _fei_LinearProblemManager_hpp_
11 
12 #include <fei_macros.hpp>
13 #include <fei_SharedPtr.hpp>
14 #include <fei_mpi.h>
15 
16 #include <vector>
17 
18 namespace fei {
19  class ParameterSet;
20  class SparseRowGraph;
21 
24  class LinearProblemManager {
25  public:
27 
29  virtual ~LinearProblemManager(){}
30 
32 
33 
38  virtual void setRowDistribution(const std::vector<int>& ownedGlobalRows)=0;
39 
43  virtual void setMatrixGraph(fei::SharedPtr<fei::SparseRowGraph> matrixGraph)=0;
44 
46 
47 
50  virtual void setMatrixValues(double scalar)=0;
51 
55  virtual int getLocalNumRows()=0;
56 
60  virtual int getRowLength(int row)=0;
61 
77  virtual int copyOutMatrixRow(int row,
78  int len,
79  double* coefs,
80  int* indices)=0;
81 
89  virtual int insertMatrixValues(int numRows, const int* rows,
90  int numCols, const int* cols,
91  const double* const* values,
92  bool sum_into)=0;
93 
95 
96 
104  virtual void setVectorValues(double scalar, bool soln_vector)=0;
105 
131  virtual int insertVectorValues(int numValues,
132  const int* globalIndices,
133  const double* values,
134  bool sum_into,
135  bool soln_vector,
136  int vectorIndex=0)=0;
137 
141  virtual int copyOutVectorValues(int numValues,
142  const int* globalIndices,
143  double* values,
144  bool soln_vector,
145  int vectorIndex=0) = 0;
146 
152  virtual double* getLocalVectorValuesPtr(bool soln_vector,
153  int vectorIndex=0) = 0;
155 
156 
162  virtual int globalAssemble() = 0;
164  };//class LinearProblemManager
165 
166 }//namespace fei
167 
168 #endif // _fei_LinearProblemManager_hpp_
169 
virtual int insertVectorValues(int numValues, const int *globalIndices, const double *values, bool sum_into, bool soln_vector, int vectorIndex=0)=0
virtual int copyOutVectorValues(int numValues, const int *globalIndices, double *values, bool soln_vector, int vectorIndex=0)=0
virtual void setVectorValues(double scalar, bool soln_vector)=0
virtual int insertMatrixValues(int numRows, const int *rows, int numCols, const int *cols, const double *const *values, bool sum_into)=0
virtual int copyOutMatrixRow(int row, int len, double *coefs, int *indices)=0
virtual int getLocalNumRows()=0
virtual void setMatrixValues(double scalar)=0
virtual void setRowDistribution(const std::vector< int > &ownedGlobalRows)=0
virtual int getRowLength(int row)=0
virtual double * getLocalVectorValuesPtr(bool soln_vector, int vectorIndex=0)=0
virtual int globalAssemble()=0
virtual void setMatrixGraph(fei::SharedPtr< fei::SparseRowGraph > matrixGraph)=0