FEI  Version of the Day
fei_ConnectivityBlock.hpp
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_ConnectivityBlock_hpp_
10 #define _fei_ConnectivityBlock_hpp_
11 
12 #include <fei_macros.hpp>
13 
14 #include <map>
15 #include <vector>
16 
17 namespace fei {
18  class Pattern;
19 
27  public:
29  ConnectivityBlock(int blockID,
30  fei::Pattern* pattern,
31  int numConnectivities);
33  ConnectivityBlock(int blockID,
34  fei::Pattern* rowpattern, fei::Pattern* colpattern,
35  int numConnectivities);
37  ConnectivityBlock(int numRowIDs,
38  const int* rowIDs,
39  const int* rowOffsets,
40  bool offsets_are_lengths = false);
41 
44  int numRowIDs,
45  const int* rowIDs,
46  const int* rowOffsets,
47  bool offsets_are_lengths = false);
48 
50  virtual ~ConnectivityBlock();
51 
53  int getBlockID() const { return(blockID_); }
54 
57  const fei::Pattern* getRowPattern() const { return(pattern_); }
58 
61  fei::Pattern* getRowPattern() { return(pattern_); }
62 
63  void setRowPattern(fei::Pattern* pattern) { pattern_ = pattern; }
64 
68  const fei::Pattern* getColPattern() const { return(colPattern_); }
69 
73  fei::Pattern* getColPattern() { return(colPattern_); }
74 
75  void setColPattern(fei::Pattern* pattern) { colPattern_ = pattern; }
76 
79  const std::map<int,int>& getConnectivityIDs() const { return( connIDsOffsetMap_ ); }
80 
83  std::map<int,int>& getConnectivityIDs() { return( connIDsOffsetMap_ ); }
84 
88  std::vector<int>& getConnectivityOffsets()
89  { return(connectivityOffsets_); }
90 
92  std::vector<int>& getRowConnectivities()
93  { return(connectivities_); }
94 
96  std::vector<int>& getColConnectivities()
97  { return(colConnectivities_); }
98 
100  const int* getRowConnectivity(int ID) const;
102  const int* getColConnectivity(int ID) const;
104  int* getRowConnectivity(int ID);
106  int* getColConnectivity(int ID);
107 
109  bool isSymmetric() const { return( isSymmetric_ ); }
110 
112  void setIsDiagonal(bool flag) { isDiagonal_ = flag; }
114  bool isDiagonal() const { return( isDiagonal_ ); }
115 
117  bool haveFieldID()
118  { return( haveFieldID_ ); }
119 
121  int fieldID()
122  { return( fieldID_ ); }
123 
124  private:
125  int blockID_;
126  fei::Pattern* pattern_;
127  fei::Pattern* colPattern_;
128  bool isSymmetric_;
129  bool isDiagonal_;
130 
131  std::map<int,int> connIDsOffsetMap_;
132 
133  std::vector<int> connectivityOffsets_;
134 
135  int numRecordsPerConnectivity_;
136  std::vector<int> connectivities_;
137  int numRecordsPerColConnectivity_;
138  std::vector<int> colConnectivities_;
139 
140  int fieldID_;
141  bool haveFieldID_;
142 
143  };//class ConnectivityBlock
144 } //namespace fei
145 
146 #endif // _fei_ConnectivityBlock_hpp_
147 
fei::ConnectivityBlock::getConnectivityOffsets
std::vector< int > & getConnectivityOffsets()
Definition: fei_ConnectivityBlock.hpp:88
fei::ConnectivityBlock::setIsDiagonal
void setIsDiagonal(bool flag)
Definition: fei_ConnectivityBlock.hpp:112
fei::ConnectivityBlock::getColConnectivities
std::vector< int > & getColConnectivities()
Definition: fei_ConnectivityBlock.hpp:96
fei::ConnectivityBlock::getBlockID
int getBlockID() const
Definition: fei_ConnectivityBlock.hpp:53
fei::ConnectivityBlock::getConnectivityIDs
const std::map< int, int > & getConnectivityIDs() const
Definition: fei_ConnectivityBlock.hpp:79
fei::ConnectivityBlock
Definition: fei_ConnectivityBlock.hpp:26
fei::ConnectivityBlock::haveFieldID
bool haveFieldID()
Definition: fei_ConnectivityBlock.hpp:117
fei::ConnectivityBlock::~ConnectivityBlock
virtual ~ConnectivityBlock()
Definition: fei_ConnectivityBlock.cpp:170
fei::ConnectivityBlock::isDiagonal
bool isDiagonal() const
Definition: fei_ConnectivityBlock.hpp:114
fei::Pattern
Definition: fei_Pattern.hpp:29
fei::ConnectivityBlock::getColPattern
fei::Pattern * getColPattern()
Definition: fei_ConnectivityBlock.hpp:73
fei::ConnectivityBlock::getRowConnectivity
const int * getRowConnectivity(int ID) const
Definition: fei_ConnectivityBlock.cpp:175
fei::ConnectivityBlock::getColConnectivity
const int * getColConnectivity(int ID) const
Definition: fei_ConnectivityBlock.cpp:203
fei::ConnectivityBlock::getRowConnectivities
std::vector< int > & getRowConnectivities()
Definition: fei_ConnectivityBlock.hpp:92
fei::ConnectivityBlock::getRowPattern
fei::Pattern * getRowPattern()
Definition: fei_ConnectivityBlock.hpp:61
fei::ConnectivityBlock::fieldID
int fieldID()
Definition: fei_ConnectivityBlock.hpp:121
fei::ConnectivityBlock::getRowPattern
const fei::Pattern * getRowPattern() const
Definition: fei_ConnectivityBlock.hpp:57
fei::ConnectivityBlock::getColPattern
const fei::Pattern * getColPattern() const
Definition: fei_ConnectivityBlock.hpp:68
fei
Definition: fei_ArrayUtils.hpp:16
fei::ConnectivityBlock::getConnectivityIDs
std::map< int, int > & getConnectivityIDs()
Definition: fei_ConnectivityBlock.hpp:83
fei::ConnectivityBlock::ConnectivityBlock
ConnectivityBlock(int blockID, fei::Pattern *pattern, int numConnectivities)
Definition: fei_ConnectivityBlock.cpp:22
fei::ConnectivityBlock::isSymmetric
bool isSymmetric() const
Definition: fei_ConnectivityBlock.hpp:109