@@ -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,11 +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
499+ ] . * panel. width
503500
504501 # Update sums
505502 lift_wing_3D_sum += lift_prescribed_va * panel. width
@@ -536,9 +533,9 @@ function calculate_results(wa::WingAerodynamics,
536533
537534 # Create results dictionary
538535 results = Dict {String,Any} (
539- " Fx" => fx_global_3D_sum ,
540- " Fy" => fy_global_3D_sum ,
541- " Fz" => fz_global_3D_sum ,
536+ " Fx" => sum (f_global_3D[ 1 ,:]) ,
537+ " Fy" => sum (f_global_3D[ 1 ,:]) ,
538+ " Fz" => sum (f_global_3D[ 1 ,:]) ,
542539 " lift" => lift_wing_3D_sum,
543540 " drag" => drag_wing_3D_sum,
544541 " side" => side_wing_3D_sum,
@@ -627,88 +624,3 @@ function set_va!(wa::WingAerodynamics, va)
627624 wa. panels = frozen_wake (va_distribution, wa. panels)
628625 wa. va = va_vec
629626end
630-
631- # Continue calculate_results function
632- """
633- calculate_global_forces(wa::WingAerodynamics, results::Dict)
634-
635- Calculate global forces and coefficients.
636- """
637- function calculate_global_forces (wa:: WingAerodynamics ,
638- panels:: Vector{Panel} ,
639- density:: Float64 ,
640- va:: Vector{Float64} ,
641- lift:: Matrix{Float64} ,
642- drag:: Matrix{Float64} ,
643- moment:: Matrix{Float64} )
644-
645- # Get wing properties
646- spanwise_direction = wa. wings[1 ]. spanwise_direction
647- va_mag = norm (va)
648- va_unit = va / va_mag
649- q_inf = 0.5 * density * va_mag^ 2
650-
651- # Initialize result arrays
652- n_panels = length (panels)
653- cl_prescribed_va = zeros (n_panels)
654- cd_prescribed_va = zeros (n_panels)
655- cs_prescribed_va = zeros (n_panels)
656- f_global_3D = zeros (Float64, 3 , n_panels) # Add explicit type
657-
658- # Force summation variables
659- total_area = 0.0
660- lift_sum = 0.0
661- drag_sum = 0.0
662- side_sum = 0.0
663- f_global_sum = zeros (3 )
664-
665- for (i, panel) in enumerate (panels)
666- # Get panel geometry
667- z_airf_span = panel. z_airf
668- y_airf_chord = panel. y_airf
669- x_airf_normal = panel. x_airf
670- panel_area = panel. chord * panel. width
671- total_area += panel_area
672-
673- # Calculate force directions
674- dir_lift = cross (va_unit, spanwise_direction)
675- dir_lift = dir_lift / norm (dir_lift)
676-
677- # Calculate forces
678- lift_force = lift[i] .* dir_lift # Use broadcasting
679- drag_force = drag[i] .* va_unit
680- f_total = lift_force + drag_force
681- f_global_3D[:,i] .= panel. width .* f_total # Use in-place assignment
682-
683- # Total force in panel frame
684- f_total = lift_force + drag_force
685-
686- # Store components
687- cl_prescribed_va[i] = dot (lift_force, dir_lift) / (q_inf * panel. chord)
688- cd_prescribed_va[i] = dot (drag_force, va_unit) / (q_inf * panel. chord)
689- cs_prescribed_va[i] = dot (f_total, spanwise_direction) / (q_inf * panel. chord)
690-
691- # Global forces
692- f_global = f_global_3D[:,i]
693-
694- # Update sums
695- lift_sum += dot (f_global, dir_lift)
696- drag_sum += dot (f_global, va_unit)
697- side_sum += dot (f_global, spanwise_direction)
698- f_global_sum += f_global
699- end
700-
701- return Dict (
702- " cl_distribution" => cl_prescribed_va,
703- " cd_distribution" => cd_prescribed_va,
704- " cs_distribution" => cs_prescribed_va,
705- " F_distribution" => f_global_3D,
706- " lift" => lift_sum,
707- " drag" => drag_sum,
708- " side" => side_sum,
709- " Fx" => f_global_sum[1 ],
710- " Fy" => f_global_sum[2 ],
711- " Fz" => f_global_sum[3 ],
712- " area" => total_area
713- )
714- end
0 commit comments