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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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.
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()
.