QuadrilateralElement.h
1 #pragma once
2 #include "Element.h"
3 
6  public Element
7 {
8 public:
11 
12  double xiCoord[2][2] = { { -sqrt(1 / 3.0), sqrt(1 / 3.0) } ,{ sqrt(1 / 3.0), -sqrt(1 / 3.0) } }; //<! \f$ \xi\f$ values of 2x2 integration points
13  double etaCoord[2][2] = { { -sqrt(1 / 3.0), -sqrt(1 / 3.0) } ,{ sqrt(1 / 3.0), sqrt(1 / 3.0) } }; //<! \f$ \eta\f$ values of 2x2 integration points
14  double weights[2][2] = { { 1, 1 } ,{ 1, 1 } }; //<! Weights used in 2x2 numerical integration
15  double xiExtrapolation[2][2] = { { -sqrt(3), sqrt(3) },{ sqrt(3), -sqrt(3) } }; //<! Extrapolation values of \f$ \xi\f$
16  double etaExtrapolation[2][2] = { { -sqrt(3), -sqrt(3) } ,{ sqrt(3), sqrt(3) } }; //<! Extrapolation values of \f$ \eta\f$
17  double xiCoord3x3[3][3] = { { -sqrt(0.6), sqrt(0.6) , sqrt(0.6) },{ -sqrt(0.6), 0, sqrt(0.6) },{ 0, -sqrt(0.6), 0 } }; //<! \f$ \xi\f$ values of 3x3 integration points
18  double etaCoord3x3[3][3] = { { -sqrt(0.6), -sqrt(0.6), sqrt(0.6) },{ sqrt(0.6), -sqrt(0.6), 0 },{ sqrt(0.6), 0, 0 } }; //<! \f$ \eta\f$ values of 3x3 integration points
19  double weights3x3[3][3] = { { 25.0 / 81 , 25.0 / 81 , 25.0 / 81 },{ 25.0 / 81 , 40.0 / 81, 40.0 / 81 },{ 40.0 / 81, 40.0 / 81, 64.0 / 81 } }; //<! Weights used in 3x3 numerical integration
20 
21 
22 
23  std::vector<std::vector<MatrixXd>> N;
24  std::vector<std::vector<MatrixXd>> N1;
25  std::vector<std::vector<MatrixXd>> J;
26  std::vector<std::vector<MatrixXd>> B;
27  std::vector<std::vector<double>> xIntegration;
28  std::vector<std::vector<double>> yIntegration;
29 
30  virtual MatrixXd getNMatrix(double zeta1, double zeta2) = 0;
31  virtual MatrixXd getN_etaMatrix(double xi, double eta) = 0;
32  virtual MatrixXd getN_xiMatrix(double xi, double eta) = 0;
33  virtual MatrixXd getJacobi(double xi, double eta) = 0;
34  virtual MatrixXd getBMatrix(MatrixXd jacobi, double xi, double eta) = 0;
35 
36 
48 
52  void resetElementLoad();
53 
60 
67 
80 
81 
88  void checkBMatrix();
89 
95  void checkNMatrix();
96 
106  void computeTauTorsion(double rateOfTwist);
107 
126  void computeTauShear(double Cx, double Cy);
127 
136  double xOfZeta(double xi, double eta);
137 
146  double yOfZeta(double xi, double eta);
147 
153  void calculateArea();
154 
163  void calculateAreaCentre();
164 
173  double getBendingStiffnessX(double Ay);
174 
184  double getBendingStiffnessY(double Ax);
185 
197  double getBendingStiffnessProduct(double Ax, double Ay);
198 
234  double calculateDeltaGIt();
235 
244 
245 
259  MatrixXd getN1Matrix(double xi, double eta);
260 
269 
278 
279 
280 
306  void calculateElementLoadComposite(double C_x, double C_y, double rateOfTwist);
307 
333  void computeTauComposite(double C_x, double C_y, double rateOfTwist);
334 
335 
336 };
337 
Contains element data and relevant functions for massive analysis.
Definition: Element.h:13
void calculateTorsionShearCenter()
Calculates the shear center for the element, based on torsional analysis.
Definition: QuadrilateralElement.cpp:376
double getBendingStiffnessX(double Ay)
Calculates the second moment of area about the x-axis for the element.
Definition: QuadrilateralElement.cpp:65
void checkBMatrix()
Method verifies .
Definition: QuadrilateralElement.cpp:305
std::vector< std::vector< double > > xIntegration
Vector used for storing x-coordinate values.
Definition: QuadrilateralElement.h:27
void computeTauComposite(double C_x, double C_y, double rateOfTwist)
Calculates the element stresses at the integration points for composite analysis. ...
Definition: QuadrilateralElement.cpp:486
void setExtrapolationMatrix()
Creates the matrix used for extrapolating results.
Definition: QuadrilateralElement.cpp:282
double getBendingStiffnessY(double Ax)
Calculates the second moment of area about the y-axis for the element.
Definition: QuadrilateralElement.cpp:83
void calculateElementLoadComposite(double C_x, double C_y, double rateOfTwist)
Calculates the element load for composite analysis.
Definition: QuadrilateralElement.cpp:427
void calculateArea()
Calculates the area of the element.
Definition: QuadrilateralElement.cpp:30
double getBendingStiffnessProduct(double Ax, double Ay)
Calculating the product of moment of inertia.
Definition: QuadrilateralElement.cpp:101
double getShearFactorContributionX()
Gets the shear deformation factor contribution from the element, in x-direction.
Definition: QuadrilateralElement.cpp:400
void checkNMatrix()
Method verifies .
Definition: QuadrilateralElement.cpp:362
std::vector< std::vector< MatrixXd > > N1
Vector used for storing values of the N1 matrix.
Definition: QuadrilateralElement.h:24
void calculateAreaCentre()
Calculates the area centre of the element.
Definition: QuadrilateralElement.cpp:43
std::vector< std::vector< MatrixXd > > N
Vector used for storing values of the N matrix.
Definition: QuadrilateralElement.h:23
MatrixXd getN1Matrix(double xi, double eta)
Gets the .
Definition: QuadrilateralElement.cpp:392
void resetElementLoad()
resets element load to zero
Definition: QuadrilateralElement.cpp:298
std::vector< std::vector< MatrixXd > > J
Vector used for storing values of the Jacobian Matrix.
Definition: QuadrilateralElement.h:25
void computeTauShear(double Cx, double Cy)
Calculates shear stresses from shear loading at nodes using elementsDisplacement. For quadrilateral e...
Definition: QuadrilateralElement.cpp:227
double yOfZeta(double xi, double eta)
Calculates and returns the the distance in the y-direction between the integration point in the eleme...
Definition: QuadrilateralElement.cpp:23
void calculateElementLoadShearX()
Calculates the initial load vector for applied shear along x-axis.
Definition: QuadrilateralElement.cpp:171
double getShearFactorContributionY()
Gets the shear deformation factor contribution from the element, in y-direction.
Definition: QuadrilateralElement.cpp:413
double calculateDeltaGIt()
Calculates delta GIt for the element, used to find gloal GIt for torsional analysis.
Definition: QuadrilateralElement.cpp:256
void computeTauTorsion(double rateOfTwist)
Calculates shear stresses from torsion load at nodes using initialStrain and elementsDisplacement. For quadrilateral elements the stresses are calculated at the integration points (using xiCoord and etaCoord). The stress values are then extrapolated to the nodes using setExtrapolationMatrix().
Definition: QuadrilateralElement.cpp:203
void calculateElementLoadShearY()
Calculates the initial load vector for applied shear along y-axis.
Definition: QuadrilateralElement.cpp:187
void calculateElementLoadTorsion()
Calculates the initial load vector for torsion . Load vector is negative for torsion loading to match...
Definition: QuadrilateralElement.cpp:120
std::vector< std::vector< double > > yIntegration
Vector used for storing y-coordinate values.
Definition: QuadrilateralElement.h:28
Class for implementation of quadrilateral elements.
Definition: QuadrilateralElement.h:5
std::vector< std::vector< MatrixXd > > B
Vector used for storing values of the B matrix.
Definition: QuadrilateralElement.h:26
double xOfZeta(double xi, double eta)
Calculates and returns the the distance in the x-direction between the integration point in the eleme...
Definition: QuadrilateralElement.cpp:14