![]() |
Class for implementation of quadrilateral elements. More...
#include <QuadrilateralElement.h>
Public Member Functions | |
virtual MatrixXd | getNMatrix (double zeta1, double zeta2)=0 |
virtual MatrixXd | getN_etaMatrix (double xi, double eta)=0 |
virtual MatrixXd | getN_xiMatrix (double xi, double eta)=0 |
virtual MatrixXd | getJacobi (double xi, double eta)=0 |
virtual MatrixXd | getBMatrix (MatrixXd jacobi, double xi, double eta)=0 |
void | setExtrapolationMatrix () |
Creates the matrix used for extrapolating results. More... | |
void | resetElementLoad () |
resets element load to zero | |
void | calculateElementLoadTorsion () |
Calculates the initial load vector for torsion \(\boldsymbol{S}^0\). Load vector is negative for torsion loading to match global load vector. More... | |
void | calculateElementLoadShearX () |
Calculates the initial load vector \(\boldsymbol{S}_x^0\) for applied shear along x-axis. More... | |
void | calculateElementLoadShearY () |
Calculates the initial load vector \(\boldsymbol{S}_y^0\) for applied shear along y-axis. More... | |
void | checkBMatrix () |
Method verifies \( \boldsymbol{B} \). More... | |
void | checkNMatrix () |
Method verifies \(\boldsymbol{N}\). More... | |
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(). More... | |
void | computeTauShear (double Cx, double Cy) |
Calculates shear stresses from shear loading at nodes using 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(). More... | |
double | xOfZeta (double xi, double eta) |
Calculates and returns the the distance in the x-direction between the integration point in the element and the element area centre. More... | |
double | yOfZeta (double xi, double eta) |
Calculates and returns the the distance in the y-direction between the integration point in the element and the element area centre. More... | |
void | calculateArea () |
Calculates the area of the element. More... | |
void | calculateAreaCentre () |
Calculates the area centre of the element. More... | |
double | getBendingStiffnessX (double Ay) |
Calculates the second moment of area about the x-axis for the element. More... | |
double | getBendingStiffnessY (double Ax) |
Calculates the second moment of area about the y-axis for the element. More... | |
double | getBendingStiffnessProduct (double Ax, double Ay) |
Calculating the product of moment of inertia. More... | |
double | calculateDeltaGIt () |
Calculates delta GIt for the element, used to find gloal GIt for torsional analysis. More... | |
void | calculateTorsionShearCenter () |
Calculates the shear center for the element, based on torsional analysis. More... | |
MatrixXd | getN1Matrix (double xi, double eta) |
Gets the \( \textbf{N}_1 matrix\). More... | |
double | getShearFactorContributionX () |
Gets the shear deformation factor contribution from the element, in x-direction. More... | |
double | getShearFactorContributionY () |
Gets the shear deformation factor contribution from the element, in y-direction. More... | |
void | calculateElementLoadComposite (double C_x, double C_y, double rateOfTwist) |
Calculates the element load for composite analysis. More... | |
void | computeTauComposite (double C_x, double C_y, double rateOfTwist) |
Calculates the element stresses at the integration points for composite analysis. More... | |
![]() | |
Element () | |
Constructor. | |
virtual void | calculateStiffnessMatrix ()=0 |
void | calculateConstants (int type) |
Initiates XoverY, xCoordinates, and yCoordinates for all massive element types. More... | |
void | setElementValue (MatrixXd &system, MatrixXd &local) |
Uses getIEG() to assign system values to corresponding local parameters. | |
MatrixXd | getZeroVector () |
Initate a vector with numer of columns equal to number of nodes. | |
Public Attributes | |
double | xiCoord [2][2] = { { -sqrt(1 / 3.0), sqrt(1 / 3.0) } ,{ sqrt(1 / 3.0), -sqrt(1 / 3.0) } } |
double | etaCoord [2][2] = { { -sqrt(1 / 3.0), -sqrt(1 / 3.0) } ,{ sqrt(1 / 3.0), sqrt(1 / 3.0) } } |
double | weights [2][2] = { { 1, 1 } ,{ 1, 1 } } |
double | xiExtrapolation [2][2] = { { -sqrt(3), sqrt(3) },{ sqrt(3), -sqrt(3) } } |
double | etaExtrapolation [2][2] = { { -sqrt(3), -sqrt(3) } ,{ sqrt(3), sqrt(3) } } |
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 } } |
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 } } |
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 } } |
std::vector< std::vector< MatrixXd > > | N |
Vector used for storing values of the N matrix. | |
std::vector< std::vector< MatrixXd > > | N1 |
Vector used for storing values of the N1 matrix. | |
std::vector< std::vector< MatrixXd > > | J |
Vector used for storing values of the Jacobian Matrix. | |
std::vector< std::vector< MatrixXd > > | B |
Vector used for storing values of the B matrix. | |
std::vector< std::vector< double > > | xIntegration |
Vector used for storing x-coordinate values. | |
std::vector< std::vector< double > > | yIntegration |
Vector used for storing y-coordinate values. | |
![]() | |
std::vector< Node > | nodes |
Vector containing nodes of the element. | |
double | area |
Elements total area. | |
Material | material |
Elements material with Youngs modulus, poisson's ratio and shear modulus. | |
int | elementType |
Defines what type of element this element is (value '2' for T3,'9' for T6, '3' for Q4 and '10' for Q9) | |
int | numberOfCorners |
Number of corner nodes for the element. 3 for triangular and 4 for quadrilateral. | |
double | Iex |
Elements second area moment about x-axis. | |
double | Iey |
Elements second area moment about y-axis. | |
double | Iexy |
Elements second area moment product. | |
double | ecx |
Elements area centre in x-direction. | |
double | ecy |
Elements area centre in y-direction. | |
double | dx |
Distance in x-direction between mesh- and node area centre. | |
double | dy |
Distance in y-direction between mesh- and node area centre. | |
double | deltaGIt |
Contribution to St.Venant stiffness of the cross-section ( \( GI_t\)) from this element. | |
double | torsion_xs |
Shear center in x-direction derived from torsional analysis. | |
double | torsion_ys |
Shear center in y-direction derived from torsional analysis. | |
MatrixXd | B |
Matrix containing differentials of shapefunction with respect to x and y respectively. 2 rows , number of columns equals number of nodes. | |
MatrixXd | G |
Matrix with shear module used to determine initial element loads in torsional analysis. 2x2 matrix. | |
MatrixXd | XoverY |
Matrix with all x-coordinates followed by all y-coordinates for the nodes in order. Number of rows equal number of nodes times two. | |
MatrixXd | xCoordinates |
Matrix with x-coordinates for the nodes in order. Number of rows equal number of nodes. | |
MatrixXd | yCoordinates |
Matrix with y-coordinates for the nodes in order. Number of rows equal number of nodes. | |
MatrixXd | cornerCoordinatesX |
x-position of corner nodes | |
MatrixXd | cornerCoordinatesY |
y-position of corner nodes | |
MatrixXd | elementStiffness |
Matrix used to temporarily hold element stiffnes coefficients, \(\boldsymbol{K}_e\). | |
MatrixXd | elementLoad |
Matrix used to temporarily hold element load coefficients, \(\boldsymbol{S}^0\). | |
MatrixXd | elementDisplacement |
Matrix used to temporarily hold element displacement values, \( \boldsymbol{v} \). | |
MatrixXd | initialStrain |
Matrix used to temporarily hold element initial strain coefficients, \( \boldsymbol{\epsilon}_0 \). | |
MatrixXd | tauResult |
Stores the tau values of the element temporarily, before it's written to file. | |
MatrixXd | extrapolationMatrix |
Matrix used for extrapolating stress results. | |
Class for implementation of quadrilateral elements.
|
virtual |
|
virtual |
Calculates the area centre of the element.
\( ecx = \frac{1}{n} \sum_{i=0}^{n} (x_i) \)
\( ecy = \frac{1}{n} \sum_{i=0}^{n} (y_i) \)
where n is number of nodes
Implements Element.
|
virtual |
Calculates delta GIt for the element, used to find gloal GIt for torsional analysis.
\( \begin{equation} \Delta GI_t \; = \; \int_A \begin{bmatrix} \boldsymbol{x^T} \\ \boldsymbol{y^T} \end{bmatrix} \begin{bmatrix} \boldsymbol{0} & \boldsymbol{N}^T \\ \boldsymbol{N}^T & \boldsymbol{0} \end{bmatrix} \left( \begin{bmatrix} \textbf{-N}_{,x} \\ \textbf{N}_{,y} \end{bmatrix} \textbf{v} + \begin{bmatrix} \textbf{0} & \textbf{N} \\ \textbf{N} & \textbf{0} \end{bmatrix} \begin{bmatrix} \textbf{x} \\ \textbf{y} \end{bmatrix} \right ) \end{equation} \)
Implements Element.
|
virtual |
Calculates the element load for composite analysis.
\( \boldsymbol{S}_e^0 = \int_{A_e} \big(\boldsymbol{d}_e^T \boldsymbol{c} - \boldsymbol{B}_e^T \boldsymbol{C}_e \; \boldsymbol{\overline{\epsilon}}_{0,e} \; \big ) dA \)
with
\( \boldsymbol{c} = \begin{bmatrix} C_x \\ C_y \\ \end{bmatrix} \) , \( \boldsymbol{e} = E \begin{bmatrix} x \\ y \\ \end{bmatrix} \), \( \overline{\boldsymbol{\epsilon}}_{0,e} = \overline{\boldsymbol{\epsilon}}_{0_s} + \overline{\boldsymbol{\epsilon}}_{0_t} = \begin{bmatrix} (C_x x + C_y y)\\ -\nu \left ( \frac{1}{2} C_x (x^2 - y^2) + C_y x y \right ) - \boldsymbol{Ny}\theta \\ -\nu \left ( \frac{1}{2} C_y (y^2 - x^2) + C_x x y \right ) + \boldsymbol{Nx}\theta\\ \end{bmatrix} \)
C_x | shear load factor in x-direction |
C_y | shear load factor in y-direction |
rateOfTwist | precalculated rate of twist \( \theta \) |
Implements Element.
|
virtual |
Calculates the initial load vector \(\boldsymbol{S}_x^0\) for applied shear along x-axis.
\( \boldsymbol{S}^0_x = \frac{E_eV_x}{EI_y} \left[\int_{A_e} \boldsymbol{N}^TxdA + \frac{\nu_e}{4(1+\nu_e)}\int_{A_e}(\boldsymbol{N}^T_{,x}(x^2 - y^2) + 2\boldsymbol{N}^T_{,y}xy)dA \right] \)
Implements Element.
|
virtual |
Calculates the initial load vector \(\boldsymbol{S}_y^0\) for applied shear along y-axis.
\( \boldsymbol{S}^0_y = \frac{E_eV_y}{EI_x} \left[ \int_{A_e} \boldsymbol{N}^TydA + \frac{\nu_e}{4(1+\nu_e)}\int_{A_e}(\boldsymbol{N}^T_{,y}(y^2 - x^2) + 2\boldsymbol{N}^T_{,x}xy)dA \right]\)
Implements Element.
|
virtual |
Calculates the initial load vector for torsion \(\boldsymbol{S}^0\). Load vector is negative for torsion loading to match global load vector.
\( \boldsymbol{S}^0 = - \int_A \boldsymbol{B}^T \boldsymbol{G} \boldsymbol{\epsilon}_0 dA \)
Implements Element.
|
virtual |
Calculates the shear center for the element, based on torsional analysis.
\( x_s = -\sum E \textbf{y}^T \int_{A_e} \textbf{N}^T \textbf{N} dA \textbf{v} \)
\( y_s = \sum E \textbf{x}^T \int_{A_e} \textbf{N}^T \textbf{N} dA \textbf{v} \)
Implements Element.
void QuadrilateralElement::checkBMatrix | ( | ) |
Method verifies \( \boldsymbol{B} \).
Used in debugging of the program. Calculates \(\boldsymbol{\epsilon}\) for each node. First component should be 1, second should be zero. If not, B is wrong. User must verify values (non-automatic). \( \boldsymbol{\epsilon} = \boldsymbol{B}\boldsymbol{x}\)
void QuadrilateralElement::checkNMatrix | ( | ) |
Method verifies \(\boldsymbol{N}\).
Used in debugging of the program. Checks if \( x = \textbf{N} \textbf{x} \) and \( y = \boldsymbol{N} \boldsymbol{y} \) for all integration points. User must verify (non-automatic).
|
virtual |
Calculates the element stresses at the integration points for composite analysis.
\( \boldsymbol{\tau}_e = \boldsymbol{C}_e \big ( \boldsymbol{B}_e \boldsymbol{v}_e + \boldsymbol{\epsilon}_{0,e} \big) \)
with
\( \boldsymbol{\epsilon}_{0} = \boldsymbol{\epsilon}_{0_s} + \boldsymbol{\epsilon}_{0_t} = \begin{bmatrix} (C_x x + C_y y)\\ -\nu \left ( \frac{1}{2} C_x (x^2 - y^2) + C_y x y \right ) - \boldsymbol{Ny}\theta \\ -\nu \left ( \frac{1}{2} C_y (y^2 - x^2) + C_x x y \right ) + \boldsymbol{Nx}\theta\\ \end{bmatrix} \), \( \boldsymbol{C}_e = \begin{bmatrix} E_e & 0 & 0 \\ 0 & G_e & 0 \\ 0 & 0 & G_e \\ \end{bmatrix} \)
C_x | shear load factor in x-direction |
C_y | shear load factor in y-direction |
rateOfTwist | precalculated rate of twist \( \theta \) |
Implements Element.
|
virtual |
Calculates shear stresses from shear loading at nodes using 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().
\( \boldsymbol{\tau} = \boldsymbol{G}(\boldsymbol{Bv} + \boldsymbol{A})\)
where \( A = \begin{bmatrix} -\nu(\frac{1}{2}C_x(x^2-y^2) + C_y xy) \\ -\nu(C_x xy + \frac{1}{2}C_y (y^2 - z^2)) \end{bmatrix} \)
with \( C_x = \frac{V_x}{EIyp} \)
and \( C_y = \frac{V_y}{EIxp} \)
Implements Element.
|
virtual |
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().
\( \tau = \boldsymbol{B}\boldsymbol{v} + \epsilon_0 \)
Implements Element.
|
virtual |
Calculating the product of moment of inertia.
\( dx_e = Ac_x - Ac_{ex} \)
\( dy_e = Ac_y - Ac_{ey} \)
\( I_{xy} = \sum{E(I_{xy_e} + dx_e*dy_e*A_e)} \)
Ax | Area centre x-direction of the mesh |
Ay | Area centre y-direction of the mesh |
Implements Element.
|
virtual |
Calculates the second moment of area about the x-axis for the element.
\( dy_e = A_y - Ac_{ey} \)
\( I_x = \sum{( E(I_{x_e} + dy_e^2*A_e)) } \)
Ay | Area centre of the mesh |
Implements Element.
|
virtual |
Calculates the second moment of area about the y-axis for the element.
\( dx_e = A_x - Ac_{ex} \)
\( I_y = \sum{(E(I_{y_e} + dx_e^2*A_e))} \)
Ax | Area centre of the mesh |
Implements Element.
MatrixXd QuadrilateralElement::getN1Matrix | ( | double | xi, |
double | eta | ||
) |
Gets the \( \textbf{N}_1 matrix\).
\( \textbf{N}_1 = \begin{bmatrix} (1 - \xi)(1 - \eta) & (1 + \xi)(1 - \eta) & (1 + \xi)(1 + \eta) & (1 - \xi)(1 + \eta) \end{bmatrix} \)
xi | natural coordinate \(\xi\) |
eta | natural coordinate \(\eta\) |
|
virtual |
Gets the shear deformation factor contribution from the element, in x-direction.
\( xContribution = E_e \textbf{x}^T \int_{A_e} \textbf{N}^T \textbf{N} dA \textbf{v}_x \)
Implements Element.
|
virtual |
Gets the shear deformation factor contribution from the element, in y-direction.
\( yContribution = E_e \textbf{y}^T \int_{A_e} \textbf{N}^T \textbf{N} dA \textbf{v}_y \)
Implements Element.
void QuadrilateralElement::setExtrapolationMatrix | ( | ) |
Creates the matrix used for extrapolating results.
\( \begin{bmatrix} 1 + \frac{1}{2} \sqrt3 & -\frac{1}{2} & 1 - \frac{1}{2} \sqrt3 & -\frac{1}{2}\\ -\frac{1}{2} & 1 + \frac{1}{2} \sqrt3 & -\frac{1}{2} & 1- \frac{1}{2} \sqrt3\\ 1 - \frac{1}{2} \sqrt3 & -\frac{1}{2} & 1 + \frac{1}{2} \sqrt3 & -\frac{1}{2}\\ -\frac{1}{2} & 1 - \frac{1}{2} \sqrt3 & -\frac{1}{2} & 1 + \frac{1}{2} \sqrt3 \end{bmatrix} \)
|
virtual |
Calculates and returns the the distance in the x-direction between the integration point in the element and the element area centre.
\( x = | \boldsymbol{N} \boldsymbol{x}^T - ecx |\)
xi | area coordinate with value between -1 and 1 |
eta | area coordinate with value between -1 and 1 |
Implements Element.
|
virtual |
Calculates and returns the the distance in the y-direction between the integration point in the element and the element area centre.
\( y = | \boldsymbol{N} \boldsymbol{y}^T - ecy |\)
xi | area coordinate with value between -1 and 1 |
eta | area coordinate with value between -1 and 1 |
Implements Element.