Skip to content

Commit 7db754a

Browse files
authored
Merge branch 'main' into controlplots
2 parents 68d6a03 + 9fef3b2 commit 7db754a

File tree

1 file changed

+5
-102
lines changed

1 file changed

+5
-102
lines changed

src/wing_aerodynamics.jl

Lines changed: 5 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -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
651639
end
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

Comments
 (0)