Public Member Functions | Public Attributes | List of all members
TriangularElement Class Referenceabstract

Class for implementation of triangular elements. More...

#include <TriangularElement.h>

Inheritance diagram for TriangularElement:
Element T3Element T6Element

Public Member Functions

virtual MatrixXd getNMatrix (double zeta1, double zeta2, double zeta3)=0
 
virtual MatrixXd getBMatrix (double zeta1, double zeta2, double zeta3)=0
 
virtual void calculateStiffnessMatrix ()=0
 
virtual void calculateElementLoadTorsion ()=0
 
virtual void calculateElementLoadShearX ()=0
 
virtual void calculateElementLoadShearY ()=0
 
virtual double calculateDeltaGIt ()=0
 
virtual void computeTauTorsion (double rateOfTwist)=0
 
virtual void computeTauShear (double Cx, double Cy)=0
 
MatrixXd getNxMatrix ()
 Returns the first row of the B matrix, i.e. N differentiated with respect to x.
 
MatrixXd getNyMatrix ()
 Returns the second row of the B matrix, i.e. N differentiated with respect to y.
 
void calculateInitialStrain ()
 Calculates the initial strain of the element. More...
 
MatrixXd getN1Matrix (double zeta1, double zeta2, double zeta3)
 Gets the \( \textbf{N}1 \) matrix. More...
 
double xOfZeta (double zeta1, double zeta2)
 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 zeta1, double zeta2)
 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 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 calculateTorsionShearCenter ()
 Calculates the shear center for the element, based on torsional analysis. 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...
 
- Public Member Functions inherited from Element
 Element ()
 Constructor.
 
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

const double zeta [3][3] = { { 0.5, 0.5, 0.0 },{ 0.0, 0.5, 0.5 },{ 0.5, 0.0, 0.5 } }
 Zeta values for integration ponts, used for computing values at integration points.
 
double zetaNode [3][3] = { { 1., 0., 0. },{ 0., 1., 0. },{ 0., 0., 1. } }
 Zeta values for corner nodes, used for computing values at nodes.
 
const double weight [3] = { 1.0 / 3, 1.0 / 3, 1.0 / 3 }
 Weighting of each integration point.
 
- Public Attributes inherited from Element
std::vector< Nodenodes
 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.
 

Detailed Description

Class for implementation of triangular elements.

Member Function Documentation

void TriangularElement::calculateArea ( )
virtual

Calculates the area of the element.

\( A = \frac{1}{2} |J| \)

Implements Element.

void TriangularElement::calculateAreaCentre ( )
virtual

Calculates the area centre of the element.

\( ecx = \frac{x1 + x2 + x3}{3} \)
\( ecy = \frac{y1 + y2 + y3}{3} \)

Implements Element.

void TriangularElement::calculateElementLoadComposite ( double  C_x,
double  C_y,
double  rateOfTwist 
)
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} \)

Parameters
C_xshear load factor in x-direction
C_yshear load factor in y-direction
rateOfTwistprecalculated rate of twist \( \theta \)

Implements Element.

void TriangularElement::calculateInitialStrain ( )

Calculates the initial strain of the element.

\( \textbf{e}_0 = \begin{bmatrix} \textbf{0} & -\textbf{N}\\ \textbf{N} & \textbf{0} \end{bmatrix} \begin{bmatrix} \textbf{x}\\ \textbf{y} \end{bmatrix} \)

void TriangularElement::calculateTorsionShearCenter ( )
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 TriangularElement::computeTauComposite ( double  C_x,
double  C_y,
double  rateOfTwist 
)
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,e} = \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} \)

Parameters
C_xshear load factor in x-direction
C_yshear load factor in y-direction
rateOfTwistprecalculated rate of twist \( \theta \)

Implements Element.

double TriangularElement::getBendingStiffnessProduct ( double  Ax,
double  Ay 
)
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)} \)

Parameters
AxArea centre x-direction of the mesh
AyArea centre y-direction of the mesh
Returns
element contribution to bending stiffness product \(EI_{xy}\)

Implements Element.

double TriangularElement::getBendingStiffnessX ( double  Ay)
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)) } \)

Parameters
AyArea centre of the mesh
Returns
element contribution to bending stiffness product \(EI_{x}\)

Implements Element.

double TriangularElement::getBendingStiffnessY ( double  Ax)
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))} \)

Parameters
AxArea centre of the mesh
Returns
element contribution to bending stiffness product \(EI_{y}\)

Implements Element.

MatrixXd TriangularElement::getN1Matrix ( double  zeta1,
double  zeta2,
double  zeta3 
)

Gets the \( \textbf{N}1 \) matrix.

The \( \textbf{N}1 \) matrix contains the linear shape functions used to interpolate x and y between the corner coordinates

Parameters
zeta1area coordinate with value between -1 and 1
zeta2area coordinate with value between -1 and 1
zeta3area coordinate with value between -1 and 1
Returns
linear shape funcitons \( \textbf{N}1 \)
double TriangularElement::getShearFactorContributionX ( )
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 \)

Returns
shear deformation factor contribution in x-direction from element

Implements Element.

double TriangularElement::getShearFactorContributionY ( )
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 \)

Returns
shear deformation factor contribution in y-direction from element

Implements Element.

double TriangularElement::xOfZeta ( double  zeta1,
double  zeta2 
)
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} - ecx | \)

Parameters
zeta1area coordinate with value between -1 and 1
zeta2area coordinate with value between -1 and 1
Returns
distance in x-direction for integration point defiend by \(\zeta_1\) and \(\zeta_2\)

Implements Element.

double TriangularElement::yOfZeta ( double  zeta1,
double  zeta2 
)
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} - ecy | \)

Parameters
zeta1area coordinate with value between -1 and 1
zeta2area coordinate with value between -1 and 1
Returns
distance in y-direction for integration point defiend by \(\zeta_1\) and \(\zeta_2\)

Implements Element.


The documentation for this class was generated from the following files: