From 10bbcbf5f2653728420db5f8e978f863c2b5d21d Mon Sep 17 00:00:00 2001 From: jchkoch Date: Fri, 4 Oct 2024 11:47:14 +0200 Subject: [PATCH 01/11] add new timber section code --- .../pre/library/timber_sections.py | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/sectionproperties/pre/library/timber_sections.py diff --git a/src/sectionproperties/pre/library/timber_sections.py b/src/sectionproperties/pre/library/timber_sections.py new file mode 100644 index 00000000..236e5874 --- /dev/null +++ b/src/sectionproperties/pre/library/timber_sections.py @@ -0,0 +1,52 @@ +"""Timber sections library.""" + +from __future__ import annotations + +import numpy as np + +import sectionproperties.pre.geometry as geometry +import sectionproperties.pre.library.primitive_sections as primitive_sections +import sectionproperties.pre.pre as pre + + +def timber_rectangular_section( + d: float, + b: float, + timb_mat: pre.Material = pre.DEFAULT_MATERIAL +) -> geometry.Geometry + """Constructs a timber rectangular section. + + Constructs a timber rectangular section of depth ``d`` and width ``b``. + + .. note:: + + Args: + d: Timber section depth + b: Timber section width + timb_mat: Material object to assign to the timber area + + Raises: + ValueError: Geometry generation failed + + Returns: + Timber rectangular section geometry + + Example: + The following example creates a 600mm deep x 300mm wide timber gluelaminated beam. + + .. plot:: + :include-source: True + :caption: Timber rectangular section geometry + + from sectionproperties.pre import Material + from sectionproperties.pre.library import timber_rectangular_section + from sectionproperties.analysis import Section + """ + + # create rectangular timber geometry + geom = primitive_sections.rectangular_section(b=b, d=d, material=timb_mat) + + if isinstance(geom, geometry.Geometry): + return geom + else: + raise ValueError("Timber section generation failed.") From b94642ea91c9d34fe6de144f8e4a980c6b491f68 Mon Sep 17 00:00:00 2001 From: jchkoch Date: Fri, 4 Oct 2024 15:57:01 +0200 Subject: [PATCH 02/11] create example for timber rectangular section --- src/sectionproperties/pre/library/__init__.py | 4 ++++ .../pre/library/timber_sections.py | 14 +++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/sectionproperties/pre/library/__init__.py b/src/sectionproperties/pre/library/__init__.py index 13203a36..b2ec497a 100644 --- a/src/sectionproperties/pre/library/__init__.py +++ b/src/sectionproperties/pre/library/__init__.py @@ -63,3 +63,7 @@ tee_section, zed_section, ) + +from sectionproperties.pre.library.timber_sections import ( + timber_rectangular_section +) diff --git a/src/sectionproperties/pre/library/timber_sections.py b/src/sectionproperties/pre/library/timber_sections.py index 236e5874..ddf491fd 100644 --- a/src/sectionproperties/pre/library/timber_sections.py +++ b/src/sectionproperties/pre/library/timber_sections.py @@ -13,7 +13,7 @@ def timber_rectangular_section( d: float, b: float, timb_mat: pre.Material = pre.DEFAULT_MATERIAL -) -> geometry.Geometry +) -> geometry.Geometry: """Constructs a timber rectangular section. Constructs a timber rectangular section of depth ``d`` and width ``b``. @@ -41,6 +41,18 @@ def timber_rectangular_section( from sectionproperties.pre import Material from sectionproperties.pre.library import timber_rectangular_section from sectionproperties.analysis import Section + + geom = timber_rectangular_section(500, 300) + geom.create_mesh(mesh_sizes=[200]) + + sec = Section(geometry=geom) + sec.calculate_geometric_properties() + + ixx_c, iyy_c, ixy_c = sec.get_ic() + print(f"Ixx = {ixx_c:.3e} mm4") + print(f"Irec = {300 * 500**3 / 12:.3e} mm4") + print(f"Iyy = {iyy_c:.3e} mm4") + print(f"Irec = {500 * 300**3 / 12:.3e} mm4") """ # create rectangular timber geometry From c765b69f1ed82f40c74772136c1b4bf34955118f Mon Sep 17 00:00:00 2001 From: jchkoch Date: Sat, 12 Oct 2024 23:18:43 +0200 Subject: [PATCH 03/11] add feature clt_rectangular_section --- docs/examples/geometry/section_library.ipynb | 223 +++++++++++++++++- src/sectionproperties/pre/library/__init__.py | 3 +- .../pre/library/timber_sections.py | 88 +++---- tests/section_library/test_timber_sections.py | 74 ++++++ 4 files changed, 340 insertions(+), 48 deletions(-) create mode 100644 tests/section_library/test_timber_sections.py diff --git a/docs/examples/geometry/section_library.ipynb b/docs/examples/geometry/section_library.ipynb index 6a482091..4744cbd7 100644 --- a/docs/examples/geometry/section_library.ipynb +++ b/docs/examples/geometry/section_library.ipynb @@ -446,13 +446,230 @@ "print(f\"I_eff = {ei[0]:.3e} mm6\")\n", "print(f\"I_rec = {(300 * 600**3 / 12):.3e} mm6\")" ] + }, + { + "cell_type": "markdown", + "id": "37", + "metadata": {}, + "source": [ + "## Rectangular Concrete Section\n", + "\n", + "The following example calculates the geometric properties of a rectangular reinforced concrete section." + ] + }, + { + "cell_type": "markdown", + "id": "38", + "metadata": {}, + "source": [ + "### Import Modules\n", + "\n", + "We start by importing the [concrete_rectangular_section()](../../gen/sectionproperties.pre.library.concrete_sections.concrete_rectangular_section.rst#sectionproperties.pre.library.concrete_sections.concrete_rectangular_section) function from the section library, and the [Material()](../../gen/sectionproperties.pre.pre.Material.rst#sectionproperties.pre.pre.Material) object to define our timber material." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "39", + "metadata": {}, + "outputs": [], + "source": [ + "from sectionproperties.pre import Material\n" + ] + }, + { + "cell_type": "markdown", + "id": "accb72a1-85cb-40c4-b9d3-5e179d8c9eab", + "metadata": {}, + "source": [ + "## Rectangular Timber CLT Section\n", + "\n", + "The following example calculates the geometric properties of a rectangular timber crosslaminated section." + ] + }, + { + "cell_type": "markdown", + "id": "f79eaa48-7be5-4d80-be33-ba67e86f5722", + "metadata": {}, + "source": [ + "### Import Modules\n", + "\n", + "We start by importing the [timber_rectangular_section()](../../gen/sectionproperties.pre.library.timber_sections.timber_rectangular_section.rst#sectionproperties.pre.library.timber_sections.timber_rectangular_section) function from the section library, and the [Material()](../../gen/sectionproperties.pre.pre.Material.rst#sectionproperties.pre.pre.Material) object to define our timber material." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "83d62004-15cf-44e7-b469-88df4ce48f0b", + "metadata": {}, + "outputs": [], + "source": [ + "from sectionproperties.pre import Material\n", + "from sectionproperties.pre.library import clt_rectangular_section\n", + "from sectionproperties.analysis import Section" + ] + }, + { + "cell_type": "markdown", + "id": "2cadf842-1a9c-436e-96f8-5757d9c3273a", + "metadata": {}, + "source": [ + "### Create Geometry\n", + "\n", + "Create a 120 deep by 1000 wide crosslaminated timber slab.\n", + "\n", + "The following material properties are used:\n", + "\n", + "**SPF-Timber - Parallel-to-grain**\n", + " \n", + "- Elastic modulus = 9500 MPa\n", + "- Poisson's ratio = 0.35\n", + "- Density = 4400 kg/m$^3$\n", + "- Yield Strengh = 5.5 MPa\n", + "\n", + "**SPF-Timber - Perpendicular-to-grain**\n", + " \n", + "- Elastic modulus = 317 MPa\n", + "- Poisson's ratio = 0.35\n", + "- Density = 4400 kg/m$^3$\n", + "- Yield Strengh = 5.5 MPa" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "29e8ae92-0d3c-4e7a-9566-d23f6edb74d8", + "metadata": {}, + "outputs": [], + "source": [ + "timber0 = Material(\n", + " name=\"Timber0\",\n", + " elastic_modulus=9.5e3,\n", + " poissons_ratio=0.35,\n", + " density=4.4e-7,\n", + " yield_strength=5.5,\n", + " color=\"burlywood\",\n", + ")\n", + "\n", + "timber90 = Material(\n", + " name=\"Timber90\",\n", + " elastic_modulus=317,\n", + " poissons_ratio=0.35,\n", + " density=4.4e-7,\n", + " yield_strength=5.5,\n", + " color=\"orange\",\n", + ")\n", + "\n", + "# create the geometry\n", + "geom = clt_rectangular_section(\n", + " d=[40, 40, 40],\n", + " lay_orient=[0, 90, 0],\n", + " b=1000,\n", + " timb_mat0=timber0,\n", + " timb_mat90=timber90\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "e34bd984-2d94-4103-8a03-6aac71a287e3", + "metadata": {}, + "source": [ + "### Create Mesh and ``Section`` object\n", + "\n", + "Create a mesh with a mesh size of 200 mm$^2$ and plot the mesh." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "1dfa8c2b-1698-47e5-94aa-f7be0de1508e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "geom.create_mesh(mesh_sizes=[200])\n", + "sec = Section(geometry=geom)\n", + "sec.plot_mesh()" + ] + }, + { + "cell_type": "markdown", + "id": "a1f5049b-e7fa-4546-aec4-8cbd5ec5aa7c", + "metadata": {}, + "source": [ + "### Perform an Analysis\n", + "\n", + "We perform only a geometric analysis on the reinforced concrete section." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "ebea38f0-1c88-41df-988c-e45fa5c7980c", + "metadata": {}, + "outputs": [], + "source": [ + "sec.calculate_geometric_properties()" + ] + }, + { + "cell_type": "markdown", + "id": "3e23fecf-a5da-4b06-8fbd-0f1fce2a997a", + "metadata": {}, + "source": [ + "### Calculate Gross Effective Moment of Inertia\n", + "\n", + "We can calculate the gross effective moment of inertia by obtaining the flexural rigidity ($\\sum E.I$) of the section and dividing it by the elastic modulus of the concrete. We compare this to the moment of inertia of a rectangular section of the same dimensions." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "506305ba-1ab8-493f-b2af-b2d0667023eb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "I_eff,x = 1.388e+08 mm6\n", + "I_eff,y = 6.778e+09 mm6\n" + ] + } + ], + "source": [ + "ei = sec.get_eic(e_ref=timber0)\n", + "print(f\"I_eff,x = {ei[0]:.3e} mm6\")\n", + "print(f\"I_eff,y = {ei[1]:.3e} mm6\")" + ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "section-properties", "language": "python", - "name": "python3" + "name": "section-properties" }, "language_info": { "codemirror_mode": { @@ -464,7 +681,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.17" + "version": "3.10.14" } }, "nbformat": 4, diff --git a/src/sectionproperties/pre/library/__init__.py b/src/sectionproperties/pre/library/__init__.py index b2ec497a..ba5a04c8 100644 --- a/src/sectionproperties/pre/library/__init__.py +++ b/src/sectionproperties/pre/library/__init__.py @@ -63,7 +63,6 @@ tee_section, zed_section, ) - from sectionproperties.pre.library.timber_sections import ( - timber_rectangular_section + clt_rectangular_section ) diff --git a/src/sectionproperties/pre/library/timber_sections.py b/src/sectionproperties/pre/library/timber_sections.py index ddf491fd..ea38391c 100644 --- a/src/sectionproperties/pre/library/timber_sections.py +++ b/src/sectionproperties/pre/library/timber_sections.py @@ -2,63 +2,65 @@ from __future__ import annotations -import numpy as np - import sectionproperties.pre.geometry as geometry import sectionproperties.pre.library.primitive_sections as primitive_sections import sectionproperties.pre.pre as pre -def timber_rectangular_section( - d: float, - b: float, - timb_mat: pre.Material = pre.DEFAULT_MATERIAL -) -> geometry.Geometry: - """Constructs a timber rectangular section. - - Constructs a timber rectangular section of depth ``d`` and width ``b``. +def clt_rectangular_section( + d: list[float], + lay_orient: list[int], + b: float, + timb_mat0: pre.Material = pre.DEFAULT_MATERIAL, + timb_mat90: pre.Material = pre.DEFAULT_MATERIAL, +) -> geometry.CompoundGeometry: + """Constructs a timber rectangular section. - .. note:: + Constructs a timber rectangular section of depth ``d`` and width ``b``. - Args: - d: Timber section depth - b: Timber section width - timb_mat: Material object to assign to the timber area + .. note:: - Raises: - ValueError: Geometry generation failed + Args: + d: Timber layer section thickness + lay_orient: List of layer orientation + b: Timber section width + timb_mat0: Material object to assign to the timber area + parallel-to-grain + timb_mat90: Material object to assign to the timber area, + perpendicular-to-grain - Returns: - Timber rectangular section geometry + Raises: + ValueError: Geometry generation failed - Example: - The following example creates a 600mm deep x 300mm wide timber gluelaminated beam. + Returns: + Timber rectangular section geometry - .. plot:: - :include-source: True - :caption: Timber rectangular section geometry + Example: + The following example creates a 120mm CLT cross-section. + """ - from sectionproperties.pre import Material - from sectionproperties.pre.library import timber_rectangular_section - from sectionproperties.analysis import Section + layer_geom = list() + for idx in range(len(d)): + di = float(d[idx]) + layer = lay_orient[idx] - geom = timber_rectangular_section(500, 300) - geom.create_mesh(mesh_sizes=[200]) + if layer is int(0): + timb_mat = timb_mat0 + else: + timb_mat = timb_mat90 - sec = Section(geometry=geom) - sec.calculate_geometric_properties() + # create rectangular timber geometry + layer = primitive_sections.rectangular_section(d=di, b=b, + material=timb_mat) + offset = -d[idx] * (idx + 1) + layer = layer.shift_section(y_offset=offset) - ixx_c, iyy_c, ixy_c = sec.get_ic() - print(f"Ixx = {ixx_c:.3e} mm4") - print(f"Irec = {300 * 500**3 / 12:.3e} mm4") - print(f"Iyy = {iyy_c:.3e} mm4") - print(f"Irec = {500 * 300**3 / 12:.3e} mm4") - """ + layer_geom.append(layer) - # create rectangular timber geometry - geom = primitive_sections.rectangular_section(b=b, d=d, material=timb_mat) + # create compound geometry + geom = geometry.CompoundGeometry(geoms=layer_geom) - if isinstance(geom, geometry.Geometry): - return geom - else: - raise ValueError("Timber section generation failed.") + if isinstance(geom, geometry.CompoundGeometry): + return geom + else: + raise ValueError("Timber section generation failed.") diff --git a/tests/section_library/test_timber_sections.py b/tests/section_library/test_timber_sections.py new file mode 100644 index 00000000..97260d47 --- /dev/null +++ b/tests/section_library/test_timber_sections.py @@ -0,0 +1,74 @@ +"""Tests for the timber sections library.""" + +from __future__ import annotations + +import numpy as np +import pytest +import pytest_check as check + +import sectionproperties.pre.library.timber_sections as ts +import sectionproperties.pre.library.primitive_sections as ps +import sectionproperties.pre.pre as pre + + +r_tol = 1e-6 + + +# material setup +@pytest.fixture +def get_materials() -> tuple[pre.Material, pre.Material]: + """Creates a timber material parallel and perpendicular-to-grain. + + Returns: + Material objects + """ + + timb_mat0 = pre.Material( + name="Timber E0", + elastic_modulus=9.5e3, + poissons_ratio=0.35, + density=4.4e-7, + yield_strength=5.5, + color="burlywood", + ) + + timb_mat90 = pre.Material( + name="Timber90", + elastic_modulus=317, + poissons_ratio=0.35, + density=4.4e-7, + yield_strength=5.5, + color="orange", + ) + + return timb_mat0, timb_mat90 + + +def test_timber_clt_rectangular_section(get_materials): + """Tests the timber clt_rectangular_section() method.""" + timber0, timber90 = get_materials + + rect = ts.clt_rectangular_section( + d=[40, 40, 40], + lay_orient=[0, 90, 0], + b=1000, + timb_mat0=timber0, + timb_mat90=timber90 + ) + + # check geometry is created correctly + timb0_area = 0 + timb90_area = 0 + + for geom in rect.geoms: + if geom.material == timber0: + timb0_area += geom.calculate_area() + elif geom.material == timber90: + timb90_area += geom.calculate_area() + + actual_timb0_area = 2 * 40 * 1000 + actual_timb90_area = 40 * 1000 + + # check areas + check.almost_equal(timb0_area, actual_timb0_area) + check.almost_equal(timb90_area, actual_timb90_area) From 5acd6344706af28433b9fb5fd15c5ea4c135b556 Mon Sep 17 00:00:00 2001 From: jchkoch Date: Wed, 15 Jan 2025 18:03:53 -0700 Subject: [PATCH 04/11] address comments from @connorferster --- .../pre/library/timber_sections.py | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/sectionproperties/pre/library/timber_sections.py b/src/sectionproperties/pre/library/timber_sections.py index ea38391c..93f3f25f 100644 --- a/src/sectionproperties/pre/library/timber_sections.py +++ b/src/sectionproperties/pre/library/timber_sections.py @@ -9,10 +9,8 @@ def clt_rectangular_section( d: list[float], - lay_orient: list[int], - b: float, - timb_mat0: pre.Material = pre.DEFAULT_MATERIAL, - timb_mat90: pre.Material = pre.DEFAULT_MATERIAL, + lay_orient: list[pre.Material], + b: float ) -> geometry.CompoundGeometry: """Constructs a timber rectangular section. @@ -22,12 +20,8 @@ def clt_rectangular_section( Args: d: Timber layer section thickness - lay_orient: List of layer orientation + lay_orient: A list of materials for each layer defined by the user. b: Timber section width - timb_mat0: Material object to assign to the timber area - parallel-to-grain - timb_mat90: Material object to assign to the timber area, - perpendicular-to-grain Raises: ValueError: Geometry generation failed @@ -44,10 +38,7 @@ def clt_rectangular_section( di = float(d[idx]) layer = lay_orient[idx] - if layer is int(0): - timb_mat = timb_mat0 - else: - timb_mat = timb_mat90 + timb_mat = layer # create rectangular timber geometry layer = primitive_sections.rectangular_section(d=di, b=b, From 1e07fc8d8098a08740513130fe3a75128bfcc03c Mon Sep 17 00:00:00 2001 From: jchkoch Date: Tue, 21 Jan 2025 12:04:51 -0700 Subject: [PATCH 05/11] small fixes after running pre-commit --- .python-version | 1 - docs/examples/geometry/section_library.ipynb | 78 ++++++------------- src/sectionproperties/pre/library/__init__.py | 4 +- .../pre/library/timber_sections.py | 13 ++-- tests/section_library/test_timber_sections.py | 6 +- 5 files changed, 31 insertions(+), 71 deletions(-) delete mode 100644 .python-version diff --git a/.python-version b/.python-version deleted file mode 100644 index e4fba218..00000000 --- a/.python-version +++ /dev/null @@ -1 +0,0 @@ -3.12 diff --git a/docs/examples/geometry/section_library.ipynb b/docs/examples/geometry/section_library.ipynb index 42514a2c..60c55339 100644 --- a/docs/examples/geometry/section_library.ipynb +++ b/docs/examples/geometry/section_library.ipynb @@ -481,12 +481,12 @@ "metadata": {}, "outputs": [], "source": [ - "from sectionproperties.pre import Material\n" + "from sectionproperties.pre import Material" ] }, { "cell_type": "markdown", - "id": "accb72a1-85cb-40c4-b9d3-5e179d8c9eab", + "id": "40", "metadata": {}, "source": [ "## Rectangular Timber CLT Section\n", @@ -496,7 +496,7 @@ }, { "cell_type": "markdown", - "id": "f79eaa48-7be5-4d80-be33-ba67e86f5722", + "id": "41", "metadata": {}, "source": [ "### Import Modules\n", @@ -506,19 +506,19 @@ }, { "cell_type": "code", - "execution_count": 1, - "id": "83d62004-15cf-44e7-b469-88df4ce48f0b", + "execution_count": null, + "id": "42", "metadata": {}, "outputs": [], "source": [ + "from sectionproperties.analysis import Section\n", "from sectionproperties.pre import Material\n", - "from sectionproperties.pre.library import clt_rectangular_section\n", - "from sectionproperties.analysis import Section" + "from sectionproperties.pre.library import clt_rectangular_section" ] }, { "cell_type": "markdown", - "id": "2cadf842-1a9c-436e-96f8-5757d9c3273a", + "id": "43", "metadata": {}, "source": [ "### Create Geometry\n", @@ -544,8 +544,8 @@ }, { "cell_type": "code", - "execution_count": 3, - "id": "29e8ae92-0d3c-4e7a-9566-d23f6edb74d8", + "execution_count": null, + "id": "44", "metadata": {}, "outputs": [], "source": [ @@ -573,13 +573,13 @@ " lay_orient=[0, 90, 0],\n", " b=1000,\n", " timb_mat0=timber0,\n", - " timb_mat90=timber90\n", + " timb_mat90=timber90,\n", ")" ] }, { "cell_type": "markdown", - "id": "e34bd984-2d94-4103-8a03-6aac71a287e3", + "id": "45", "metadata": {}, "source": [ "### Create Mesh and ``Section`` object\n", @@ -589,31 +589,10 @@ }, { "cell_type": "code", - "execution_count": 4, - "id": "1dfa8c2b-1698-47e5-94aa-f7be0de1508e", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "id": "46", + "metadata": {}, + "outputs": [], "source": [ "geom.create_mesh(mesh_sizes=[200])\n", "sec = Section(geometry=geom)\n", @@ -622,7 +601,7 @@ }, { "cell_type": "markdown", - "id": "a1f5049b-e7fa-4546-aec4-8cbd5ec5aa7c", + "id": "47", "metadata": {}, "source": [ "### Perform an Analysis\n", @@ -632,8 +611,8 @@ }, { "cell_type": "code", - "execution_count": 5, - "id": "ebea38f0-1c88-41df-988c-e45fa5c7980c", + "execution_count": null, + "id": "48", "metadata": {}, "outputs": [], "source": [ @@ -642,7 +621,7 @@ }, { "cell_type": "markdown", - "id": "3e23fecf-a5da-4b06-8fbd-0f1fce2a997a", + "id": "49", "metadata": {}, "source": [ "### Calculate Gross Effective Moment of Inertia\n", @@ -652,19 +631,10 @@ }, { "cell_type": "code", - "execution_count": 8, - "id": "506305ba-1ab8-493f-b2af-b2d0667023eb", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "I_eff,x = 1.388e+08 mm6\n", - "I_eff,y = 6.778e+09 mm6\n" - ] - } - ], + "execution_count": null, + "id": "50", + "metadata": {}, + "outputs": [], "source": [ "ei = sec.get_eic(e_ref=timber0)\n", "print(f\"I_eff,x = {ei[0]:.3e} mm6\")\n", diff --git a/src/sectionproperties/pre/library/__init__.py b/src/sectionproperties/pre/library/__init__.py index ba5a04c8..a554faab 100644 --- a/src/sectionproperties/pre/library/__init__.py +++ b/src/sectionproperties/pre/library/__init__.py @@ -63,6 +63,4 @@ tee_section, zed_section, ) -from sectionproperties.pre.library.timber_sections import ( - clt_rectangular_section -) +from sectionproperties.pre.library.timber_sections import clt_rectangular_section diff --git a/src/sectionproperties/pre/library/timber_sections.py b/src/sectionproperties/pre/library/timber_sections.py index 93f3f25f..3befab69 100644 --- a/src/sectionproperties/pre/library/timber_sections.py +++ b/src/sectionproperties/pre/library/timber_sections.py @@ -8,9 +8,7 @@ def clt_rectangular_section( - d: list[float], - lay_orient: list[pre.Material], - b: float + d: list[float], lay_orient: list[pre.Material], b: float ) -> geometry.CompoundGeometry: """Constructs a timber rectangular section. @@ -32,8 +30,7 @@ def clt_rectangular_section( Example: The following example creates a 120mm CLT cross-section. """ - - layer_geom = list() + layer_geom = [] for idx in range(len(d)): di = float(d[idx]) layer = lay_orient[idx] @@ -41,8 +38,7 @@ def clt_rectangular_section( timb_mat = layer # create rectangular timber geometry - layer = primitive_sections.rectangular_section(d=di, b=b, - material=timb_mat) + layer = primitive_sections.rectangular_section(d=di, b=b, material=timb_mat) offset = -d[idx] * (idx + 1) layer = layer.shift_section(y_offset=offset) @@ -54,4 +50,5 @@ def clt_rectangular_section( if isinstance(geom, geometry.CompoundGeometry): return geom else: - raise ValueError("Timber section generation failed.") + msg = "Timber section generation failed." + raise ValueError(msg) diff --git a/tests/section_library/test_timber_sections.py b/tests/section_library/test_timber_sections.py index 97260d47..fcee172f 100644 --- a/tests/section_library/test_timber_sections.py +++ b/tests/section_library/test_timber_sections.py @@ -2,15 +2,12 @@ from __future__ import annotations -import numpy as np import pytest import pytest_check as check import sectionproperties.pre.library.timber_sections as ts -import sectionproperties.pre.library.primitive_sections as ps import sectionproperties.pre.pre as pre - r_tol = 1e-6 @@ -22,7 +19,6 @@ def get_materials() -> tuple[pre.Material, pre.Material]: Returns: Material objects """ - timb_mat0 = pre.Material( name="Timber E0", elastic_modulus=9.5e3, @@ -53,7 +49,7 @@ def test_timber_clt_rectangular_section(get_materials): lay_orient=[0, 90, 0], b=1000, timb_mat0=timber0, - timb_mat90=timber90 + timb_mat90=timber90, ) # check geometry is created correctly From d822d96d51beeeec4f95635597d2d78b61a51fca Mon Sep 17 00:00:00 2001 From: jchkoch Date: Tue, 21 Jan 2025 13:16:27 -0700 Subject: [PATCH 06/11] update test for clt_rectangular_section --- tests/section_library/test_timber_sections.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tests/section_library/test_timber_sections.py b/tests/section_library/test_timber_sections.py index fcee172f..c6068176 100644 --- a/tests/section_library/test_timber_sections.py +++ b/tests/section_library/test_timber_sections.py @@ -45,11 +45,7 @@ def test_timber_clt_rectangular_section(get_materials): timber0, timber90 = get_materials rect = ts.clt_rectangular_section( - d=[40, 40, 40], - lay_orient=[0, 90, 0], - b=1000, - timb_mat0=timber0, - timb_mat90=timber90, + d=[40, 40, 40], lay_orient=[timber0, timber90, timber0], b=1000 ) # check geometry is created correctly From 2bf69a99f576e16e95b85a9610e621b0ffc82763 Mon Sep 17 00:00:00 2001 From: jchkoch Date: Tue, 21 Jan 2025 21:34:52 -0700 Subject: [PATCH 07/11] update docs --- docs/examples/geometry/section_library.ipynb | 12 ++++-------- docs/user_guide/geometry.rst | 8 ++++++++ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/docs/examples/geometry/section_library.ipynb b/docs/examples/geometry/section_library.ipynb index 60c55339..1c06ee65 100644 --- a/docs/examples/geometry/section_library.ipynb +++ b/docs/examples/geometry/section_library.ipynb @@ -569,11 +569,7 @@ "\n", "# create the geometry\n", "geom = clt_rectangular_section(\n", - " d=[40, 40, 40],\n", - " lay_orient=[0, 90, 0],\n", - " b=1000,\n", - " timb_mat0=timber0,\n", - " timb_mat90=timber90,\n", + " d=[40, 40, 40], lay_orient=[timber0, timber90, timber0], b=1000\n", ")" ] }, @@ -644,9 +640,9 @@ ], "metadata": { "kernelspec": { - "display_name": "section-properties", + "display_name": "Python 3 (ipykernel)", "language": "python", - "name": "section-properties" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -658,7 +654,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.14" + "version": "3.12.8" } }, "nbformat": 4, diff --git a/docs/user_guide/geometry.rst b/docs/user_guide/geometry.rst index 31d5b840..22921b7f 100644 --- a/docs/user_guide/geometry.rst +++ b/docs/user_guide/geometry.rst @@ -310,6 +310,14 @@ Concrete Sections .. _label-bridge-library: +Timber Section +"""""""""""""" + +.. autosummary:: + :nosignatures: + + ~sectionproperties.pre.library.timber_sections.clt_rectangular_section + Bridge Sections """"""""""""""" From f3f3eeac2c137697ea55018abdcff07cf5c2acf3 Mon Sep 17 00:00:00 2001 From: jchkoch Date: Mon, 17 Mar 2025 14:52:56 +0100 Subject: [PATCH 08/11] small fixes as suggested by robbievanlewuwen --- .python-version | 1 + docs/examples/geometry/section_library.ipynb | 317 +++++++++++------- .../pre/library/timber_sections.py | 13 +- 3 files changed, 197 insertions(+), 134 deletions(-) create mode 100644 .python-version diff --git a/.python-version b/.python-version new file mode 100644 index 00000000..e4fba218 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.12 diff --git a/docs/examples/geometry/section_library.ipynb b/docs/examples/geometry/section_library.ipynb index 1c06ee65..33ba2c05 100644 --- a/docs/examples/geometry/section_library.ipynb +++ b/docs/examples/geometry/section_library.ipynb @@ -283,9 +283,9 @@ "id": "26", "metadata": {}, "source": [ - "## Rectangular Concrete Section\n", + "## Rectangular Timber CLT Section\n", "\n", - "The following example calculates the geometric properties of a rectangular reinforced concrete section." + "The following example calculates the geometric properties of a rectangular timber crosslaminated section." ] }, { @@ -295,7 +295,7 @@ "source": [ "### Import Modules\n", "\n", - "We start by importing the [concrete_rectangular_section()](../../gen/sectionproperties.pre.library.concrete_sections.concrete_rectangular_section.rst#sectionproperties.pre.library.concrete_sections.concrete_rectangular_section) function from the section library, and the [Material()](../../gen/sectionproperties.pre.pre.Material.rst#sectionproperties.pre.pre.Material) object to define our concrete and steel materials." + "We start by importing the [timber_rectangular_section()](../../gen/sectionproperties.pre.library.timber_sections.timber_rectangular_section.rst#sectionproperties.pre.library.timber_sections.timber_rectangular_section) function from the section library, and the [Material()](../../gen/sectionproperties.pre.pre.Material.rst#sectionproperties.pre.pre.Material) object to define our timber material." ] }, { @@ -305,8 +305,9 @@ "metadata": {}, "outputs": [], "source": [ + "from sectionproperties.analysis import Section\n", "from sectionproperties.pre import Material\n", - "from sectionproperties.pre.library import concrete_rectangular_section" + "from sectionproperties.pre.library import clt_rectangular_section" ] }, { @@ -316,29 +317,23 @@ "source": [ "### Create Geometry\n", "\n", - "Create a 600 deep by 300 wide rectangular concrete beam, reinforced with:\n", - "\n", - "- 3 x 16 mm bars top (32 mm cover)\n", - "- 3 x 20 mm bars bottom (42 mm cover)\n", - "- 3 x 12 mm bars each side (57 mm cover)\n", - "\n", - "The circular reinforcement is discretised with 16 points.\n", + "Create a 120 deep by 1000 wide crosslaminated timber slab.\n", "\n", "The following material properties are used:\n", "\n", - "**32 MPa Concrete**\n", + "**SPF-Timber - Parallel-to-grain**\n", " \n", - "- Elastic modulus = 30.1 GPa\n", - "- Poisson's ratio = 0.2\n", - "- Density = 2400 kg/m$^3$ = 2.4 x 10$^{-6}$ kg/mm$^3$\n", - "- Yield Strengh = 32 MPa\n", + "- Elastic modulus = 9500 MPa\n", + "- Poisson's ratio = 0.35\n", + "- Density = 4400 kg/m$^3$\n", + "- Yield Strengh = 5.5 MPa\n", "\n", - "**500 MPa Steel**\n", + "**SPF-Timber - Perpendicular-to-grain**\n", " \n", - "- Elastic modulus = 200 GPa\n", - "- Poisson's ratio = 0.3\n", - "- Density = 7850 kg/m$^3$ = 7.85 x 10$^{-6}$ kg/mm$^3$\n", - "- Yield Strengh = 500 MPa" + "- Elastic modulus = 317 MPa\n", + "- Poisson's ratio = 0.35\n", + "- Density = 4400 kg/m$^3$\n", + "- Yield Strengh = 5.5 MPa" ] }, { @@ -348,45 +343,22 @@ "metadata": {}, "outputs": [], "source": [ - "# define the concrete material\n", - "concrete = Material(\n", - " name=\"Concrete\",\n", - " elastic_modulus=30.1e3,\n", - " poissons_ratio=0.2,\n", - " density=2.4e-6,\n", - " yield_strength=32,\n", - " color=\"lightgrey\",\n", - ")\n", - "\n", - "# define the steel material\n", - "steel = Material(\n", - " name=\"Steel\",\n", - " elastic_modulus=200e3,\n", - " poissons_ratio=0.3,\n", - " yield_strength=500,\n", - " density=7.85e-6,\n", - " color=\"grey\",\n", + "timber0 = Material(\n", + " name=\"Timber0\",\n", + " elastic_modulus=9.5e3,\n", + " poissons_ratio=0.35,\n", + " density=4.4e-7,\n", + " yield_strength=5.5,\n", + " color=\"burlywood\",\n", ")\n", "\n", - "# create the geometry\n", - "geom = concrete_rectangular_section(\n", - " d=600,\n", - " b=300,\n", - " dia_top=16,\n", - " area_top=200,\n", - " n_top=3,\n", - " c_top=32,\n", - " dia_bot=20,\n", - " area_bot=310,\n", - " n_bot=3,\n", - " c_bot=42,\n", - " dia_side=12,\n", - " area_side=110,\n", - " n_side=3,\n", - " c_side=57,\n", - " n_circle=16,\n", - " conc_mat=concrete,\n", - " steel_mat=steel,\n", + "timber90 = Material(\n", + " name=\"Timber90\",\n", + " elastic_modulus=317,\n", + " poissons_ratio=0.35,\n", + " density=4.4e-7,\n", + " yield_strength=5.5,\n", + " color=\"orange\",\n", ")" ] }, @@ -395,9 +367,7 @@ "id": "31", "metadata": {}, "source": [ - "### Create Mesh and ``Section`` object\n", - "\n", - "Create a mesh with a mesh size of 200 mm$^2$ and plot the mesh." + "### Create the geometry - Major (x-) axis bending" ] }, { @@ -407,9 +377,9 @@ "metadata": {}, "outputs": [], "source": [ - "geom.create_mesh(mesh_sizes=[200])\n", - "sec = Section(geometry=geom)\n", - "sec.plot_mesh()" + "geom_maj = clt_rectangular_section(\n", + " d=[40, 40, 40], lay_orient=[timber0, timber90, timber0], b=1000\n", + ")" ] }, { @@ -417,9 +387,9 @@ "id": "33", "metadata": {}, "source": [ - "### Perform an Analysis\n", + "#### Create Mesh and ``Section`` object\n", "\n", - "We perform only a geometric analysis on the reinforced concrete section." + "Create a mesh with a mesh size of 200 mm$^2$ and plot the mesh." ] }, { @@ -429,7 +399,9 @@ "metadata": {}, "outputs": [], "source": [ - "sec.calculate_geometric_properties()" + "geom_maj.create_mesh(mesh_sizes=[200])\n", + "sec_maj = Section(geometry=geom_maj)\n", + "sec_maj.plot_mesh()" ] }, { @@ -437,9 +409,9 @@ "id": "35", "metadata": {}, "source": [ - "### Calculate Gross Effective Moment of Inertia\n", + "#### Perform an Analysis\n", "\n", - "We can calculate the gross effective moment of inertia by obtaining the flexural rigidity ($\\sum E.I$) of the section and dividing it by the elastic modulus of the concrete. We compare this to the moment of inertia of a rectangular section of the same dimensions." + "We perform only a geometric analysis on the reinforced concrete section." ] }, { @@ -449,9 +421,7 @@ "metadata": {}, "outputs": [], "source": [ - "ei = sec.get_eic(e_ref=concrete)\n", - "print(f\"I_eff = {ei[0]:.3e} mm6\")\n", - "print(f\"I_rec = {(300 * 600**3 / 12):.3e} mm6\")" + "sec_maj.calculate_geometric_properties()" ] }, { @@ -459,123 +429,220 @@ "id": "37", "metadata": {}, "source": [ - "## Rectangular Concrete Section\n", + "#### Calculate Gross Effective Moment of Inertia\n", "\n", - "The following example calculates the geometric properties of a rectangular reinforced concrete section." + "We can calculate the gross effective moment of inertia by obtaining the flexural rigidity ($\\sum E.I$) of the section and dividing it by the elastic modulus of the concrete. We compare this to the moment of inertia of a rectangular section of the same dimensions." ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": null, "id": "38", "metadata": {}, + "outputs": [], "source": [ - "### Import Modules\n", + "ei_maj = sec_maj.get_eic(e_ref=timber0)\n", + "print(f\"I_eff,x,major = {ei_maj[0]:.3e} mm4\")" + ] + }, + { + "cell_type": "markdown", + "id": "39", + "metadata": {}, + "source": [ + "### Create the geometry - Minor (z-) axis bending" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "40", + "metadata": {}, + "outputs": [], + "source": [ + "geom_min = clt_rectangular_section(\n", + " d=[40, 40, 40], lay_orient=[timber90, timber0, timber90], b=1000\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "41", + "metadata": {}, + "source": [ + "#### Create Mesh and ``Section`` object\n", "\n", - "We start by importing the [concrete_rectangular_section()](../../gen/sectionproperties.pre.library.concrete_sections.concrete_rectangular_section.rst#sectionproperties.pre.library.concrete_sections.concrete_rectangular_section) function from the section library, and the [Material()](../../gen/sectionproperties.pre.pre.Material.rst#sectionproperties.pre.pre.Material) object to define our timber material." + "Create a mesh with a mesh size of 200 mm$^2$ and plot the mesh." ] }, { "cell_type": "code", "execution_count": null, - "id": "39", + "id": "42", "metadata": {}, "outputs": [], "source": [ - "from sectionproperties.pre import Material" + "geom_min.create_mesh(mesh_sizes=[200])\n", + "sec_min = Section(geometry=geom_min)\n", + "sec_min.plot_mesh()" ] }, { "cell_type": "markdown", - "id": "40", + "id": "43", "metadata": {}, "source": [ - "## Rectangular Timber CLT Section\n", + "#### Perform an Analysis\n", "\n", - "The following example calculates the geometric properties of a rectangular timber crosslaminated section." + "We perform only a geometric analysis on the reinforced concrete section." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "44", + "metadata": {}, + "outputs": [], + "source": [ + "sec_min.calculate_geometric_properties()" ] }, { "cell_type": "markdown", - "id": "41", + "id": "45", + "metadata": {}, + "source": [ + "#### Calculate Gross Effective Moment of Inertia\n", + "\n", + "We can calculate the gross effective moment of inertia by obtaining the flexural rigidity ($\\sum E.I$) of the section and dividing it by the elastic modulus of the concrete. We compare this to the moment of inertia of a rectangular section of the same dimensions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "46", + "metadata": {}, + "outputs": [], + "source": [ + "ei_min = sec_min.get_eic(e_ref=timber0)\n", + "print(f\"I_eff,x,minor = {ei_min[0]:.3e} mm4\")" + ] + }, + { + "cell_type": "markdown", + "id": "47", + "metadata": {}, + "source": [ + "## Rectangular Concrete Section\n", + "\n", + "The following example calculates the geometric properties of a rectangular reinforced concrete section." + ] + }, + { + "cell_type": "markdown", + "id": "48", "metadata": {}, "source": [ "### Import Modules\n", "\n", - "We start by importing the [timber_rectangular_section()](../../gen/sectionproperties.pre.library.timber_sections.timber_rectangular_section.rst#sectionproperties.pre.library.timber_sections.timber_rectangular_section) function from the section library, and the [Material()](../../gen/sectionproperties.pre.pre.Material.rst#sectionproperties.pre.pre.Material) object to define our timber material." + "We start by importing the [concrete_rectangular_section()](../../gen/sectionproperties.pre.library.concrete_sections.concrete_rectangular_section.rst#sectionproperties.pre.library.concrete_sections.concrete_rectangular_section) function from the section library, and the [Material()](../../gen/sectionproperties.pre.pre.Material.rst#sectionproperties.pre.pre.Material) object to define our concrete and steel materials." ] }, { "cell_type": "code", "execution_count": null, - "id": "42", + "id": "49", "metadata": {}, "outputs": [], "source": [ - "from sectionproperties.analysis import Section\n", "from sectionproperties.pre import Material\n", - "from sectionproperties.pre.library import clt_rectangular_section" + "from sectionproperties.pre.library import concrete_rectangular_section" ] }, { "cell_type": "markdown", - "id": "43", + "id": "50", "metadata": {}, "source": [ "### Create Geometry\n", "\n", - "Create a 120 deep by 1000 wide crosslaminated timber slab.\n", + "Create a 600 deep by 300 wide rectangular concrete beam, reinforced with:\n", + "\n", + "- 3 x 16 mm bars top (32 mm cover)\n", + "- 3 x 20 mm bars bottom (42 mm cover)\n", + "- 3 x 12 mm bars each side (57 mm cover)\n", + "\n", + "The circular reinforcement is discretised with 16 points.\n", "\n", "The following material properties are used:\n", "\n", - "**SPF-Timber - Parallel-to-grain**\n", + "**32 MPa Concrete**\n", " \n", - "- Elastic modulus = 9500 MPa\n", - "- Poisson's ratio = 0.35\n", - "- Density = 4400 kg/m$^3$\n", - "- Yield Strengh = 5.5 MPa\n", + "- Elastic modulus = 30.1 GPa\n", + "- Poisson's ratio = 0.2\n", + "- Density = 2400 kg/m$^3$ = 2.4 x 10$^{-6}$ kg/mm$^3$\n", + "- Yield Strengh = 32 MPa\n", "\n", - "**SPF-Timber - Perpendicular-to-grain**\n", + "**500 MPa Steel**\n", " \n", - "- Elastic modulus = 317 MPa\n", - "- Poisson's ratio = 0.35\n", - "- Density = 4400 kg/m$^3$\n", - "- Yield Strengh = 5.5 MPa" + "- Elastic modulus = 200 GPa\n", + "- Poisson's ratio = 0.3\n", + "- Density = 7850 kg/m$^3$ = 7.85 x 10$^{-6}$ kg/mm$^3$\n", + "- Yield Strengh = 500 MPa" ] }, { "cell_type": "code", "execution_count": null, - "id": "44", + "id": "51", "metadata": {}, "outputs": [], "source": [ - "timber0 = Material(\n", - " name=\"Timber0\",\n", - " elastic_modulus=9.5e3,\n", - " poissons_ratio=0.35,\n", - " density=4.4e-7,\n", - " yield_strength=5.5,\n", - " color=\"burlywood\",\n", + "# define the concrete material\n", + "concrete = Material(\n", + " name=\"Concrete\",\n", + " elastic_modulus=30.1e3,\n", + " poissons_ratio=0.2,\n", + " density=2.4e-6,\n", + " yield_strength=32,\n", + " color=\"lightgrey\",\n", ")\n", "\n", - "timber90 = Material(\n", - " name=\"Timber90\",\n", - " elastic_modulus=317,\n", - " poissons_ratio=0.35,\n", - " density=4.4e-7,\n", - " yield_strength=5.5,\n", - " color=\"orange\",\n", + "# define the steel material\n", + "steel = Material(\n", + " name=\"Steel\",\n", + " elastic_modulus=200e3,\n", + " poissons_ratio=0.3,\n", + " yield_strength=500,\n", + " density=7.85e-6,\n", + " color=\"grey\",\n", ")\n", "\n", "# create the geometry\n", - "geom = clt_rectangular_section(\n", - " d=[40, 40, 40], lay_orient=[timber0, timber90, timber0], b=1000\n", + "geom = concrete_rectangular_section(\n", + " d=600,\n", + " b=300,\n", + " dia_top=16,\n", + " area_top=200,\n", + " n_top=3,\n", + " c_top=32,\n", + " dia_bot=20,\n", + " area_bot=310,\n", + " n_bot=3,\n", + " c_bot=42,\n", + " dia_side=12,\n", + " area_side=110,\n", + " n_side=3,\n", + " c_side=57,\n", + " n_circle=16,\n", + " conc_mat=concrete,\n", + " steel_mat=steel,\n", ")" ] }, { "cell_type": "markdown", - "id": "45", + "id": "52", "metadata": {}, "source": [ "### Create Mesh and ``Section`` object\n", @@ -586,7 +653,7 @@ { "cell_type": "code", "execution_count": null, - "id": "46", + "id": "53", "metadata": {}, "outputs": [], "source": [ @@ -597,7 +664,7 @@ }, { "cell_type": "markdown", - "id": "47", + "id": "54", "metadata": {}, "source": [ "### Perform an Analysis\n", @@ -608,7 +675,7 @@ { "cell_type": "code", "execution_count": null, - "id": "48", + "id": "55", "metadata": {}, "outputs": [], "source": [ @@ -617,7 +684,7 @@ }, { "cell_type": "markdown", - "id": "49", + "id": "56", "metadata": {}, "source": [ "### Calculate Gross Effective Moment of Inertia\n", @@ -628,13 +695,13 @@ { "cell_type": "code", "execution_count": null, - "id": "50", + "id": "57", "metadata": {}, "outputs": [], "source": [ - "ei = sec.get_eic(e_ref=timber0)\n", - "print(f\"I_eff,x = {ei[0]:.3e} mm6\")\n", - "print(f\"I_eff,y = {ei[1]:.3e} mm6\")" + "ei = sec.get_eic(e_ref=concrete)\n", + "print(f\"I_eff = {ei[0]:.3e} mm6\")\n", + "print(f\"I_rec = {(300 * 600**3 / 12):.3e} mm6\")" ] } ], diff --git a/src/sectionproperties/pre/library/timber_sections.py b/src/sectionproperties/pre/library/timber_sections.py index 3befab69..a11b3364 100644 --- a/src/sectionproperties/pre/library/timber_sections.py +++ b/src/sectionproperties/pre/library/timber_sections.py @@ -18,7 +18,8 @@ def clt_rectangular_section( Args: d: Timber layer section thickness - lay_orient: A list of materials for each layer defined by the user. + lay_orient: A list of materials for each layer from top to bottom + defined by the user. b: Timber section width Raises: @@ -30,7 +31,7 @@ def clt_rectangular_section( Example: The following example creates a 120mm CLT cross-section. """ - layer_geom = [] + layer_geom: list[geometry.Geometry] = [] for idx in range(len(d)): di = float(d[idx]) layer = lay_orient[idx] @@ -45,10 +46,4 @@ def clt_rectangular_section( layer_geom.append(layer) # create compound geometry - geom = geometry.CompoundGeometry(geoms=layer_geom) - - if isinstance(geom, geometry.CompoundGeometry): - return geom - else: - msg = "Timber section generation failed." - raise ValueError(msg) + return geometry.CompoundGeometry(geoms=layer_geom) From 449314ec3bf304b9864af567bf89d557bd4ed466 Mon Sep 17 00:00:00 2001 From: jchkoch Date: Mon, 17 Mar 2025 15:04:49 +0100 Subject: [PATCH 09/11] rm reference to concrete from section in example notebook --- docs/examples/geometry/section_library.ipynb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/examples/geometry/section_library.ipynb b/docs/examples/geometry/section_library.ipynb index 33ba2c05..dbe76e12 100644 --- a/docs/examples/geometry/section_library.ipynb +++ b/docs/examples/geometry/section_library.ipynb @@ -411,7 +411,7 @@ "source": [ "#### Perform an Analysis\n", "\n", - "We perform only a geometric analysis on the reinforced concrete section." + "We perform only a geometric analysis on the timber CLT section." ] }, { @@ -431,7 +431,7 @@ "source": [ "#### Calculate Gross Effective Moment of Inertia\n", "\n", - "We can calculate the gross effective moment of inertia by obtaining the flexural rigidity ($\\sum E.I$) of the section and dividing it by the elastic modulus of the concrete. We compare this to the moment of inertia of a rectangular section of the same dimensions." + "We can calculate the gross effective moment of inertia by obtaining the flexural rigidity ($\\sum E.I$) of the section and dividing it by the elastic modulus of the reference timber (i.e. Timber0)." ] }, { @@ -494,7 +494,7 @@ "source": [ "#### Perform an Analysis\n", "\n", - "We perform only a geometric analysis on the reinforced concrete section." + "We perform only a geometric analysis on the timber CLT section." ] }, { @@ -514,7 +514,7 @@ "source": [ "#### Calculate Gross Effective Moment of Inertia\n", "\n", - "We can calculate the gross effective moment of inertia by obtaining the flexural rigidity ($\\sum E.I$) of the section and dividing it by the elastic modulus of the concrete. We compare this to the moment of inertia of a rectangular section of the same dimensions." + "We can calculate the gross effective moment of inertia by obtaining the flexural rigidity ($\\sum E.I$) of the section and dividing it by the elastic modulus of the reference timber (i.e. Timber0)." ] }, { From 98073ca497f062af63adfcbd43961138c60bec0b Mon Sep 17 00:00:00 2001 From: jchkoch Date: Mon, 17 Mar 2025 15:08:44 +0100 Subject: [PATCH 10/11] corrected units on reinforced concrete example in example notebook --- docs/examples/geometry/section_library.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/examples/geometry/section_library.ipynb b/docs/examples/geometry/section_library.ipynb index dbe76e12..1c9abd3c 100644 --- a/docs/examples/geometry/section_library.ipynb +++ b/docs/examples/geometry/section_library.ipynb @@ -700,8 +700,8 @@ "outputs": [], "source": [ "ei = sec.get_eic(e_ref=concrete)\n", - "print(f\"I_eff = {ei[0]:.3e} mm6\")\n", - "print(f\"I_rec = {(300 * 600**3 / 12):.3e} mm6\")" + "print(f\"I_eff = {ei[0]:.3e} mm4\")\n", + "print(f\"I_rec = {(300 * 600**3 / 12):.3e} mm4\")" ] } ], From fef9d5941542f5415715021372fe756540cfaa21 Mon Sep 17 00:00:00 2001 From: jchkoch Date: Mon, 17 Mar 2025 15:12:27 +0100 Subject: [PATCH 11/11] update docs geometry.rst --- docs/user_guide/geometry.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/user_guide/geometry.rst b/docs/user_guide/geometry.rst index bac4a19c..938905a8 100644 --- a/docs/user_guide/geometry.rst +++ b/docs/user_guide/geometry.rst @@ -315,7 +315,7 @@ Concrete Sections ~sectionproperties.pre.library.concrete_sections.double_lift_core_b ~sectionproperties.pre.library.concrete_sections.stairwell -.. _label-bridge-library: +.. _label-timber-library: Timber Section """""""""""""" @@ -325,6 +325,8 @@ Timber Section ~sectionproperties.pre.library.timber_sections.clt_rectangular_section +.. _label-bridge-library: + Bridge Sections """""""""""""""