FEI Package Browser (Single Doxygen Collection)  Version of the Day
fei_FillableMat.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_FillableMat_hpp_
10 #define _fei_FillableMat_hpp_
11 
12 #include <fei_CSVec.hpp>
13 #include <fei_Pool_alloc.hpp>
14 #include <fei_EqnBuffer.hpp>
15 #include <vector>
16 #include <map>
17 
18 namespace fei {
19 
20 class FillableMat {
21  public:
22  FillableMat();
23  FillableMat(EqnBuffer& eqnbuf);
24  virtual ~FillableMat();
25 
26  FillableMat& operator=(const FillableMat& src);
27 
28  void setValues(double value);
29 
30  void createPosition(int row, int col);
31 
32  void sumInCoef(int row, int col, double coef);
33  void putCoef(int row, int col, double coef);
34 
35  void sumInRow(int row, const int* cols, const double* coefs, unsigned len);
36  void putRow(int row, const int* cols, const double* coefs, unsigned len);
37 
38  unsigned getNumRows() const;
39 
40  bool hasRow(int row) const;
41 
42  const CSVec* getRow(int row) const;
43  CSVec* create_or_getRow(int row);
44 
45  typedef std::map<int, CSVec*, std::less<int>,
47 
48  typedef feipoolmat::iterator iterator;
49  typedef feipoolmat::const_iterator const_iterator;
50 
51  iterator begin() {return matdata_.begin();}
52  iterator end() {return matdata_.end();}
53 
54  const_iterator begin() const {return matdata_.begin();}
55  const_iterator end() const {return matdata_.end();}
56 
57  void clear();
58 
59  bool operator==(const FillableMat& rhs) const;
60 
61  bool operator!=(const FillableMat& rhs) const;
62 
63  private:
66 }; //class FillableMat
67 
69 void print(std::ostream& os, const FillableMat& mat);
70 
72 int count_nnz(const FillableMat& mat);
73 
75 void get_row_numbers(const FillableMat& mat, std::vector<int>& rows);
76 
77 }//namespace fei
78 
79 #endif
80 
fei::FillableMat
Definition: fei_FillableMat.hpp:20
fei::FillableMat::sumInRow
void sumInRow(int row, const int *cols, const double *coefs, unsigned len)
Definition: fei_FillableMat.cpp:141
fei::FillableMat::begin
iterator begin()
Definition: fei_FillableMat.hpp:51
fei_CSVec.hpp
fei::get_row_numbers
void get_row_numbers(const FillableMat &mat, std::vector< int > &rows)
Definition: fei_FillableMat.cpp:287
fei::FillableMat::~FillableMat
virtual ~FillableMat()
Definition: fei_FillableMat.cpp:45
fei::FillableMat::getRow
const CSVec * getRow(int row) const
Definition: fei_FillableMat.cpp:180
fei_Pool_alloc.hpp
fei::FillableMat::createPosition
void createPosition(int row, int col)
Definition: fei_FillableMat.cpp:96
fei::FillableMat::putRow
void putRow(int row, const int *cols, const double *coefs, unsigned len)
Definition: fei_FillableMat.cpp:153
fei::FillableMat::operator=
FillableMat & operator=(const FillableMat &src)
Definition: fei_FillableMat.cpp:57
fei::FillableMat::feipoolmat
std::map< int, CSVec *, std::less< int >, fei_Pool_alloc< std::pair< const int, CSVec * > > > feipoolmat
Definition: fei_FillableMat.hpp:46
fei::FillableMat::end
iterator end()
Definition: fei_FillableMat.hpp:52
fei::FillableMat::putCoef
void putCoef(int row, int col, double coef)
Definition: fei_FillableMat.cpp:132
EqnBuffer
Definition: fei_EqnBuffer.hpp:21
fei::FillableMat::matdata_
feipoolmat matdata_
Definition: fei_FillableMat.hpp:64
fei::FillableMat::sumInCoef
void sumInCoef(int row, int col, double coef)
Definition: fei_FillableMat.cpp:123
fei::FillableMat::operator!=
bool operator!=(const FillableMat &rhs) const
Definition: fei_FillableMat.cpp:246
fei::FillableMat::create_or_getRow
CSVec * create_or_getRow(int row)
Definition: fei_FillableMat.cpp:193
fei::FillableMat::vecpool_
fei_Pool_alloc< CSVec > vecpool_
Definition: fei_FillableMat.hpp:65
fei::FillableMat::setValues
void setValues(double value)
Definition: fei_FillableMat.cpp:84
fei
Definition: fei_ArrayUtils.hpp:16
fei::count_nnz
int count_nnz(const FillableMat &mat)
Definition: fei_FillableMat.cpp:270
fei::FillableMat::iterator
feipoolmat::iterator iterator
Definition: fei_FillableMat.hpp:48
fei::FillableMat::begin
const_iterator begin() const
Definition: fei_FillableMat.hpp:54
fei::FillableMat::end
const_iterator end() const
Definition: fei_FillableMat.hpp:55
fei::FillableMat::clear
void clear()
Definition: fei_FillableMat.cpp:206
fei::FillableMat::operator==
bool operator==(const FillableMat &rhs) const
Definition: fei_FillableMat.cpp:220
fei::FillableMat::hasRow
bool hasRow(int row) const
Definition: fei_FillableMat.cpp:172
fei::CSVec
Definition: fei_CSVec.hpp:24
fei::FillableMat::getNumRows
unsigned getNumRows() const
Definition: fei_FillableMat.cpp:165
fei::print
void print(std::ostream &os, const FillableMat &mat)
Definition: fei_FillableMat.cpp:252
fei::FillableMat::FillableMat
FillableMat()
Definition: fei_FillableMat.cpp:16
fei::FillableMat::const_iterator
feipoolmat::const_iterator const_iterator
Definition: fei_FillableMat.hpp:49
fei_Pool_alloc
Definition: fei_Pool_alloc.hpp:34
fei_EqnBuffer.hpp