@@ -445,9 +445,6 @@ function calculate_results(wa::WingAerodynamics,
445445 lift_wing_3D_sum = 0.0
446446 drag_wing_3D_sum = 0.0
447447 side_wing_3D_sum = 0.0
448- fx_global_3D_sum = 0.0
449- fy_global_3D_sum = 0.0
450- fz_global_3D_sum = 0.0
451448
452449 # Get wing properties
453450 spanwise_direction = wa. wings[1 ]. spanwise_direction
@@ -495,20 +492,11 @@ function calculate_results(wa::WingAerodynamics,
495492 dot (drag_induced_va, spanwise_direction)
496493
497494 # Global forces
498- f_global_3D[:,i] = [
495+ f_global_3D[:,i] . = [
499496 dot (ftotal_induced_va, [1.0 , 0.0 , 0.0 ]),
500497 dot (ftotal_induced_va, [0.0 , 1.0 , 0.0 ]),
501498 dot (ftotal_induced_va, [0.0 , 0.0 , 1.0 ])
502- ] * panel. width
503-
504- # ### Converting forces to the global reference frame
505- # fx_global_2D = jit_dot(ftotal_induced_va, np.array([1, 0, 0]))
506- # fy_global_2D = jit_dot(ftotal_induced_va, np.array([0, 1, 0]))
507- # fz_global_2D = jit_dot(ftotal_induced_va, np.array([0, 0, 1]))
508-
509- # fx_global_3D = fx_global_2D * panel_width
510- # fy_global_3D = fy_global_2D * panel_width
511- # fz_global_3D = fz_global_2D * panel_width
499+ ] .* panel. width
512500
513501 # Update sums
514502 lift_wing_3D_sum += lift_prescribed_va * panel. width
@@ -558,9 +546,9 @@ function calculate_results(wa::WingAerodynamics,
558546
559547 # Create results dictionary
560548 results = Dict {String,Any} (
561- " Fx" => fx_global_3D_sum ,
562- " Fy" => fy_global_3D_sum ,
563- " Fz" => fz_global_3D_sum ,
549+ " Fx" => sum (f_global_3D[ 1 ,:]) ,
550+ " Fy" => sum (f_global_3D[ 1 ,:]) ,
551+ " Fz" => sum (f_global_3D[ 1 ,:]) ,
564552 " lift" => lift_wing_3D_sum,
565553 " drag" => drag_wing_3D_sum,
566554 " side" => side_wing_3D_sum,
@@ -649,88 +637,3 @@ function set_va!(wa::WingAerodynamics, va)
649637 wa. panels = frozen_wake (va_distribution, wa. panels)
650638 wa. va = va_vec
651639end
652-
653- # Continue calculate_results function
654- """
655- calculate_global_forces(wa::WingAerodynamics, results::Dict)
656-
657- Calculate global forces and coefficients.
658- """
659- function calculate_global_forces (wa:: WingAerodynamics ,
660- panels:: Vector{Panel} ,
661- density:: Float64 ,
662- va:: Vector{Float64} ,
663- lift:: Matrix{Float64} ,
664- drag:: Matrix{Float64} ,
665- moment:: Matrix{Float64} )
666-
667- # Get wing properties
668- spanwise_direction = wa. wings[1 ]. spanwise_direction
669- va_mag = norm (va)
670- va_unit = va / va_mag
671- q_inf = 0.5 * density * va_mag^ 2
672-
673- # Initialize result arrays
674- n_panels = length (panels)
675- cl_prescribed_va = zeros (n_panels)
676- cd_prescribed_va = zeros (n_panels)
677- cs_prescribed_va = zeros (n_panels)
678- f_global_3D = zeros (Float64, 3 , n_panels) # Add explicit type
679-
680- # Force summation variables
681- total_area = 0.0
682- lift_sum = 0.0
683- drag_sum = 0.0
684- side_sum = 0.0
685- f_global_sum = zeros (3 )
686-
687- for (i, panel) in enumerate (panels)
688- # Get panel geometry
689- z_airf_span = panel. z_airf
690- y_airf_chord = panel. y_airf
691- x_airf_normal = panel. x_airf
692- panel_area = panel. chord * panel. width
693- total_area += panel_area
694-
695- # Calculate force directions
696- dir_lift = cross (va_unit, spanwise_direction)
697- dir_lift = dir_lift / norm (dir_lift)
698-
699- # Calculate forces
700- lift_force = lift[i] .* dir_lift # Use broadcasting
701- drag_force = drag[i] .* va_unit
702- f_total = lift_force + drag_force
703- f_global_3D[:,i] .= panel. width .* f_total # Use in-place assignment
704-
705- # Total force in panel frame
706- f_total = lift_force + drag_force
707-
708- # Store components
709- cl_prescribed_va[i] = dot (lift_force, dir_lift) / (q_inf * panel. chord)
710- cd_prescribed_va[i] = dot (drag_force, va_unit) / (q_inf * panel. chord)
711- cs_prescribed_va[i] = dot (f_total, spanwise_direction) / (q_inf * panel. chord)
712-
713- # Global forces
714- f_global = f_global_3D[:,i]
715-
716- # Update sums
717- lift_sum += dot (f_global, dir_lift)
718- drag_sum += dot (f_global, va_unit)
719- side_sum += dot (f_global, spanwise_direction)
720- f_global_sum += f_global
721- end
722-
723- return Dict (
724- " cl_distribution" => cl_prescribed_va,
725- " cd_distribution" => cd_prescribed_va,
726- " cs_distribution" => cs_prescribed_va,
727- " F_distribution" => f_global_3D,
728- " lift" => lift_sum,
729- " drag" => drag_sum,
730- " side" => side_sum,
731- " Fx" => f_global_sum[1 ],
732- " Fy" => f_global_sum[2 ],
733- " Fz" => f_global_sum[3 ],
734- " area" => total_area
735- )
736- end
0 commit comments