1 #ifndef _PoissonData_h_
2 #define _PoissonData_h_
11 #include <fei_base.hpp>
35 int numProcs,
int localProc,
int outputLevel);
40 int getElemFormat() {
return(elemFormat_); };
43 int getNumFields() {
return(1);};
44 int* getFieldSizes() {
return(&fieldSize_);};
45 int* getFieldIDs() {
return(&fieldIDs_[0][0]);};
47 GlobalID getElemBlockID() {
return(elemBlockID_); };
49 int getNumLocalElements() {
return(numLocalElements_); };
50 GlobalID* getLocalElementIDs() {
return(elemIDs_); };
51 int getNumNodesPerElement() {
return(elem_->numElemNodes()); };
53 int* getNumFieldsPerNodeList() {
return( numFields_ ); };
54 int** getNodalFieldIDsTable() {
return( fieldIDs_ ); };
56 GlobalID* getElementConnectivity(GlobalID elemID);
58 double** getElemStiffness(GlobalID elemID);
59 double* getElemLoad(GlobalID elemID);
61 void addBCNode(GlobalID nodeID,
double x,
double y);
65 int getNumBCNodes() {
return( BCNodeIDs_.size() ); }
66 GlobalID* getBCNodeIDs() {
return( &BCNodeIDs_[0] ); }
67 int getBCFieldID() {
return( fieldIDs_[0][0] ); }
68 double* getBCValues() {
return( &BCValues_[0] ); }
71 void getLeftSharedNodes(
int& numShared, GlobalID* sharedNodeIDs,
72 int* numProcsPerSharedNode,
74 void getRightSharedNodes(
int& numShared, GlobalID* sharedNodeIDs,
75 int* numProcsPerSharedNode,
77 void getTopSharedNodes(
int& numShared, GlobalID* sharedNodeIDs,
78 int* numProcsPerSharedNode,
80 void getBottomSharedNodes(
int& numShared, GlobalID* sharedNodeIDs,
81 int* numProcsPerSharedNode,
85 void calculateDistribution();
87 void messageAbort(
const char* message);
89 void calculateConnectivity(GlobalID* conn,
int size, GlobalID elemID);
90 void initializeFieldStuff();
91 void deleteFieldArrays();
93 void printSharedNodes(
const char* str,
100 int numLocalElements_;
109 int maxProcX_, maxProcY_;
114 int nodesPerElement_;
116 GlobalID elemBlockID_;
124 bool fieldArraysAllocated_;
128 bool elemIDsAllocated_;
131 std::vector<GlobalID> BCNodeIDs_;
132 std::vector<double> BCValues_;
135 int init_elem_connectivities(
FEI* fei, PoissonData& poissonData);
138 PoissonData& poissonData);
140 int set_shared_nodes(
FEI* fei, PoissonData& poissonData);
142 int set_shared_nodes(
fei::VectorSpace* nodeSpace, PoissonData& poissonData);
144 int load_elem_data(
FEI* fei, PoissonData& poissonData);
146 int load_elem_data_putrhs(
FEI* fei, PoissonData& poissonData);
150 PoissonData& poissonData);
152 int load_BC_data(
FEI* fei, PoissonData& poissonData);