FEI Version of the Day
Loading...
Searching...
No Matches
fei_CSRMat.hpp
1#ifndef _fei_CSRMat_hpp_
2#define _fei_CSRMat_hpp_
3
4/*--------------------------------------------------------------------*/
5/* Copyright 2005 Sandia Corporation. */
6/* Under the terms of Contract DE-AC04-94AL85000, there is a */
7/* non-exclusive license for use of this work by or on behalf */
8/* of the U.S. Government. Export of this program may require */
9/* a license from the United States Government. */
10/*--------------------------------------------------------------------*/
11
12#include "fei_macros.hpp"
13#include "fei_FillableMat.hpp"
14#include "fei_SparseRowGraph.hpp"
15#include "fei_CSVec.hpp"
16
17namespace fei {
18
21class CSRMat {
22 public:
23 CSRMat();
24 CSRMat(const FillableMat& fmat);
25 virtual ~CSRMat();
26
27 SparseRowGraph& getGraph() {return srg_;}
28 const SparseRowGraph& getGraph() const {return srg_;}
29
30 std::vector<double>& getPackedCoefs() {return packedcoefs_;}
31 const std::vector<double>& getPackedCoefs() const {return packedcoefs_;}
32
33 unsigned getNumRows() const {return srg_.rowNumbers.size();}
34
35 CSRMat& operator=(const FillableMat& src);
36
37 CSRMat& operator+=(const CSRMat& src);
38
39 bool operator==(const CSRMat& rhs) const;
40
41 bool operator!=(const CSRMat& rhs) const;
42
43 private:
44 SparseRowGraph srg_;
45 std::vector<double> packedcoefs_;
46};//class CSRMat
47
49void multiply_CSRMat_CSVec(const CSRMat& A, const CSVec& x, CSVec& y);
50
52void multiply_trans_CSRMat_CSVec(const CSRMat& A, const CSVec& x, CSVec& y);
53
55void multiply_CSRMat_CSRMat(const CSRMat& A, const CSRMat& B, CSRMat& C,
56 bool storeResultZeros=false);
57
59void multiply_trans_CSRMat_CSRMat(const CSRMat& A, const CSRMat& B, CSRMat& C,
60 bool storeResultZeros=false);
61
62void add_CSRMat_to_FillableMat(const CSRMat& csrm, FillableMat& fm);
63
64}//namespace fei
65
66#endif
67
std::vector< int > rowNumbers
void multiply_CSRMat_CSRMat(const CSRMat &A, const CSRMat &B, CSRMat &C, bool storeResultZeros)
void multiply_trans_CSRMat_CSRMat(const CSRMat &A, const CSRMat &B, CSRMat &C, bool storeResultZeros)
void multiply_trans_CSRMat_CSVec(const CSRMat &A, const CSVec &x, CSVec &y)
void multiply_CSRMat_CSVec(const CSRMat &A, const CSVec &x, CSVec &y)