Creating Section Geometries from the Section Library

In order to make your life easier, there are a number of built-in functions that generate typical structural cross-sections, resulting in Geometry objects. These typical cross-sections reside in the sectionproperties.pre.library module.

Primitive Sections Library

Rectangular Section

sectionproperties.pre.library.primitive_sections.rectangular_section(b: float, d: float, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs a rectangular section with the bottom left corner at the origin (0, 0), with depth d and width b.

Parameters
  • d (float) – Depth (y) of the rectangle

  • b (float) – Width (x) of the rectangle

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

The following example creates a rectangular cross-section with a depth of 100 and width of 50, and generates a mesh with a maximum triangular area of 5:

from sectionproperties.pre.library.primitive_sections import rectangular_section

geometry = rectangular_section(d=100, b=50)
geometry.create_mesh(mesh_sizes=[5])
../_images/rectangle_geometry.png

Rectangular section geometry.

../_images/rectangle_mesh.png

Mesh generated from the above geometry.

Circular Section

sectionproperties.pre.library.primitive_sections.circular_section(d: float, n: int, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs a solid circle centered at the origin (0, 0) with diameter d and using n points to construct the circle.

Parameters
  • d (float) – Diameter of the circle

  • n (int) – Number of points discretising the circle

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

The following example creates a circular geometry with a diameter of 50 with 64 points, and generates a mesh with a maximum triangular area of 2.5:

from sectionproperties.pre.library.primitive_sections import circular_section

geometry = circular_section(d=50, n=64)
geometry.create_mesh(mesh_sizes=[2.5])
../_images/circle_geometry.png

Circular section geometry.

../_images/circle_mesh.png

Mesh generated from the above geometry.

Circular Section By Area

sectionproperties.pre.library.primitive_sections.circular_section_by_area(area: float, n: int, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs a solid circle centered at the origin (0, 0) defined by its area, using n points to construct the circle.

Parameters
  • area (float) – Area of the circle

  • n (int) – Number of points discretising the circle

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

The following example creates a circular geometry with an area of 200 with 32 points, and generates a mesh with a maximum triangular area of 5:

from sectionproperties.pre.library.primitive_sections import circular_section_by_area

geometry = circular_section_by_area(area=310, n=32)
geometry.create_mesh(mesh_sizes=[5])
../_images/circle_area_geometry.png

Circular section by area geometry.

../_images/circle_area_mesh.png

Mesh generated from the above geometry.

Elliptical Section

sectionproperties.pre.library.primitive_sections.elliptical_section(d_y: float, d_x: float, n: int, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs a solid ellipse centered at the origin (0, 0) with vertical diameter d_y and horizontal diameter d_x, using n points to construct the ellipse.

Parameters
  • d_y (float) – Diameter of the ellipse in the y-dimension

  • d_x (float) – Diameter of the ellipse in the x-dimension

  • n (int) – Number of points discretising the ellipse

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

The following example creates an elliptical cross-section with a vertical diameter of 25 and horizontal diameter of 50, with 40 points, and generates a mesh with a maximum triangular area of 1.0:

from sectionproperties.pre.library.primitive_sections import elliptical_section

geometry = elliptical_section(d_y=25, d_x=50, n=40)
geometry.create_mesh(mesh_sizes=[1.0])
../_images/ellipse_geometry.png

Elliptical section geometry.

../_images/ellipse_mesh.png

Mesh generated from the above geometry.

Triangular Section

sectionproperties.pre.library.primitive_sections.triangular_section(b: float, h: float, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs a right angled triangle with points (0, 0), (b, 0), (0, h).

Parameters
  • b (float) – Base length of triangle

  • h (float) – Height of triangle

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

The following example creates a triangular cross-section with a base width of 10 and height of 10, and generates a mesh with a maximum triangular area of 0.5:

from sectionproperties.pre.library.primitive_sections import triangular_section

geometry = triangular_section(b=10, h=10)
geometry.create_mesh(mesh_sizes=[0.5])
../_images/triangle_geometry.png

Triangular section geometry.

../_images/triangle_mesh.png

Mesh generated from the above geometry.

Triangular Radius Section

sectionproperties.pre.library.primitive_sections.triangular_radius_section(b: float, n_r: float, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs a right angled isosceles triangle with points (0, 0), (b, 0), (0, h) and a concave radius on the hypotenuse.

Parameters
  • b (float) – Base length of triangle

  • n_r (int) – Number of points discretising the radius

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

The following example creates a triangular radius cross-section with a base width of 6, using n_r points to construct the radius, and generates a mesh with a maximum triangular area of 0.5:

from sectionproperties.pre.library.primitive_sections import triangular_radius_section

geometry = triangular_radius_section(b=6, n_r=16)
geometry.create_mesh(mesh_sizes=[0.5])
../_images/triangle_radius_geometry.png

Triangular radius section geometry.

../_images/triangle_radius_mesh.png

Mesh generated from the above geometry.

Cruciform Section

sectionproperties.pre.library.primitive_sections.cruciform_section(d: float, b: float, t: float, r: float, n_r: int, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs a cruciform section centered at the origin (0, 0), with depth d, width b, thickness t and root radius r, using n_r points to construct the root radius.

Parameters
  • d (float) – Depth of the cruciform section

  • b (float) – Width of the cruciform section

  • t (float) – Thickness of the cruciform section

  • r (float) – Root radius of the cruciform section

  • n_r (int) – Number of points discretising the root radius

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

The following example creates a cruciform section with a depth of 250, a width of 175, a thickness of 12 and a root radius of 16, using 16 points to discretise the radius. A mesh is generated with a maximum triangular area of 5.0:

from sectionproperties.pre.library.primitive_sections import cruciform_section

geometry = cruciform_section(d=250, b=175, t=12, r=16, n_r=16)
geometry.create_mesh(mesh_sizes=[5.0])
../_images/cruciform_geometry.png

Cruciform section geometry.

../_images/cruciform_mesh.png

Mesh generated from the above geometry.

Steel Sections Library

Circular Hollow Section (CHS)

sectionproperties.pre.library.steel_sections.circular_hollow_section(d: float, t: float, n: int, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs a circular hollow section (CHS) centered at the origin (0, 0), with diameter d and thickness t, using n points to construct the inner and outer circles.

Parameters
  • d (float) – Outer diameter of the CHS

  • t (float) – Thickness of the CHS

  • n (int) – Number of points discretising the inner and outer circles

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

The following example creates a CHS discretised with 64 points, with a diameter of 48 and thickness of 3.2, and generates a mesh with a maximum triangular area of 1.0:

from sectionproperties.pre.library.steel_sections import circular_hollow_section

geometry = circular_hollow_section(d=48, t=3.2, n=64)
geometry.create_mesh(mesh_sizes=[1.0])
../_images/chs_geometry.png

CHS geometry.

../_images/chs_mesh.png

Mesh generated from the above geometry.

Elliptical Hollow Section (EHS)

sectionproperties.pre.library.steel_sections.elliptical_hollow_section(d_y: float, d_x: float, t: float, n: int, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs an elliptical hollow section (EHS) centered at the origin (0, 0), with outer vertical diameter d_y, outer horizontal diameter d_x, and thickness t, using n points to construct the inner and outer ellipses.

Parameters
  • d_y (float) – Diameter of the ellipse in the y-dimension

  • d_x (float) – Diameter of the ellipse in the x-dimension

  • t (float) – Thickness of the EHS

  • n (int) – Number of points discretising the inner and outer ellipses

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

The following example creates a EHS discretised with 30 points, with a outer vertical diameter of 25, outer horizontal diameter of 50, and thickness of 2.0, and generates a mesh with a maximum triangular area of 0.5:

from sectionproperties.pre.library.steel_sections import elliptical_hollow_section

geometry = elliptical_hollow_section(d_y=25, d_x=50, t=2.0, n=64)
geometry.create_mesh(mesh_sizes=[0.5])
../_images/ehs_geometry.png

EHS geometry.

../_images/ehs_mesh.png

Mesh generated from the above geometry.

Rectangular Hollow Section (RHS)

sectionproperties.pre.library.steel_sections.rectangular_hollow_section(b: float, d: float, t: float, r_out: float, n_r: int, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs a rectangular hollow section (RHS) centered at (b/2, d/2), with depth d, width b, thickness t and outer radius r_out, using n_r points to construct the inner and outer radii. If the outer radius is less than the thickness of the RHS, the inner radius is set to zero.

Parameters
  • d (float) – Depth of the RHS

  • b (float) – Width of the RHS

  • t (float) – Thickness of the RHS

  • r_out (float) – Outer radius of the RHS

  • n_r (int) – Number of points discretising the inner and outer radii

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

The following example creates an RHS with a depth of 100, a width of 50, a thickness of 6 and an outer radius of 9, using 8 points to discretise the inner and outer radii. A mesh is generated with a maximum triangular area of 2.0:

from sectionproperties.pre.library.steel_sections import rectangular_hollow_section

geometry = rectangular_hollow_section(d=100, b=50, t=6, r_out=9, n_r=8)
geometry.create_mesh(mesh_sizes=[2.0])
../_images/rhs_geometry.png

RHS geometry.

../_images/rhs_mesh.png

Mesh generated from the above geometry.

Polygon Hollow Section

sectionproperties.pre.library.steel_sections.polygon_hollow_section(d: float, t: float, n_sides: int, r_in: float = 0, n_r: int = 1, rot: float = 0, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs a regular hollow polygon section centered at (0, 0), with a pitch circle diameter of bounding polygon d, thickness t, number of sides n_sides and an optional inner radius r_in, using n_r points to construct the inner and outer radii (if radii is specified).

Parameters
  • d (float) – Pitch circle diameter of the outer bounding polygon (i.e. diameter of circle that passes through all vertices of the outer polygon)

  • t (float) – Thickness of the polygon section wall

  • r_in (float) – Inner radius of the polygon corners. By default, if not specified, a polygon with no corner radii is generated.

  • n_r (int) – Number of points discretising the inner and outer radii, ignored if no inner radii is specified

  • rot (float) – Initial counterclockwise rotation in degrees. By default bottom face is aligned with x axis.

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

Raises

Exception – Number of sides in polygon must be greater than or equal to 3

The following example creates an Octagonal section (8 sides) with a diameter of 200, a thickness of 6 and an inner radius of 20, using 12 points to discretise the inner and outer radii. A mesh is generated with a maximum triangular area of 5:

from sectionproperties.pre.library.steel_sections import polygon_hollow_section

geometry = polygon_hollow_section(d=200, t=6, n_sides=8, r_in=20, n_r=12)
geometry.create_mesh(mesh_sizes=[5])
../_images/polygon_geometry.png

Octagonal section geometry.

../_images/polygon_mesh.png

Mesh generated from the above geometry.

I Section

sectionproperties.pre.library.steel_sections.i_section(d: float, b: float, t_f: float, t_w: float, r: float, n_r: int, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs an I Section centered at (b/2, d/2), with depth d, width b, flange thickness t_f, web thickness t_w, and root radius r, using n_r points to construct the root radius.

Parameters
  • d (float) – Depth of the I Section

  • b (float) – Width of the I Section

  • t_f (float) – Flange thickness of the I Section

  • t_w (float) – Web thickness of the I Section

  • r (float) – Root radius of the I Section

  • n_r (int) – Number of points discretising the root radius

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

The following example creates an I Section with a depth of 203, a width of 133, a flange thickness of 7.8, a web thickness of 5.8 and a root radius of 8.9, using 16 points to discretise the root radius. A mesh is generated with a maximum triangular area of 3.0:

from sectionproperties.pre.library.steel_sections import i_section

geometry = i_section(d=203, b=133, t_f=7.8, t_w=5.8, r=8.9, n_r=16)
geometry.create_mesh(mesh_sizes=[3.0])
../_images/isection_geometry.png

I Section geometry.

../_images/isection_mesh.png

Mesh generated from the above geometry.

Monosymmetric I Section

sectionproperties.pre.library.steel_sections.mono_i_section(d: float, b_t: float, b_b: float, t_ft: float, t_fb: float, t_w: float, r: float, n_r: int, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs a monosymmetric I Section centered at (max(b_t, b_b)/2, d/2), with depth d, top flange width b_t, bottom flange width b_b, top flange thickness t_ft, top flange thickness t_fb, web thickness t_w, and root radius r, using n_r points to construct the root radius.

Parameters
  • d (float) – Depth of the I Section

  • b_t (float) – Top flange width

  • b_b (float) – Bottom flange width

  • t_ft (float) – Top flange thickness of the I Section

  • t_fb (float) – Bottom flange thickness of the I Section

  • t_w (float) – Web thickness of the I Section

  • r (float) – Root radius of the I Section

  • n_r (int) – Number of points discretising the root radius

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

The following example creates a monosymmetric I Section with a depth of 200, a top flange width of 50, a top flange thickness of 12, a bottom flange width of 130, a bottom flange thickness of 8, a web thickness of 6 and a root radius of 8, using 16 points to discretise the root radius. A mesh is generated with a maximum triangular area of 3.0:

from sectionproperties.pre.library.steel_sections import mono_i_section

geometry = mono_i_section(
    d=200, b_t=50, b_b=130, t_ft=12, t_fb=8, t_w=6, r=8, n_r=16
)
geometry.create_mesh(mesh_sizes=[3.0])
../_images/monoisection_geometry.png

I Section geometry.

../_images/monoisection_mesh.png

Mesh generated from the above geometry.

Tapered Flange I Section

sectionproperties.pre.library.steel_sections.tapered_flange_i_section(d: float, b: float, t_f: float, t_w: float, r_r: float, r_f: float, alpha: float, n_r: int, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs a Tapered Flange I Section centered at (b/2, d/2), with depth d, width b, mid-flange thickness t_f, web thickness t_w, root radius r_r, flange radius r_f and flange angle alpha, using n_r points to construct the radii.

Parameters
  • d (float) – Depth of the Tapered Flange I Section

  • b (float) – Width of the Tapered Flange I Section

  • t_f (float) – Mid-flange thickness of the Tapered Flange I Section (measured at the point equidistant from the face of the web to the edge of the flange)

  • t_w (float) – Web thickness of the Tapered Flange I Section

  • r_r (float) – Root radius of the Tapered Flange I Section

  • r_f (float) – Flange radius of the Tapered Flange I Section

  • alpha (float) – Flange angle of the Tapered Flange I Section (degrees)

  • n_r (int) – Number of points discretising the radii

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

The following example creates a Tapered Flange I Section with a depth of 588, a width of 191, a mid-flange thickness of 27.2, a web thickness of 15.2, a root radius of 17.8, a flange radius of 8.9 and a flange angle of 8°, using 16 points to discretise the radii. A mesh is generated with a maximum triangular area of 20.0:

from sectionproperties.pre.library.steel_sections import tapered_flange_i_section

geometry = tapered_flange_i_section(
    d=588, b=191, t_f=27.2, t_w=15.2, r_r=17.8, r_f=8.9, alpha=8, n_r=16
)
geometry.create_mesh(mesh_sizes=[20.0])
../_images/taperedisection_geometry.png

I Section geometry.

../_images/taperedisection_mesh.png

Mesh generated from the above geometry.

Parallel Flange Channel (PFC) Section

sectionproperties.pre.library.steel_sections.channel_section(d: float, b: float, t_f: float, t_w: float, r: float, n_r: int, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs a parallel-flange channel (PFC) section with the bottom left corner at the origin (0, 0), with depth d, width b, flange thickness t_f, web thickness t_w and root radius r, using n_r points to construct the root radius.

Parameters
  • d (float) – Depth of the PFC section

  • b (float) – Width of the PFC section

  • t_f (float) – Flange thickness of the PFC section

  • t_w (float) – Web thickness of the PFC section

  • r (float) – Root radius of the PFC section

  • n_r (int) – Number of points discretising the root radius

  • shift (list[float, float]) – Vector that shifts the cross-section by (x, y)

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

The following example creates a PFC section with a depth of 250, a width of 90, a flange thickness of 15, a web thickness of 8 and a root radius of 12, using 8 points to discretise the root radius. A mesh is generated with a maximum triangular area of 5.0:

from sectionproperties.pre.library.steel_sections import channel_section

geometry = channel_section(d=250, b=90, t_f=15, t_w=8, r=12, n_r=8)
geometry.create_mesh(mesh_sizes=[5.0])
../_images/pfc_geometry.png

PFC geometry.

../_images/pfc_mesh.png

Mesh generated from the above geometry.

Tapered Flange Channel Section

sectionproperties.pre.library.steel_sections.tapered_flange_channel(d: float, b: float, t_f: float, t_w: float, r_r: float, r_f: float, alpha: float, n_r: int, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs a Tapered Flange Channel section with the bottom left corner at the origin (0, 0), with depth d, width b, mid-flange thickness t_f, web thickness t_w, root radius r_r, flange radius r_f and flange angle alpha, using n_r points to construct the radii.

Parameters
  • d (float) – Depth of the Tapered Flange Channel section

  • b (float) – Width of the Tapered Flange Channel section

  • t_f (float) – Mid-flange thickness of the Tapered Flange Channel section (measured at the point equidistant from the face of the web to the edge of the flange)

  • t_w (float) – Web thickness of the Tapered Flange Channel section

  • r_r (float) – Root radius of the Tapered Flange Channel section

  • r_f (float) – Flange radius of the Tapered Flange Channel section

  • alpha (float) – Flange angle of the Tapered Flange Channel section (degrees)

  • n_r (int) – Number of points discretising the radii

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

The following example creates a Tapered Flange Channel section with a depth of 10, a width of 3.5, a mid-flange thickness of 0.575, a web thickness of 0.475, a root radius of 0.575, a flange radius of 0.4 and a flange angle of 8°, using 16 points to discretise the radii. A mesh is generated with a maximum triangular area of 0.02:

from sectionproperties.pre.library.steel_sections import tapered_flange_channel

geometry = tapered_flange_channel(
    d=10, b=3.5, t_f=0.575, t_w=0.475, r_r=0.575, r_f=0.4, alpha=8, n_r=16
)
geometry.create_mesh(mesh_sizes=[0.02])
../_images/taperedchannel_geometry.png

Tapered flange channel geometry.

../_images/taperedchannel_mesh.png

Mesh generated from the above geometry.

Tee Section

sectionproperties.pre.library.steel_sections.tee_section(d: float, b: float, t_f: float, t_w: float, r: float, n_r: int, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs a Tee section with the top left corner at (0, d), with depth d, width b, flange thickness t_f, web thickness t_w and root radius r, using n_r points to construct the root radius.

Parameters
  • d (float) – Depth of the Tee section

  • b (float) – Width of the Tee section

  • t_f (float) – Flange thickness of the Tee section

  • t_w (float) – Web thickness of the Tee section

  • r (float) – Root radius of the Tee section

  • n_r (int) – Number of points discretising the root radius

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

The following example creates a Tee section with a depth of 200, a width of 100, a flange thickness of 12, a web thickness of 6 and a root radius of 8, using 8 points to discretise the root radius. A mesh is generated with a maximum triangular area of 3.0:

from sectionproperties.pre.library.steel_sections import tee_section

geometry = tee_section(d=200, b=100, t_f=12, t_w=6, r=8, n_r=8)
geometry.create_mesh(mesh_sizes=[3.0])
../_images/tee_geometry.png

Tee section geometry.

../_images/tee_mesh.png

Mesh generated from the above geometry.

Angle Section

sectionproperties.pre.library.steel_sections.angle_section(d: float, b: float, t: float, r_r: float, r_t: float, n_r: int, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs an angle section with the bottom left corner at the origin (0, 0), with depth d, width b, thickness t, root radius r_r and toe radius r_t, using n_r points to construct the radii.

Parameters
  • d (float) – Depth of the angle section

  • b (float) – Width of the angle section

  • t (float) – Thickness of the angle section

  • r_r (float) – Root radius of the angle section

  • r_t (float) – Toe radius of the angle section

  • n_r (int) – Number of points discretising the radii

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

The following example creates an angle section with a depth of 150, a width of 100, a thickness of 8, a root radius of 12 and a toe radius of 5, using 16 points to discretise the radii. A mesh is generated with a maximum triangular area of 2.0:

from sectionproperties.pre.library.steel_sections import angle_section

geometry = angle_section(d=150, b=100, t=8, r_r=12, r_t=5, n_r=16)
geometry.create_mesh(mesh_sizes=[2.0])
../_images/angle_geometry.png

Angle section geometry.

../_images/angle_mesh.png

Cee Section

sectionproperties.pre.library.steel_sections.cee_section(d: float, b: float, l: float, t: float, r_out: float, n_r: int, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs a Cee section (typical of cold-formed steel) with the bottom left corner at the origin (0, 0), with depth d, width b, lip l, thickness t and outer radius r_out, using n_r points to construct the radius. If the outer radius is less than the thickness of the Cee Section, the inner radius is set to zero.

Parameters
  • d (float) – Depth of the Cee section

  • b (float) – Width of the Cee section

  • l (float) – Lip of the Cee section

  • t (float) – Thickness of the Cee section

  • r_out (float) – Outer radius of the Cee section

  • n_r (int) – Number of points discretising the outer radius

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

Raises

Exception – Lip length must be greater than the outer radius

The following example creates a Cee section with a depth of 125, a width of 50, a lip of 30, a thickness of 1.5 and an outer radius of 6, using 8 points to discretise the radius. A mesh is generated with a maximum triangular area of 0.25:

from sectionproperties.pre.library.steel_sections import cee_section

geometry = cee_section(d=125, b=50, l=30, t=1.5, r_out=6, n_r=8)
geometry.create_mesh(mesh_sizes=[0.25])
../_images/cee_geometry.png

Cee section geometry.

../_images/cee_mesh.png

Zed Section

sectionproperties.pre.library.steel_sections.zed_section(d: float, b_l: float, b_r: float, l: float, t: float, r_out: float, n_r: int, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs a zed section with the bottom left corner at the origin (0, 0), with depth d, left flange width b_l, right flange width b_r, lip l, thickness t and outer radius r_out, using n_r points to construct the radius. If the outer radius is less than the thickness of the Zed Section, the inner radius is set to zero.

Parameters
  • d (float) – Depth of the zed section

  • b_l (float) – Left flange width of the Zed section

  • b_r (float) – Right flange width of the Zed section

  • l (float) – Lip of the Zed section

  • t (float) – Thickness of the Zed section

  • r_out (float) – Outer radius of the Zed section

  • n_r (int) – Number of points discretising the outer radius

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

The following example creates a zed section with a depth of 100, a left flange width of 40, a right flange width of 50, a lip of 20, a thickness of 1.2 and an outer radius of 5, using 8 points to discretise the radius. A mesh is generated with a maximum triangular area of 0.15:

from sectionproperties.pre.library.steel_sections import zed_section

geometry = zed_section(d=100, b_l=40, b_r=50, l=20, t=1.2, r_out=5, n_r=8)
geometry.create_mesh(mesh_sizes=[0.15])
../_images/zed_geometry.png

zed section geometry.

../_images/zed_mesh.png

Box Girder Section

sectionproperties.pre.library.steel_sections.box_girder_section(d: float, b_t: float, b_b: float, t_ft: float, t_fb: float, t_w: float, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w'))[source]

Constructs a box girder section centered at at (max(b_t, b_b)/2, d/2), with depth d, top width b_t, bottom width b_b, top flange thickness t_ft, bottom flange thickness t_fb and web thickness t_w.

Parameters
  • d (float) – Depth of the Box Girder section

  • b_t (float) – Top width of the Box Girder section

  • b_b (float) – Bottom width of the Box Girder section

  • t_ft (float) – Top flange thickness of the Box Girder section

  • t_fb (float) – Bottom flange thickness of the Box Girder section

  • t_w (float) – Web thickness of the Box Girder section

The following example creates a Box Girder section with a depth of 1200, a top width of 1200, a bottom width of 400, a top flange thickness of 16, a bottom flange thickness of 12 and a web thickness of 8. A mesh is generated with a maximum triangular area of 5.0:

from sectionproperties.pre.library.steel_sections import box_girder_section

geometry = box_girder_section(d=1200, b_t=1200, b_b=400, t_ft=100, t_fb=80, t_w=50)
geometry.create_mesh(mesh_sizes=[200.0])
../_images/box_girder_geometry.png

Box Girder geometry.

../_images/box_girder_mesh.png

Mesh generated from the above geometry.

Bulb Section

sectionproperties.pre.library.steel_sections.bulb_section(d: float, b: float, t: float, r: float, n_r: int, d_b: Optional[float] = None, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs a bulb section with the bottom left corner at the point (-t / 2, 0), with depth d, bulb depth d_b, bulb width b, web thickness t and radius r, using n_r points to construct the radius.

Parameters
  • d (float) – Depth of the section

  • b (float) – Bulb width

  • t (float) – Web thickness

  • r (float) – Bulb radius

  • d_b (float) – Depth of the bulb (automatically calculated for standard sections, if provided the section may have sharp edges)

  • n_r (int) – Number of points discretising the radius

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

The following example creates a bulb section with a depth of 240, a width of 34, a web thickness of 12 and a bulb radius of 16, using 16 points to discretise the radius. A mesh is generated with a maximum triangular area of 5.0:

from sectionproperties.pre.library.steel_sections import bulb_section

geometry = bulb_section(d=240, b=34, t=12, r=10, n_r=16)
geometry.create_mesh(mesh_sizes=[5.0])
../_images/bulb_geometry.png

Bulb section geometry.

../_images/bulb_mesh.png

Mesh generated from the above geometry.

Concrete Sections Library

Concrete Rectangular Section

sectionproperties.pre.library.concrete_sections.concrete_rectangular_section(b: float, d: float, dia_top: float, n_top: int, dia_bot: float, n_bot: int, n_circle: int, cover: float, dia_side: Optional[float] = None, n_side: int = 0, area_top: Optional[float] = None, area_bot: Optional[float] = None, area_side: Optional[float] = None, conc_mat: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w'), steel_mat: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) CompoundGeometry[source]

Constructs a concrete rectangular section of width b and depth d, with n_top top steel bars of diameter dia_top, n_bot bottom steel bars of diameter dia_bot, n_side left & right side steel bars of diameter dia_side discretised with n_circle points with equal side and top/bottom cover to the steel.

Parameters
  • b (float) – Concrete section width

  • d (float) – Concrete section depth

  • dia_top (float) – Diameter of the top steel reinforcing bars

  • n_top (int) – Number of top steel reinforcing bars

  • dia_bot (float) – Diameter of the bottom steel reinforcing bars

  • n_bot (int) – Number of bottom steel reinforcing bars

  • n_circle (int) – Number of points discretising the steel reinforcing bars

  • cover (float) – Side and bottom cover to the steel reinforcing bars

  • dia_side (float) – If provided, diameter of the side steel reinforcing bars

  • n_side (int) – If provided, number of side bars either side of the section

  • area_top (float) – If provided, constructs top reinforcing bars based on their area rather than diameter (prevents the underestimation of steel area due to circle discretisation)

  • area_bot (float) – If provided, constructs bottom reinforcing bars based on their area rather than diameter (prevents the underestimation of steel area due to circle discretisation)

  • area_side (float) – If provided, constructs side reinforcing bars based on their area rather than diameter (prevents the underestimation of steel area due to circle discretisation)

  • conc_mat – Material to associate with the concrete

  • steel_mat – Material to associate with the steel

Raises

ValueError – If the number of bars is not greater than or equal to 2 in an active layer

The following example creates a 600D x 300W concrete beam with 3N20 bottom steel reinforcing bars and 30 mm cover:

from sectionproperties.pre.library.concrete_sections import concrete_rectangular_section
from sectionproperties.pre.pre import Material

concrete = Material(
    name='Concrete', elastic_modulus=30.1e3, poissons_ratio=0.2, yield_strength=32,
    density=2.4e-6, color='lightgrey'
)
steel = Material(
    name='Steel', elastic_modulus=200e3, poissons_ratio=0.3, yield_strength=500,
    density=7.85e-6, color='grey'
)

geometry = concrete_rectangular_section(
    b=300, d=600, dia_top=20, n_top=0, dia_bot=20, n_bot=3, n_circle=24, cover=30,
    conc_mat=concrete, steel_mat=steel
)
geometry.create_mesh(mesh_sizes=[500])
../_images/concrete_rectangular_section_geometry.png

Concrete rectangular section geometry.

../_images/concrete_rectangular_section_mesh.png

Mesh generated from the above geometry.

Concrete Column Section

sectionproperties.pre.library.concrete_sections.concrete_column_section(b: float, d: float, cover: float, n_bars_b: int, n_bars_d: int, dia_bar: float, bar_area: Optional[float] = None, conc_mat: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w'), steel_mat: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w'), filled: bool = False, n_circle: int = 4) CompoundGeometry[source]

Constructs a concrete rectangular section of width b and depth d, with steel bar reinforcing organized as an n_bars_b by n_bars_d array, discretised with n_circle points with equal sides and top/bottom cover to the steel which is taken as the clear cover (edge of bar to edge of concrete).

Parameters
  • b (float) – Concrete section width, parallel to the x-axis

  • d (float) – Concrete section depth, parallel to the y-axis

  • cover (float) – Clear cover, calculated as distance from edge of reinforcing bar to edge of section.

  • n_bars_b (int) – Number of bars placed across the width of the section, minimum 2.

  • n_bars_d (int) – Number of bars placed across the depth of the section, minimum 2.

  • dia_bar (float) – Diameter of reinforcing bars. Used for calculating bar placement and, optionally, for calculating the bar area for section capacity calculations.

  • bar_area (float) – Area of reinforcing bars. Used for section capacity calculations. If not provided, then dia_bar will be used to calculate the bar area.

  • conc_mat (sectionproperties.pre.pre.Material) – Material to associate with the concrete

  • steel_mat (sectionproperties.pre.pre.Material) – Material to associate with the reinforcing steel

  • filled (bool) – When True, will populate the concrete section with an equally spaced 2D array of reinforcing bars numbering ‘n_bars_b’ by ‘n_bars_d’. When False, only the bars around the perimeter of the array will be present.

  • n_circle (int) – The number of points used to discretize the circle of the reinforcing bars. The bars themselves will have an exact area of ‘bar_area’ regardless of the number of points used in the circle. Useful for making the reinforcing bars look more circular when plotting the concrete section.

Raises

ValueError – If the number of bars in either ‘n_bars_b’ or ‘n_bars_d’ is not greater than or equal to 2.

The following example creates a 600D x 300W concrete column with 25 mm diameter reinforcing bars each with 500 mm**2 area and 35 mm cover in a 3x6 array without the interior bars being filled:

from sectionproperties.pre.library.concrete_sections import concrete_column_section
from sectionproperties.pre.pre import Material

concrete = Material(
    name='Concrete', elastic_modulus=30.1e3, poissons_ratio=0.2, yield_strength=32,
    density=2.4e-6, color='lightgrey'
)
steel = Material(
    name='Steel', elastic_modulus=200e3, poissons_ratio=0.3, yield_strength=500,
    density=7.85e-6, color='grey'
)

geometry = concrete_column_section(
    b=300, d=600, dia_bar=25, bar_area=500, cover=35, n_bars_b=3, n_bars_d=6,
    conc_mat=concrete, steel_mat=steel, filled=False, n_circle=4
)
geometry.create_mesh(mesh_sizes=[500])

Concrete Tee Section

sectionproperties.pre.library.concrete_sections.concrete_tee_section(b: float, d: float, b_f: float, d_f: float, dia_top: float, n_top: int, dia_bot: float, n_bot: int, n_circle: int, cover: float, area_top: Optional[float] = None, area_bot: Optional[float] = None, conc_mat: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w'), steel_mat: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) CompoundGeometry[source]

Constructs a concrete tee section of width b, depth d, flange width b_f and flange depth d_f, with n_top top steel bars of diameter dia_top, n_bot bottom steel bars of diameter dia_bot, discretised with n_circle points with equal side and top/bottom cover to the steel.

Parameters
  • b (float) – Concrete section width

  • d (float) – Concrete section depth

  • b_f (float) – Concrete section flange width

  • d_f (float) – Concrete section flange depth

  • dia_top (float) – Diameter of the top steel reinforcing bars

  • n_top (int) – Number of top steel reinforcing bars

  • dia_bot (float) – Diameter of the bottom steel reinforcing bars

  • n_bot (int) – Number of bottom steel reinforcing bars

  • n_circle (int) – Number of points discretising the steel reinforcing bars

  • cover (float) – Side and bottom cover to the steel reinforcing bars

  • area_top (float) – If provided, constructs top reinforcing bars based on their area rather than diameter (prevents the underestimation of steel area due to circle discretisation)

  • area_bot (float) – If provided, constructs bottom reinforcing bars based on their area rather than diameter (prevents the underestimation of steel area due to circle discretisation)

  • conc_mat – Material to associatewith the concrete

  • steel_mat – Material toassociate with the steel

Raises

ValueErorr – If the number of bars is not greater than or equal to 2 in an active layer

The following example creates a 900D x 450W concrete beam with a 1200W x 250D flange, with 5N24 steel reinforcing bars and 30 mm cover:

from sectionproperties.pre.library.concrete_sections import concrete_tee_section
from sectionproperties.pre.pre import Material

concrete = Material(
    name='Concrete', elastic_modulus=30.1e3, poissons_ratio=0.2, yield_strength=32,
    density=2.4e-6, color='lightgrey'
)
steel = Material(
    name='Steel', elastic_modulus=200e3, poissons_ratio=0.3, yield_strength=500,
    density=7.85e-6, color='grey'
)

geometry = concrete_tee_section(
    b=450, d=900, b_f=1200, d_f=250, dia_top=24, n_top=0, dia_bot=24, n_bot=5,
    n_circle=24, cover=30, conc_mat=concrete, steel_mat=steel
)
geometry.create_mesh(mesh_sizes=[500])
../_images/concrete_tee_section_geometry.png

Concrete tee section geometry.

../_images/concrete_tee_section_mesh.png

Mesh generated from the above geometry.

Concrete Circular Section

sectionproperties.pre.library.concrete_sections.concrete_circular_section(d: float, n: int, dia: float, n_bar: int, n_circle: int, cover: float, area_conc: Optional[float] = None, area_bar: Optional[float] = None, conc_mat: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w'), steel_mat: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) CompoundGeometry[source]

Constructs a concrete circular section of diameter d discretised with n points, with n_bar steel bars of diameter dia, discretised with n_circle points with equal side and bottom cover to the steel.

Parameters
  • d (float) – Concrete diameter

  • n (float) – Number of points discretising the concrete section

  • dia (float) – Diameter of the steel reinforcing bars

  • n_bar (int) – Number of steel reinforcing bars

  • n_circle (int) – Number of points discretising the steel reinforcing bars

  • cover (float) – Side and bottom cover to the steel reinforcing bars

  • area_conc (float) – If provided, constructs the concrete based on its area rather than diameter (prevents the underestimation of concrete area due to circle discretisation)

  • area_bar (float) – If provided, constructs reinforcing bars based on their area rather than diameter (prevents the underestimation of steel area due to

  • conc_mat – Material to associate with the concrete

  • steel_mat – Material to associate with the steel

Raises

ValueErorr – If the number of bars is not greater than or equal to 2

The following example creates a 450DIA concrete column with with 6N20 steel reinforcing bars and 45 mm cover:

from sectionproperties.pre.library.concrete_sections import concrete_circular_section
from sectionproperties.pre.pre import Material

concrete = Material(
    name='Concrete', elastic_modulus=30.1e3, poissons_ratio=0.2, yield_strength=32,
    density=2.4e-6, color='lightgrey'
)
steel = Material(
    name='Steel', elastic_modulus=200e3, poissons_ratio=0.3, yield_strength=500,
    density=7.85e-6, color='grey'
)

geometry = concrete_circular_section(
    d=450, n=64, dia=20, n_bar=6, n_circle=24, cover=45, conc_mat=concrete, steel_mat=steel
)
geometry.create_mesh(mesh_sizes=[500])
../_images/concrete_circular_section_geometry.png

Concrete circular section geometry.

../_images/concrete_circular_section_mesh.png

Mesh generated from the above geometry.

Add Bar

sectionproperties.pre.library.concrete_sections.add_bar(geometry: Union[Geometry, CompoundGeometry], area: float, material: Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w'), x: float, y: float, n: int = 4) CompoundGeometry[source]

Adds a reinforcing bar to a sectionproperties geometry.

Bars are discretised by four points by default.

Parameters
  • geometry – Reinforced concrete geometry to which the new bar will be added

  • area – Bar cross-sectional area

  • material – Material object for the bar

  • x – x-position of the bar

  • y – y-position of the bar

  • n – Number of points to discretise the bar circle

Returns

Reinforced concrete geometry with added bar

Bridge Sections Library

Super Tee Girder Section

sectionproperties.pre.library.bridge_sections.super_t_girder_section(girder_type: int, girder_subtype: int = 2, w: float = 2100, t_w: Optional[float] = None, t_f: float = 75, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs a Super T Girder section to AS5100.5.

Parameters
  • girder_type (int) – Type of Super T (1 to 5)

  • girder_subtype (int) – Era Super T (1: pre-2001, 2:contemporary)

  • w (float) – Overall width of top flange

  • t_w (float) – Web thickness of the Super-T section (defaults to those of AS5100.5 Tb D3(B))

  • t_f (float) – Thickness of top flange (VIC (default) = 75 mm; NSW = 90 mm)

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

The following example creates a T5 Super-T section with a 180 mm overlay slab and assigns the different material properties:

import sectionproperties.pre.library.bridge_sections as bridge_sections
import sectionproperties.pre.library.primitive_sections as primitive_sections
from sectionproperties.pre.pre import Material
from sectionproperties.analysis.section import Section

Dslab, w, t_f = 180, 2100, 75

precast = Material(
    name="65 MPa",
    elastic_modulus=37.4e3,
    poissons_ratio=0.2,
    yield_strength=65,
    density=2.4e-6,
    color="grey",
)
insitu = Material(
    name="40 MPa",
    elastic_modulus=32.8e3,
    poissons_ratio=0.2,
    yield_strength=40,
    density=2.4e-6,
    color="lightgrey",
)

super_t = bridge_sections.super_t_girder_section(girder_type=5, w=w, material=precast)
slab = primitive_sections.rectangular_section(
    d=Dslab, b=w, material=insitu
).shift_section(-w / 2, t_f)

geom = super_t + slab
geom.plot_geometry()
geom.create_mesh(mesh_sizes=[500])

sec = Section(geom)
sec.plot_mesh()

sec.calculate_geometric_properties()
sec.calculate_warping_properties()
sec.display_results(fmt=".3f")

Note that the properties are reported as modulus weighted properties (e.g. E.A) and can be normalized to the reference material by dividing by that elastic modulus:

A_65 = section.get_ea() / precast.elastic_modulus

The reported section centroids are already weighted.

../_images/super_tee.png

Super Tee Girder.

I Girder Section

sectionproperties.pre.library.bridge_sections.i_girder_section(girder_type: int, material: Material = Material(name='default', elastic_modulus=1, poissons_ratio=0, yield_strength=1, density=1, color='w')) Geometry[source]

Constructs a precast I girder section to AS5100.5.

Parameters
  • girder_type (int) – Type of I Girder (1 to 4)

  • Optional[sectionproperties.pre.pre.Material] – Material to associate with this geometry

As an example, replicate the table shown in AS5100.5 Fig. D1(A):

import pandas as pd
import sectionproperties.pre.library.bridge_sections as bridge_sections
from sectionproperties.analysis.section import Section

df = pd.DataFrame(columns=["Ag", "Zt", "Zb", "I", "dy", "th"])

for i in range(4):
    geom = bridge_sections.i_girder_section(girder_type=i + 1)
    dims = bridge_sections.get_i_girder_dims(girder_type=i + 1)
    d = sum(dims[-5:])
    geom.create_mesh(mesh_sizes=[200])
    geom.plot_geometry()
    sec = Section(geom)
    sec.plot_mesh()
    sec.calculate_geometric_properties()
    sec.calculate_warping_properties()

    A = sec.get_area()
    th = A / (sec.get_perimeter() / 2)

    df.loc[i] = [
        A,
        *(sec.get_z()[:2]),
        sec.get_ic()[0],
        d + sec.get_c()[1],
        th,
    ]

print(df)

Note that the section depth is obtained by summing the heights from the section dictionary in get_i_girder_dims().

../_images/i_girder.png

I Girder.

Nastran Sections Library

See nastran_sections Module.