@@ -24,7 +24,7 @@ Represents a panel in a vortex step method simulation.
2424- `width::Float64`: Panel width
2525- `filaments::Vector{BoundFilament}`: Panel filaments
2626"""
27- mutable struct Panel{P}
27+ mutable struct Panel
2828 TE_point_1:: MVec3
2929 LE_point_1:: MVec3
3030 TE_point_2:: MVec3
@@ -36,7 +36,7 @@ mutable struct Panel{P}
3636 cl_coefficients:: Union{Nothing,Vector{Float64}}
3737 cd_coefficients:: Union{Nothing,Vector{Float64}}
3838 cm_coefficients:: Union{Nothing,Vector{Float64}}
39- polar_data:: P
39+ polar_data:: Union{Nothing, Tuple{Extrapolation}}
4040 aerodynamic_center:: MVec3
4141 control_point:: MVec3
4242 bound_point_1:: MVec3
@@ -92,6 +92,22 @@ mutable struct Panel{P}
9292 throw (ArgumentError (" Polar data must have same shape" ))
9393 end
9494 polar_data = (aero_1 + aero_2) / 2
95+ cl_interp = linear_interpolation (
96+ polar_data[:,1 ],
97+ polar_data[:,2 ];
98+ extrapolation_bc= NaN
99+ )
100+ cd_interp = linear_interpolation (
101+ polar_data[:,1 ],
102+ polar_data[:,3 ];
103+ extrapolation_bc= NaN
104+ )
105+ cm_interp = linear_interpolation (
106+ polar_data[:,1 ],
107+ polar_data[:,4 ];
108+ extrapolation_bc= NaN
109+ )
110+ polar_data = (cl_interp, cd_interp, cm_interp)
95111 elseif aero_model == " interpolations"
96112 cl_left, cd_left, cm_left = section_1. aero_input[2 ]
97113 cl_right, cd_right, cm_right = section_2. aero_input[2 ]
@@ -113,7 +129,7 @@ mutable struct Panel{P}
113129 BoundFilament (TE_point_2, bound_point_2)
114130 ]
115131
116- new {typeof(polar_data)} (
132+ new (
117133 TE_point_1, LE_point_1, TE_point_2, LE_point_2,
118134 chord, nothing , corner_points, aero_model,
119135 cl_coeffs, cd_coeffs, cm_coeffs, polar_data,
@@ -178,7 +194,7 @@ function compute_lei_coefficients(section_1::Section, section_2::Section)
178194 )
179195
180196 # Compute S values
181- S = Dict {Int ,Float64} ()
197+ S = Dict {Int64 ,Float64} ()
182198 S[9 ] = C[20 ]* t^ 2 + C[21 ]* t + C[22 ]
183199 S[10 ] = C[23 ]* t^ 2 + C[24 ]* t + C[25 ]
184200 S[11 ] = C[26 ]* t^ 2 + C[27 ]* t + C[28 ]
@@ -253,18 +269,18 @@ function calculate_cl(panel::Panel, alpha::Float64)
253269 elseif panel. aero_model == " inviscid"
254270 return 2 π * alpha
255271 elseif panel. aero_model == " polar_data"
256- return linear_interpolation (
257- panel. polar_data[:,1 ],
258- panel. polar_data[:,2 ];
259- extrapolation_bc= Line ()
260- )(alpha)
272+ return panel. polar_data[1 ](alpha)
261273 elseif panel. aero_model == " interpolations"
262274 return panel. polar_data[1 ](alpha, 0.0 )
263275 else
264276 throw (ArgumentError (" Unsupported aero model: $(panel. aero_model) " ))
265277 end
266278end
267279
280+ function calculate_cl (polar_data:: Nothing , model_type:: String , alpha:: Float64 )
281+ return 2 π * alpha
282+ end
283+
268284"""
269285 calculate_cd_cm(panel::Panel, alpha::Float64)
270286
@@ -281,19 +297,13 @@ function calculate_cd_cm(panel::Panel, alpha::Float64)
281297 elseif panel. aero_model == " inviscid"
282298 return 0.0 , 0.0
283299 elseif panel. aero_model == " polar_data"
284- cd = linear_interpolation (
285- panel. polar_data[:,1 ],
286- panel. polar_data[:,3 ];
287- extrapolation_bc= Line ()
288- )(alpha)
289- cm = linear_interpolation (
290- panel. polar_data[:,1 ],
291- panel. polar_data[:,4 ];
292- extrapolation_bc= Line ()
293- )(alpha)
300+ cd = panel. polar_data[2 ](alpha)
301+ cm = panel. polar_data[3 ](alpha)
294302 return cd, cm
295303 elseif panel. aero_model == " interpolations"
296- return panel. polar_data[2 ](alpha, 0.0 ), panel. polar_data[3 ](alpha, 0.0 )
304+ cd = panel. polar_data[2 ](alpha, 0.0 )
305+ cm = panel. polar_data[3 ](alpha, 0.0 )
306+ return cd, cm
297307 else
298308 throw (ArgumentError (" Unsupported aero model: $(panel. aero_model) " ))
299309 end
0 commit comments