bluemira.structural.element

Finite element class

Classes

Element

A 3-D beam element (Euler-Bernoulli type)

Functions

_k_array(→ numpy.ndarray)

3-D stiffness local member stiffness matrix, generalised for cases with

local_k_shear(→ numpy.ndarray)

3-D stiffness local member stiffness matrix, including shear deformation

local_k(→ numpy.ndarray)

3-D stiffness local member stiffness matrix, including shear deformation

Module Contents

bluemira.structural.element._k_array(k11: float, k22: float, k33: float, k44: float, k55: float, k66: float, k35: float, k26: float, k511: float, k612: float) numpy.ndarray

3-D stiffness local member stiffness matrix, generalised for cases with and without shear

Parameters:
  • elements (Local stiffness matrix non-zero)

  • k11 (float)

  • k22 (float)

  • k33 (float)

  • k44 (float)

  • k55 (float)

  • k66 (float)

  • k35 (float)

  • k26 (float)

  • k511 (float)

  • k612 (float)

Return type:

The local member stiffness matrix

Notes

The matrix is given by

\[\begin{split}\small{ \left[ \begin{array}{cccccccccccc} k11 & 0 & 0 & 0 & 0 & 0 & -k11 & 0 & 0 & 0 & 0 & 0 \\ 0 & k22 & 0 & 0 & 0 & k26 & 0 & -k22 & 0 & 0 & 0 & k26 \\ 0 & 0 & k33 & 0 & k35 & 0 & 0 & 0 & -k33 & 0 & k35 & 0 \\ 0 & 0 & 0 & k44 & 0 & 0 & 0 & 0 & 0 & -k44 & 0 & 0 \\ 0 & 0 & k35 & 0 & k55 & 0 & 0 & 0 & -k35 & 0 & k511 & 0 \\ 0 & k26 & 0 & 0 & 0 & k66 & 0 & -k26 & 0 & 0 & 0 & k612 \\ -k11 & 0 & 0 & 0 & 0 & 0 & k11 & 0 & 0 & 0 & 0 & 0 \\ 0 & -k22 & 0 & 0 & 0 & -k26 & 0 & k22 & 0 & 0 & 0 & -k26 \\ 0 & 0 & -k33 & 0 & -k35 & 0 & 0 & 0 & k33 & 0 & -k35 & 0 \\ 0 & 0 & 0 & -k44 & 0 & 0 & 0 & 0 & 0 & k44 & 0 & 0 \\ 0 & 0 & k35 & 0 & k511 & 0 & 0 & 0 & -k35 & 0 & k55 & 0 \\ 0 & k26 & 0 & 0 & 0 & k612 & 0 & -k26 & 0 & 0 & 0 & k66 \\ \end{array} \right]}\end{split}\]
bluemira.structural.element.local_k_shear(EA: float, EIyy: float, EIzz: float, ry: float, rz: float, L: float, GJ: float, A: float, A_sy: float, A_sz: float, nu: float = NU) numpy.ndarray

3-D stiffness local member stiffness matrix, including shear deformation

Parameters:
  • EA (float) – Youngs modulus x cross-sectional area

  • EIyy (float) – Youngs modulus x second moment of area about the element y-axis

  • EIzz (float) – Youngs modulus x second moment of area about the element z-axis

  • L (float) – The length of the beam

  • GJ (float) – The rigidity modulus x torsion constant

  • A_sy (float) – The shear area in the y-plane

  • A_sz (float) – The shear area in the z-plane

  • nu (float) – Poisson ratio

  • ry (float)

  • rz (float)

  • A (float)

Return type:

The local member stiffness matrix

Notes

The shear deformation parameters are calculated by

\[ \begin{align}\begin{aligned}\phi_{y} = 24 (1 + \nu) \left(\frac{A}{A_{sy}}\right)~ \left(\frac{r_{z}}{L}\right)^2\\\phi_{z} = 24 (1 + \nu) \left(\frac{A}{A_{sz}}\right)~ \left(\frac{r_{y}}{L}\right)^2\end{aligned}\end{align} \]

The equations for different k-values are

\[\begin{split}k_{11} = \frac{EA}{L} \\\end{split}\]
\[\begin{split}k_{22} = \frac{12 EI_{zz}}{L^3 (1 + \phi_{y})} \\\end{split}\]
\[\begin{split}k_{33} = \frac{12 EI_{yy}}{L^3 (1 + \phi_{z})} \\\end{split}\]
\[\begin{split}k_{44} = \frac{GJ}{L} \\\end{split}\]
\[\begin{split}k_{55} = \frac{(4 + \phi_{z}) EI_{yy}}{L (1 + \phi_{z})} \\\end{split}\]
\[\begin{split}k_{66} = \frac{(4 + \phi_{y}) EI_{zz}}{L (1 + \phi_{y})} \\\end{split}\]
\[\begin{split}k_{35} = \frac{-6 EI_{yy}}{L^2 (1 + \phi_{z})} \\\end{split}\]
\[\begin{split}k_{26} = \frac{6 EI_{zz}}{L^2 (1 + \phi_{y})} \\\end{split}\]
\[\begin{split}k_{511} = \frac{(2 - \phi_{z}) EI_{yy}}{L (1 + \phi_{z})} \\\end{split}\]
\[\begin{split}k_{612} = \frac{(2 - \phi_{y}) EI_{zz}}{L (1 + \phi_{y})} \\\end{split}\]
bluemira.structural.element.local_k(EA: float, EIyy: float, EIzz: float, L: float, GJ: float) numpy.ndarray

3-D stiffness local member stiffness matrix, including shear deformation

