bluemira.structural.crosssection

Objects and tools for calculating cross-sectional properties

Classes

CrossSection

Base class for a structural cross-section of a 1-D beam.

RectangularBeam

Rectangular beam cross-section.

CircularBeam

Circular beam cross-section

CircularHollowBeam

Circular hollow beam cross-section

IBeam

Generic, symmetric I-beam cross-section

AnalyticalCrossSection

Analytical formulation for a polygonal cross-section. Torsional properties

AnalyticalCompositeCrossSection

A cross-section object for composite structural beam.

Functions

_calculate_properties(y, z)

Calculate cross-sectional properties for arbitrary polygons.

_transform_properties(izz, iyy, izy, alpha)

Transform second moments of area for a rotation about the centroid.

Module Contents

bluemira.structural.crosssection._calculate_properties(y, z)

Calculate cross-sectional properties for arbitrary polygons.

bluemira.structural.crosssection._transform_properties(izz, iyy, izy, alpha)

Transform second moments of area for a rotation about the centroid.

\(I_{uu}=(I_{xx}+I_{yy})/2+[(I_{xx}-I_{yy})/2]cos(2\alpha)-I_{xy}sin(2\alpha)\)

\(I_{vv}=(I_{xx}+I_{yy})/2-[(I_{xx}-I_{yy})/2]cos(2\alpha)+I_{xy}sin(2\alpha)\)

\(I_{uv}=[(I_{xx}-I_{yy})/2]sin(2\alpha)+I_{xy}cos(2\alpha)\)

class bluemira.structural.crosssection.CrossSection

Base class for a structural cross-section of a 1-D beam.

__slots__ = ('area', 'area_sy', 'area_sz', 'centroid_geom', 'ei_yy', 'ei_zy', 'ei_zz', 'geometry', 'i_yy',...
abstract make_geometry(*args, **kwargs)

Make a BluemiraFace object for the CrossSection.

plot(ax=None)

Plot the CrossSection

rotate(angle: float)

Rotate the CrossSection about its centroid.

Parameters:

angle (float) – The angle to rotate the CrossSection by [degrees]

translate(vector: numpy.ndarray)

Translate the CrossSection. Should not affect its properties. Note that CrossSections are defined in the y-z plane.

Parameters:

vector (numpy.ndarray) – The translation vector.

property centroid

Centroid of the cross-section geometry

class bluemira.structural.crosssection.RectangularBeam(width: float, height: float)

Bases: CrossSection

Inheritance diagram of bluemira.structural.crosssection.RectangularBeam

Rectangular beam cross-section.

Parameters:
  • width (float) – The width of the beam

  • height (float) – The height of the beam

__slots__ = ()
area
i_zz
i_yy
i_zy = 0.0
j
ry
rz
qyy = 0
qzz = 0
static calc_torsion(width: float, height: float) float

Estimate the torsional constant of the rectangular beam.

Notes

Young, W and Budynas, R: Roark’s Formulas for Stress and Strain

\(J\approx ab^3(\dfrac{16}{3}-3.36\dfrac{b}{a}(1-\dfrac{b^4}{12a^4}))\)

Parameters:
  • width (float)

  • height (float)

Return type:

float

make_geometry(width: float, height: float)

Make a BluemiraFace for the RectangularBeam cross-section.

Parameters:
  • width (float)

  • height (float)

class bluemira.structural.crosssection.CircularBeam(radius: float, n_discr: int = 30)

Bases: CrossSection

Inheritance diagram of bluemira.structural.crosssection.CircularBeam

Circular beam cross-section

Parameters:
  • radius (float) – The radius of the circular cross-section

  • n_discr (int) – Number of points to discretise to when plotting

__slots__ = ()
area
i_zz
i_yy
i_zy = 0.0
j
ry
rz
qyy = 0
qzz = 0
geometry
class bluemira.structural.crosssection.CircularHollowBeam(r_inner: float, r_outer: float, n_discr: int = 30)

Bases: CrossSection

Inheritance diagram of bluemira.structural.crosssection.CircularHollowBeam

Circular hollow beam cross-section

Parameters:
  • r_inner (float) – The inner radius of the hollow circular cross-section

  • r_outer (float) – The outer radius of the hollow circular cross-section

  • n_discr (int) – Number of points to discretise to when plotting

__slots__ = ()
area
i_zz
i_yy
i_zy = 0.0
j
ry
rz
qyy = 0
qzz = 0
geometry
class bluemira.structural.crosssection.IBeam(base: float, depth: float, flange: float, web: float)

Bases: CrossSection

Inheritance diagram of bluemira.structural.crosssection.IBeam

Generic, symmetric I-beam cross-section

Parameters:
  • base (float) – I-beam base width

  • depth (float) – I-beam depth

  • web (float) – I-beam web thickness

  • flange (float) – I-beam flange thickness

__slots__ = ()
area
i_yy
i_zz
i_zy = 0.0
j
ry
rz
qyy = 0
qzz = 0
static check_dimensions(base: float, depth: float, flange: float, web: float)

Edge case eradication

Raises:

StructuralError – Inputs not consistent with I-Beam

Parameters:
  • base (float)

  • depth (float)

  • flange (float)

  • web (float)

make_geometry(base: float, depth: float, flange: float, web: float)

Make a BluemiraFace for the IBeam cross-section.

Parameters:
  • base (float)

  • depth (float)

  • flange (float)

  • web (float)

class bluemira.structural.crosssection.AnalyticalCrossSection(geometry: bluemira.geometry.face.BluemiraFace, n_discr: int = 100, j_opt_var: float = 14.123)

Bases: CrossSection

Inheritance diagram of bluemira.structural.crosssection.AnalyticalCrossSection

Analytical formulation for a polygonal cross-section. Torsional properties less accurate. Faster as based on analytical calculation of cross-sectional properties, as opposed to FE.

Parameters:
  • geometry (bluemira.geometry.face.BluemiraFace) – The geometry for the polygonal cross-section

  • n_discr (int) – Number of points to discretise to when plotting

  • j_opt_var (float) – Torsional constant estimation parameter from optimisation

Notes

All cross-section properties calculated exactly (within reason), except for the torsional constant J, which is approximated using St Venant’s approach. The j_opt_var for fitting the J value must be determined based on suitable finite element analyses.

If the geometry has any holes in it, they will be treated as holes.

__slots__ = ()
geometry
centroid_geom
i_yy
i_zz
i_zy
qyy
qzz = 0.0
ry
rz
j
class bluemira.structural.crosssection.AnalyticalCompositeCrossSection(geometry: bluemira.geometry.face.BluemiraFace, materials: list[matproplib.material.Material], op_cond: matproplib.conditions.OperationalConditions)

Bases: CrossSection

Inheritance diagram of bluemira.structural.crosssection.AnalyticalCompositeCrossSection

A cross-section object for composite structural beam.

When making a composite cross-section, we need to add material properties in order to effectively weight the cross-sectional properties.

Cross-sectional properties are calculated analytical relations, and are therefore much faster than an FE approach. For simple cross-sections, the properties are all identical except for J, where a fitting on similar shapes must be carried out, following St. Venant’s method.

This somewhat modifies the API when getting properties…

Parameters:
  • geometry (bluemira.geometry.face.BluemiraFace) – The ordered list of geometries making up the cross-section

  • materials (list[matproplib.material.Material]) – The ordered list of Materials to use for the geometry

  • op_cond (matproplib.conditions.OperationalConditions)

__slots__ = ('ea', 'gj', 'nu', 'rho')
geometry
area
ea
ei_yy
ei_zz
ei_zy
nu
ry
rz
gj
rho