FEI Package Browser (Single Doxygen Collection)  Version of the Day
fei_NodeDescriptor.hpp
Go to the documentation of this file.
1 #ifndef _NodeDescriptor_hpp_
2 #define _NodeDescriptor_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 
14 #include <fei_ArrayUtils.hpp>
15 #include <iostream>
37  public:
39 
42  numNodalDOF_(0), fieldIDList_(NULL),
45  {}
46 
47  virtual ~NodeDescriptor();
48 
49  GlobalID getGlobalNodeID() const {return(nodeID_);}
50  void setGlobalNodeID(GlobalID node) {nodeID_ = node;}
51 
52  int getNodeNumber() const {return(nodeNumber_);}
53  void setNodeNumber(int nn) {nodeNumber_ = nn;};
54 
55  int getBlkEqnNumber() const {return(blkEqnNumber_);}
56  void setBlkEqnNumber(int blkEqn) {blkEqnNumber_ = blkEqn;}
57 
58  int getNumNodalDOF() const {return(numNodalDOF_);}
59  void setNumNodalDOF(int dof) {numNodalDOF_ = dof;}
60 
61  void addField(int fieldID);
62  void setFieldEqnNumber(int fieldID, int eqn);
63 
64  int getNumFields() const {return(numFields_);}
65  const int* getFieldIDList() const {return(fieldIDList_);}
66  const int* getFieldEqnNumbers() const {return(fieldEqnNumbers_);}
67 
74  bool getFieldEqnNumber(int fieldID, int& eqnNumber) const;
75 
79  void getFieldID(int eqnNumber, int& fieldID, int& offset_into_field) const;
80 
81  bool operator==(const NodeDescriptor& nd) const
82  { return( nodeID_ == nd.nodeID_ ); }
83 
84  bool operator!=(const NodeDescriptor& nd) const
85  { return( nodeID_ != nd.nodeID_ ); }
86 
87  bool operator<(const NodeDescriptor& nd) const
88  { return( nodeID_ < nd.nodeID_ ); }
89 
90  bool operator>(const NodeDescriptor& nd) const
91  { return( nodeID_ > nd.nodeID_ ); }
92 
93  int getOwnerProc() const {return(ownerProc_);}
94  void setOwnerProc(int proc) {ownerProc_ = proc;}
95 
96  void addBlockIndex(unsigned blk_idx)
97  { fei::sortedListInsert(blk_idx, blockList_); }
98 
99  size_t getNumBlocks() const {return blockList_.size();}
100  const std::vector<unsigned>& getBlockIndexList() const {return(blockList_);}
101  bool hasBlockIndex(unsigned blk_idx) const;
102 
103  private:
105 
106  void allocFieldLists();
107  void allocBlockList();
108 
110 
112 
113  int numNodalDOF_; //total number of nodal degrees-of-freedom
114 
115  int* fieldIDList_; //list of field identifiers
116  int* fieldEqnNumbers_; //list of starting (global) equation numbers.
117  //fields can consist of more than one scalar (and
118  //have more than one associated equation), this
119  //is the first equation number
121 
123 
124  int ownerProc_; //processor that owns the equations for this node
125 
126  std::vector<unsigned> blockList_; //indexes of blocks that contain this node
127 };
128 
129 #endif
130 
NodeDescriptor::nodeID_
GlobalID nodeID_
Definition: fei_NodeDescriptor.hpp:109
NodeDescriptor::getGlobalNodeID
GlobalID getGlobalNodeID() const
Definition: fei_NodeDescriptor.hpp:49
fei_ArrayUtils.hpp
NodeDescriptor::blockList_
std::vector< unsigned > blockList_
Definition: fei_NodeDescriptor.hpp:126
NodeDescriptor::operator>
bool operator>(const NodeDescriptor &nd) const
Definition: fei_NodeDescriptor.hpp:90
NodeDescriptor::blkEqnNumber_
int blkEqnNumber_
Definition: fei_NodeDescriptor.hpp:122
NodeDescriptor::fieldIDList_
int * fieldIDList_
Definition: fei_NodeDescriptor.hpp:115
NodeDescriptor::getFieldIDList
const int * getFieldIDList() const
Definition: fei_NodeDescriptor.hpp:65
NodeDescriptor::getOwnerProc
int getOwnerProc() const
Definition: fei_NodeDescriptor.hpp:93
fei_macros.hpp
NodeDescriptor::NodeDescriptor
NodeDescriptor()
Definition: fei_NodeDescriptor.cpp:16
NodeDescriptor::setFieldEqnNumber
void setFieldEqnNumber(int fieldID, int eqn)
Definition: fei_NodeDescriptor.cpp:70
NodeDescriptor::setOwnerProc
void setOwnerProc(int proc)
Definition: fei_NodeDescriptor.hpp:94
NodeDescriptor::addBlockIndex
void addBlockIndex(unsigned blk_idx)
Definition: fei_NodeDescriptor.hpp:96
NodeDescriptor::operator!=
bool operator!=(const NodeDescriptor &nd) const
Definition: fei_NodeDescriptor.hpp:84
NodeDescriptor::operator==
bool operator==(const NodeDescriptor &nd) const
Definition: fei_NodeDescriptor.hpp:81
NodeDescriptor::getBlkEqnNumber
int getBlkEqnNumber() const
Definition: fei_NodeDescriptor.hpp:55
NodeDescriptor::getNumBlocks
size_t getNumBlocks() const
Definition: fei_NodeDescriptor.hpp:99
NodeDescriptor::getNodeNumber
int getNodeNumber() const
Definition: fei_NodeDescriptor.hpp:52
NodeDescriptor::allocFieldLists
void allocFieldLists()
NodeDescriptor::getFieldEqnNumber
bool getFieldEqnNumber(int fieldID, int &eqnNumber) const
Definition: fei_NodeDescriptor.cpp:89
NodeDescriptor::~NodeDescriptor
virtual ~NodeDescriptor()
Definition: fei_NodeDescriptor.cpp:32
NodeDescriptor::ownerProc_
int ownerProc_
Definition: fei_NodeDescriptor.hpp:124
NodeDescriptor::addField
void addField(int fieldID)
Definition: fei_NodeDescriptor.cpp:39
NodeDescriptor::getBlockIndexList
const std::vector< unsigned > & getBlockIndexList() const
Definition: fei_NodeDescriptor.hpp:100
NodeDescriptor::setBlkEqnNumber
void setBlkEqnNumber(int blkEqn)
Definition: fei_NodeDescriptor.hpp:56
NodeDescriptor::numFields_
int numFields_
Definition: fei_NodeDescriptor.hpp:120
NodeDescriptor::numNodalDOF_
int numNodalDOF_
Definition: fei_NodeDescriptor.hpp:113
NodeDescriptor::hasBlockIndex
bool hasBlockIndex(unsigned blk_idx) const
Definition: fei_NodeDescriptor.cpp:131
NodeDescriptor::operator<
bool operator<(const NodeDescriptor &nd) const
Definition: fei_NodeDescriptor.hpp:87
GlobalID
int GlobalID
Definition: fei_defs.h:60
NodeDescriptor::operator=
NodeDescriptor & operator=(const NodeDescriptor &src)
NodeDescriptor::getNumNodalDOF
int getNumNodalDOF() const
Definition: fei_NodeDescriptor.hpp:58
NodeDescriptor
Definition: fei_NodeDescriptor.hpp:36
NodeDescriptor::getFieldID
void getFieldID(int eqnNumber, int &fieldID, int &offset_into_field) const
Definition: fei_NodeDescriptor.cpp:104
NodeDescriptor::setNodeNumber
void setNodeNumber(int nn)
Definition: fei_NodeDescriptor.hpp:53
NodeDescriptor::getNumFields
int getNumFields() const
Definition: fei_NodeDescriptor.hpp:64
fei::sortedListInsert
int sortedListInsert(const T &item, std::vector< T > &list)
Definition: fei_ArrayUtils.hpp:209
NodeDescriptor::setGlobalNodeID
void setGlobalNodeID(GlobalID node)
Definition: fei_NodeDescriptor.hpp:50
NodeDescriptor::getFieldEqnNumbers
const int * getFieldEqnNumbers() const
Definition: fei_NodeDescriptor.hpp:66
NodeDescriptor::nodeNumber_
int nodeNumber_
Definition: fei_NodeDescriptor.hpp:111
NodeDescriptor::allocBlockList
void allocBlockList()
NodeDescriptor::NodeDescriptor
NodeDescriptor(const NodeDescriptor &src)
Definition: fei_NodeDescriptor.hpp:40
NodeDescriptor::setNumNodalDOF
void setNumNodalDOF(int dof)
Definition: fei_NodeDescriptor.hpp:59
NodeDescriptor::fieldEqnNumbers_
int * fieldEqnNumbers_
Definition: fei_NodeDescriptor.hpp:116