FEI Version of the Day
Loading...
Searching...
No Matches
Poisson_Elem.hpp
1#ifndef __Poisson_Elem_H
2#define __Poisson_Elem_H
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
12class Poisson_Elem {
13
14 public:
15 Poisson_Elem();
16 ~Poisson_Elem();
17
18
19 GlobalID getElemID() const {return globalElemID_;};
20 void setElemID(GlobalID gNID) {globalElemID_ = gNID;
21 ID_IsSet_ = true;};
22
23 int numElemRows() const {return numElemRows_;};
24 void numElemRows(int gNERows) {numElemRows_ = gNERows;};
25
26 int numElemNodes() const {return numElemNodes_;};
27 void numElemNodes(int gNodes) {numElemNodes_ = gNodes;};
28
29 double getElemLength() const {return elemLength_;};
30 void setElemLength(double len) {elemLength_ = len;
31 elemLengthIsSet_ = true;};
32
33 double getTotalLength() const {return totalLength_;};
34 void setTotalLength(double len) {totalLength_ = len;
35 totalLengthIsSet_ = true;};
36
37 int allocateInternals(int DOF);
38 int allocateLoad(int DOF);
39 int allocateStiffness(int DOF);
40
41 GlobalID* getElemConnPtr(int& size);
42
43 void calculateLoad();
44 double* getElemLoad(int& size);
45
46 void calculateStiffness();
47 double** getElemStiff(int& size);
48
49 double* getNodalX(int& size) {size = numElemNodes_; return(nodalX_);};
50 double* getNodalY(int& size) {size = numElemNodes_; return(nodalY_);};
51
52 void calculateCoords();
53
54 void messageAbort(const char* str);
55
56 void deleteMemory();
57
58//$ temporary output for debugging...
59
60 void dumpToScreen();
61
62
63 private:
64 GlobalID globalElemID_; // global ID number for this element
65 bool ID_IsSet_; // whether ID has been set or not.
66 int numElemNodes_; // number of nodes associated with this element
67 int numElemRows_; // number of rows in the element matrices
68
69 GlobalID *nodeList_; // list of nodes associated with this element
70 double* nodalX_; // list of nodal x-coordinates
71 double* nodalY_; // list of nodal y-coordinates
72
73 double **elemStiff_; // stiffness matrix for this element
74 double *elemLoad_; // load vector for this element
75 bool internalsAllocated_;
76
77 double elemLength_; // length of a side of this 2D element
78 double totalLength_; // total length of a side of the square region
79 // that this element is in.
80 bool elemLengthIsSet_; // indicates whether length has been set.
81 bool totalLengthIsSet_; // indicates whether length has been set.
82
83 bool loadAllocated_;
84 bool stiffAllocated_;
85};
86
87#endif
88