@@ -70,6 +70,15 @@ def test_rectangle():
7070 assert check_yield_index (stress , "sig_zz_m11" ) == pytest .approx (1.0 )
7171 assert check_yield_index (stress , "sig_zz_m22" ) == pytest .approx (1.0 )
7272
73+ # check shape factors
74+ sec .calculate_plastic_properties ()
75+ sf_xx , _ , sf_yy , _ = sec .get_sf ()
76+ sf_11 , _ , sf_22 , _ = sec .get_sf_p ()
77+ assert sf_xx == pytest .approx (1.5 )
78+ assert sf_yy == pytest .approx (1.5 )
79+ assert sf_11 == pytest .approx (1.5 )
80+ assert sf_22 == pytest .approx (1.5 )
81+
7382
7483def test_rectangle_rotated ():
7584 """Test the yield moment of a simple rotated rectangle."""
@@ -92,6 +101,12 @@ def test_rectangle_rotated():
92101 assert check_yield_index (stress , "sig_zz_m11" ) == pytest .approx (1.0 )
93102 assert check_yield_index (stress , "sig_zz_m22" ) == pytest .approx (1.0 )
94103
104+ # check shape factors
105+ sec .calculate_plastic_properties ()
106+ sf_11 , _ , sf_22 , _ = sec .get_sf_p ()
107+ assert sf_11 == pytest .approx (1.5 )
108+ assert sf_22 == pytest .approx (1.5 )
109+
95110
96111def test_isection ():
97112 """Test the yield moment of an isection."""
@@ -119,6 +134,22 @@ def test_isection():
119134 assert check_yield_index (stress , "sig_zz_m11" ) == pytest .approx (1.0 )
120135 assert check_yield_index (stress , "sig_zz_m22" ) == pytest .approx (1.0 )
121136
137+ # check that shape factors with a geometric-only analysis match the composite
138+ sec .calculate_plastic_properties ()
139+ sf_xx_c , _ , sf_yy_c , _ = sec .get_sf ()
140+
141+ geom = i_section (d = 200 , b = 100 , t_f = 10 , t_w = 5 , r = 12 , n_r = 8 )
142+ geom .create_mesh (mesh_sizes = 0 , coarse = True )
143+ sec = Section (geometry = geom )
144+ sec .calculate_geometric_properties ()
145+ sec .calculate_plastic_properties ()
146+
147+ sf_xx_plus , sf_xx_minus , sf_yy_plus , sf_yy_minus = sec .get_sf ()
148+ assert sf_xx_c == pytest .approx (sf_xx_plus )
149+ assert sf_xx_c == pytest .approx (sf_xx_minus )
150+ assert sf_yy_c == pytest .approx (sf_yy_plus )
151+ assert sf_yy_c == pytest .approx (sf_yy_minus )
152+
122153
123154def test_rectangle_composite ():
124155 """Test the yield moment of a composite rectangular section."""
0 commit comments