My Project
Element.h
1 #include <vector>
2 #include "Material.h"
3 
4 #define EIGEN_NO_DEBUG
5 #include <Eigen/Sparse>
6 
7 #ifndef ELEMENT
8 #define ELEMENT
9 
10 using namespace Eigen;
12 class Element
13 {
14 
15 public:
16  // \cond
17  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
18  // \endcond
19 
20  Element();
21 
22  std::vector<int> nodes;
23  double area;
26 
27  double Iex;
28  double Iey;
29  double Iexy;
30 
31  double ecx;
32  double ecy;
33 
34  double dx;
35  double dy;
36 
37  virtual MatrixXd getShapefunction(double zeta1, double zeta2, double zeta3) = 0;
38  virtual MatrixXd getNMatrix(double zeta1, double zeta2, double zeta3) = 0;
39  virtual void calculateConstants() = 0;
40  virtual void calculateStiffnessMatrix() = 0;
41  virtual void calculateElementLoadTorsion() = 0;
42  virtual void calculateElementLoadShearX() = 0;
43  virtual void calculateElementLoadShearY() = 0;
44 
50  virtual void computeTau() = 0;
51 
52 
53  std::vector<double> xNodePositions;
54  std::vector<double> yNodePositions;
55 
56  std::vector<double> xNodePositionPrincipal;
57  std::vector<double> yNodePositionPrincipal;
58 
59 
60  virtual double xOfZeta(double zeta1, double zeta2) = 0;
61 
62  virtual double yOfZeta(double zeta1, double zeta2) = 0;
63 
64  virtual void calculateArea() = 0;
65 
66  virtual void calculateAreaCentre() = 0;
67 
68 
69  virtual double getBendingStiffnessX(double) = 0;
70 
71  virtual double getBendingStiffnessY(double) = 0;
72 
73  virtual double getBendingStiffnessProduct(double, double) = 0;
74 
85  MatrixXd getNxMatrix();
86  MatrixXd getNyMatrix();
87 
88  MatrixXd B;
89  MatrixXd G;
90  MatrixXd XoverY;
91  MatrixXd xCoordinates;
92  MatrixXd yCoordinates;
93 
94  MatrixXd elementStiffness;
95  MatrixXd elementLoad;
97 
98  MatrixXd initialStrain;
99 
105  std::vector<int> getIEG();
106 
107  void setElementValue(MatrixXd &system, MatrixXd &local);
108 
109  std::vector<MatrixXd> tau;
110 
111 private:
112 };
113 
114 #endif
int elementType
Defines what type of element this element is (value &#39;2&#39; for T3 and value &#39;9&#39; for T6) ...
Definition: Element.h:25
Contains element data and relevant functions.
Definition: Element.h:12
MatrixXd G
Matrix with shearmodule used to determine initial element loads in tortional analysis.
Definition: Element.h:89
MatrixXd elementLoad
Matrix used to temporarily hold element load coefficients.
Definition: Element.h:95
MatrixXd B
2x3 Matrix containing differentials of shapefunction with respect to x and y respectively ...
Definition: Element.h:88
MatrixXd elementDisplacement
Matrix used to temporarily hold element displacement values.
Definition: Element.h:96
Material material
Element material with Youngs modulus, poisson&#39;s ratio and shear modulus.
Definition: Element.h:24
double ecy
Elements area centre in y-direction.
Definition: Element.h:32
double Iex
Elements second area moment about x-axis.
Definition: Element.h:27
Contains material data such as Young&#39;s Modulus, Shear Modulus and Poisson&#39;s ratio, and if needed could include additional material properties.
Definition: Material.h:3
double dy
Distance in y-direction between mesh- and node area centre.
Definition: Element.h:35
std::vector< int > nodes
Vector containing the nodes of the element.
Definition: Element.h:22
MatrixXd XoverY
6x1 matrix with x1, x2, x3, y1, y2, and y3 of the element.
Definition: Element.h:90
std::vector< double > yNodePositionPrincipal
Nodal y-coordinates in principal axes.
Definition: Element.h:57
std::vector< double > xNodePositions
Elements nodepositions in x-direction.
Definition: Element.h:53
std::vector< double > xNodePositionPrincipal
Nodal x-coordinates in principal axes.
Definition: Element.h:56
double ecx
Elements area centre in x-direction.
Definition: Element.h:31
double area
Elements total area.
Definition: Element.h:23
std::vector< MatrixXd > tau
Vector temporarily storing shear stresses during calculation.
Definition: Element.h:109
MatrixXd xCoordinates
1x3 matrix with x-coordinates.
Definition: Element.h:91
double Iey
Elements second area moment about y-axis.
Definition: Element.h:28
MatrixXd yCoordinates
1X3 matrix with y-coordinates.
Definition: Element.h:92
std::vector< double > yNodePositions
Elements nodepositions in y-direction.
Definition: Element.h:54
double dx
Distance in x-direction between mesh- and node area centre.
Definition: Element.h:34
double Iexy
Elements second area moment product.
Definition: Element.h:29
MatrixXd initialStrain
Matrix used to temporarily hold element initial strain coefficients.
Definition: Element.h:98
MatrixXd elementStiffness
Matrix used to temporarily hold element stiffnes coefficients.
Definition: Element.h:94