@@ -202,6 +202,7 @@ def calculate_geometric_properties(self) -> None:
202202 - Centroidal section moduli
203203 - Radii of gyration
204204 - Principal axis properties
205+ - Yield moments (composite only)
205206 """
206207
207208 def calculate_geom (progress : Progress | None = None ) -> None :
@@ -259,11 +260,21 @@ def calculate_geom(progress: Progress | None = None) -> None:
259260 )
260261 self .section_props .e_eff = self .section_props .ea / self .section_props .area
261262 self .section_props .g_eff = self .section_props .ga / self .section_props .area
263+
264+ # calculate derived properties
262265 self .section_props .calculate_elastic_centroid ()
263266 self .section_props .calculate_centroidal_properties (
264267 node_list = self .mesh ["vertices" ]
265268 )
266269
270+ # calculate yield moments
271+ self .section_props .my_xx = 0.0
272+ self .section_props .my_yy = 0.0
273+ self .section_props .my_11 = 0.0
274+ self .section_props .my_22 = 0.0
275+
276+ # TODO: calculate yield moments
277+
267278 if progress and task is not None :
268279 msg = "[bold green]:white_check_mark: Geometric analysis complete"
269280 progress .update (task_id = task , description = msg )
@@ -1120,7 +1131,7 @@ def calculate_plastic_properties(
11201131
11211132 - Plastic centroids (centroidal and principal axes)
11221133 - Plastic section moduli (centroidal and principal axes)
1123- - Shape factors, non-composite only (centroidal and principal axe )
1134+ - Shape factors, non-composite only (centroidal and principal axes )
11241135 """
11251136 # check that a geometric analysis has been performed
11261137 if self .section_props .cx is None :
@@ -2240,6 +2251,32 @@ def get_ez(
22402251 self .section_props .zyy_minus / e_ref ,
22412252 )
22422253
2254+ def get_my (self ) -> tuple [float , float ]:
2255+ """Returns the yield moment for bending about the centroidal axis.
2256+
2257+ This is a composite only property, as such this can only be returned if material
2258+ properties have been applied to the cross-section.
2259+
2260+ Returns:
2261+ Yield moment for bending about the centroidal ``x`` and ``y`` axes
2262+ (``my_xx``, ``my_yy``)
2263+
2264+ Raises:
2265+ RuntimeError: If material properties have *not* been applied
2266+ RuntimeError: If a geometric analysis has not been performed
2267+ """
2268+ if not self .is_composite ():
2269+ msg = "Attempting to get a composite only property for a geometric analysis"
2270+ msg += " (material properties have not been applied). Consider using"
2271+ msg += " get_z()."
2272+ raise RuntimeError (msg )
2273+
2274+ if self .section_props .my_xx is None or self .section_props .my_yy is None :
2275+ msg = "Conduct a geometric analysis."
2276+ raise RuntimeError (msg )
2277+
2278+ return (self .section_props .my_xx , self .section_props .my_yy )
2279+
22432280 def get_rc (self ) -> tuple [float , float ]:
22442281 """Returns the cross-section centroidal radii of gyration.
22452282
@@ -2418,6 +2455,32 @@ def get_ezp(
24182455 self .section_props .z22_minus / e_ref ,
24192456 )
24202457
2458+ def get_my_p (self ) -> tuple [float , float ]:
2459+ """Returns the yield moment for bending about the principal axis.
2460+
2461+ This is a composite only property, as such this can only be returned if material
2462+ properties have been applied to the cross-section.
2463+
2464+ Returns:
2465+ Yield moment for bending about the principal ``11`` and ``22`` axes
2466+ (``my_11``, ``my_22``)
2467+
2468+ Raises:
2469+ RuntimeError: If material properties have *not* been applied
2470+ RuntimeError: If a geometric analysis has not been performed
2471+ """
2472+ if not self .is_composite ():
2473+ msg = "Attempting to get a composite only property for a geometric analysis"
2474+ msg += " (material properties have not been applied). Consider using"
2475+ msg += " get_zp()."
2476+ raise RuntimeError (msg )
2477+
2478+ if self .section_props .my_11 is None or self .section_props .my_22 is None :
2479+ msg = "Conduct a geometric analysis."
2480+ raise RuntimeError (msg )
2481+
2482+ return (self .section_props .my_11 , self .section_props .my_22 )
2483+
24212484 def get_rp (self ) -> tuple [float , float ]:
24222485 """Returns the cross-section principal radii of gyration.
24232486
0 commit comments