FEI Version of the Day
Loading...
Searching...
No Matches
snl_fei_PointBlockMap.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 _snl_fei_PointBlockMap_hpp_
10#define _snl_fei_PointBlockMap_hpp_
11
12#include <fei_macros.hpp>
13
14#include <map>
15
16namespace snl_fei {
24 public:
27
29 virtual ~PointBlockMap();
30
36 void setPtEqualBlk();
37
40 bool ptEqualBlk() { return( ptEqualBlk_ ); }
41
47 int setEqn(int ptEqn, int blkEqn);
48
55 int setEqn(int ptEqn, int blkEqn, int blkSize);
56
61 int setBlkEqnSize(int blkEqn, int size);
62
64 int getBlkEqnSize(int blkEqn);
65
68 int getMaxBlkEqnSize() { return( maxSize_ ); }
69
72 void setMaxBlkEqnSize(int sz) { maxSize_ = sz; }
73
79 int eqnToBlkEqn(int eqn) const;
80
86 int blkEqnToPtEqn(int blkEqn) const;
87
93 int getBlkEqnInfo(int blkEqn, int& ptEqn, int& blkSize);
94
99 int getPtEqnInfo(int ptEqn, int& blkEqn, int& blkOffset);
100
106 int getBlkEqnOffset(int blkEqn, int ptEqn);
107
111 bool isExactlyBlkEqn(int ptEqn);
112
115 std::map<int,int>* getPtEqns()
116 {
117 return( ptEqns_ );
118 }
119
122 std::map<int,std::pair<int,int> >* getBlkEqns()
123 {
124 return( blkEqns_ );
125 }
126
127 private:
129 PointBlockMap(const PointBlockMap& src);
130
131 PointBlockMap& operator=(const PointBlockMap& src);
132
133 std::map<int,int>* ptEqns_; //ptEqns_ maps point-equations to block-equations
134
135 std::map<int,std::pair<int,int> >* blkEqns_;
136 //blkEqns_ maps block-equations to point-equations and block-sizes
137 //(the point-equation stored is the first or smallest point-equation that is
138 //associated with the block-equation)
139
140 int maxSize_;
141
142 bool ptEqualBlk_; //if this is true, then all blkSizes are 1
143 };//class PointBlockMap
144}//namespace snl_fei
145#endif // _snl_fei_PointBlockMap_hpp_
146
int blkEqnToPtEqn(int blkEqn) const
int setEqn(int ptEqn, int blkEqn)
int getBlkEqnInfo(int blkEqn, int &ptEqn, int &blkSize)
int getPtEqnInfo(int ptEqn, int &blkEqn, int &blkOffset)
int setBlkEqnSize(int blkEqn, int size)
std::map< int, std::pair< int, int > > * getBlkEqns()
std::map< int, int > * getPtEqns()
int getBlkEqnOffset(int blkEqn, int ptEqn)