@@ -835,3 +835,63 @@ def test_blade_str_method(self):
835
835
string += '\n Induced rake from skew (in unit length)' \
836
836
' for the sections = {}' .format (blade .induced_rake )
837
837
assert blade .__str__ () == string
838
+
839
+ def test_blade_parameters_unchanged_after_transformations_and_rotation (self ):
840
+ """Test that blade parameters remain unchanged after transformations and rotation."""
841
+ # Create the original parameters
842
+ sections = np .asarray ([NacaProfile (digits = '0012' ) for i in range (10 )])
843
+ radii = np .arange (0.4 , 1.31 , 0.1 )
844
+ chord_lengths = np .concatenate ((np .arange (0.55 , 1.1 , 0.15 ),
845
+ np .arange (1.03 , 0.9 , - 0.03 ),
846
+ np .array ([0.3 ])))
847
+ pitch = np .append (np .arange (3.0 , 4. , 0.2 ), np .arange (4.1 , 3.2 , - 0.2 ))
848
+ rake = np .append (np .arange (5e-3 , 0.08 , 1e-2 ), np .arange (0.075 , 0.02 , - 3e-2 ))
849
+ skew_angles = np .append (np .arange (- 4. , - 9. , - 3. ), np .arange (- 7. , 15. , 3. ))
850
+
851
+ # Store original section data
852
+ original_sections = []
853
+ for section in sections :
854
+ original_sections .append ({
855
+ 'xup' : section .xup_coordinates .copy (),
856
+ 'yup' : section .yup_coordinates .copy (),
857
+ 'xdown' : section .xdown_coordinates .copy (),
858
+ 'ydown' : section .ydown_coordinates .copy ()
859
+ })
860
+
861
+ # Build the blade
862
+ blade = bl .Blade (
863
+ sections = sections ,
864
+ radii = radii ,
865
+ chord_lengths = chord_lengths ,
866
+ pitch = pitch ,
867
+ rake = rake ,
868
+ skew_angles = skew_angles )
869
+
870
+ # Apply transformations and rotate 180 degrees around z-axis
871
+ blade .apply_transformations ()
872
+ blade .rotate (deg_angle = 180 )
873
+
874
+ # Verify parameters are unchanged
875
+ for i , section in enumerate (blade .sections ):
876
+ np .testing .assert_array_equal (
877
+ section .xup_coordinates ,
878
+ original_sections [i ]['xup' ]
879
+ )
880
+ np .testing .assert_array_equal (
881
+ section .yup_coordinates ,
882
+ original_sections [i ]['yup' ]
883
+ )
884
+ np .testing .assert_array_equal (
885
+ section .xdown_coordinates ,
886
+ original_sections [i ]['xdown' ]
887
+ )
888
+ np .testing .assert_array_equal (
889
+ section .ydown_coordinates ,
890
+ original_sections [i ]['ydown' ]
891
+ )
892
+
893
+ np .testing .assert_array_equal (blade .radii , radii )
894
+ np .testing .assert_array_equal (blade .chord_lengths , chord_lengths )
895
+ np .testing .assert_array_equal (blade .pitch , pitch )
896
+ np .testing .assert_array_equal (blade .rake , rake )
897
+ np .testing .assert_array_equal (blade .skew_angles , skew_angles )
0 commit comments