Parameters:
  • EA (float) – Youngs modulus x cross-sectional area

  • EIyy (float) – Youngs modulus x second moment of area about the element y-axis

  • EIzz (float) – Youngs modulus x second moment of area about the element z-axis

  • L (float) – The length of the beam

  • GJ (float) – The rigidity modulus x torsion constant

Return type:

The local member stiffness matrix

Notes

The equations for different k-values are

\[\begin{split}k_{11} = \frac{EA}{L} \\\end{split}\]
\[\begin{split}k_{22} = \frac{12 EI_{zz}}{L^3} \\\end{split}\]
\[\begin{split}k_{33} = \frac{12 EI_{yy}}{L^3} \\\end{split}\]
\[\begin{split}k_{44} = \frac{GJ}{L} \\\end{split}\]
\[\begin{split}k_{55} = \frac{4 EI_{yy}}{L} \\\end{split}\]
\[\begin{split}k_{66} = \frac{4 EI_{zz}}{L} \\\end{split}\]
\[\begin{split}k_{35} = \frac{-6 EI_{yy}}{L^2} \\\end{split}\]
\[\begin{split}k_{26} = \frac{6 EI_{zz}}{L^2} \\\end{split}\]
\[\begin{split}k_{511} = \frac{2 EI_{yy}}{L} \\\end{split}\]
\[\begin{split}k_{612} = \frac{2 EI_{zz}}{L} \\\end{split}\]
class bluemira.structural.element.Element(node_1: bluemira.structural.node.Node, node_2: bluemira.structural.node.Node, id_number: int, cross_section: bluemira.structural.crosssection.CrossSection, material: matproplib.material.Material | None = None, op_cond: matproplib.conditions.OperationalConditions | None = None)

A 3-D beam element (Euler-Bernoulli type)

Parameters:
HERMITE_POLYS
__slots__ = ('_cross_section', '_k_matrix', '_k_matrix_glob', '_lambda_matrix', '_length', '_material',...
node_1
node_2
id_number
loads = []
shapes = None
stresses = None
max_stress = None
safety_factor = None
op_cond = None
_material = None
_cross_section
_length = None
_weight = None
_k_matrix = None
_lambda_matrix = None
_k_matrix_glob = None
_s_functs = None
static _process_properties(cross_section, material: matproplib.material.Material | None = None, op_cond: matproplib.conditions.OperationalConditions | None = None)

Handles cross-sectional and material properties, including if a composite material cross-section is specified.

Parameters:
  • material (matproplib.material.Material | None)

  • op_cond (matproplib.conditions.OperationalConditions | None)

property length: float

Element length

Notes

The Euclidean distance between Nodes 1 and 2
\[d = \sqrt {(x_2 - x_1)^2 + (y_2 - y_1)^2 + (z_2 - z_1)^2}\]
Return type:

float

property weight: float

Element self-weight force per unit length

\[w = g A \rho\]
where:
  • g is the gravitational acceleration (m/s²),

  • A is the cross-sectional area of the element (m²),

  • rho is the material density (kg/m³).

Return type:

float

property mid_point: numpy.ndarray

The mid point of the Element

Returns:

vector – The [x, y, z] vector of the midpoint

Return type:

np.array(3)

Notes

The midpoint coordinates are given by:

\[M_x = \frac{x_1 + x_2}{2}, \quad M_y = \frac{y_1 + y_2}{2}, \quad M_z = \frac{z_1 + z_2}{2}\]
property space_vector

Spatial vector of the Element

Returns:

vector – The [dx, dy, dz] vector of the Element

Return type:

np.array(3)

Notes

The vector components are given by:

\[v_x = x_2 - x_1, \quad v_y = y_2 - y_1, \quad v_z = z_2 - z_1\]
property displacements: numpy.ndarray

Element global displacement vector at nodes

Return type:

numpy.ndarray

property max_displacement: float

Maximum element absolute displacement values

Return type:

The maximum absolute deflection distance of the two Nodes

property k_matrix: numpy.ndarray

Element stiffness matrix in local coordinates

Return type:

numpy.ndarray

property k_matrix_glob: numpy.ndarray

Element stiffness matrix in global coordinates

Return type:

numpy.ndarray

property lambda_matrix: numpy.ndarray

Transformation (direction cosine) matrix

Raises:

StructuralError – Nodes are coincident

Return type:

numpy.ndarray

Notes

This matrix is cached but involves properties that may be externally modified (e.g. by moving a node). Be careful to reset _lambda_matrix to None if you are doing this, so that it gets recalculated upon call.

add_load(load: bluemira.structural.loads.Load | dict[str, float | str])

Applies a load to the Element object.

Parameters:

load (bluemira.structural.loads.Load | dict[str, float | str]) – The dictionary of load values (in local coordinates)

clear_loads()

Clears all loads applied to the Element

clear_cache()

Clears all cached properties and matrices for the Element. Use if an Element’s geometry has been modified.

u_vector() numpy.ndarray

Element local displacement vector

Return type:

numpy.ndarray

p_vector() numpy.ndarray

The local force vector of the element

Return type:

numpy.ndarray

p_vector_glob() numpy.ndarray

The global force vector of the element

Return type:

numpy.ndarray

equivalent_node_forces() numpy.ndarray

Equivalent concentrated forces in global coordinates

Return type:

numpy.ndarray

_equivalent_node_forces() numpy.ndarray

Element local nodal force vector

Equivalent concentrated forces in local coordinates

Return type:

numpy.ndarray

property _shape_functions
interpolate(scale: float)

Interpolates the displacement of the beam with Hermite polynomial shape functions to obtain inter-node displacement and stress

Parameters:

scale (float) – The scale at which to calculate the interpolated displacements

calculate_stress(u, m_matrix)

Calculates the stresses in the Element, using Hermite polynomials for interpolation between the Nodes

calculate_shape(u, d, _m, _v, scale)

Calculates the interpolated shape of the Element