bluemira.structural.crosssection
Objects and tools for calculating cross-sectional properties
Classes
Base class for a structural cross-section of a 1-D beam. |
|
Rectangular beam cross-section. |
|
Circular beam cross-section |
|
Circular hollow beam cross-section |
|
Generic, symmetric I-beam cross-section |
|
Analytical formulation for a polygonal cross-section. Torsional properties |
|
A cross-section object for composite structural beam. |
Functions
|
Calculate cross-sectional properties for arbitrary polygons. |
|
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:
CrossSectionRectangular 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:
CrossSectionCircular 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:
CrossSectionCircular 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:
CrossSectionGeneric, 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:
CrossSectionAnalytical 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:
CrossSectionA 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