Skip to content

Commit 46e525d

Browse files
committed
Speed up injective()
1 parent 11c5868 commit 46e525d

File tree

1 file changed

+17
-14
lines changed

1 file changed

+17
-14
lines changed

src/AirfoilPrep_pywrapper.jl

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -354,34 +354,37 @@ function injective(polar::Polar; start_i::Int64=2)
354354
alpha, cl = get_cl(polar)
355355
_, cd = get_cd(polar)
356356
_, cm = get_cm(polar)
357+
na = length(alpha)
357358

358359
# New polar data
359-
out_a, out_cl, out_cd, out_cm = Float64[], Float64[], Float64[], Float64[]
360-
360+
out_a, out_cl, out_cd, out_cm = zeros(na), zeros(na), zeros(na), zeros(na)
361361
# Iterates over data averaging repeated angles
362-
ave_val = Dict("a"=>0.0, "cl"=>0.0, "cd"=>0.0, "cm"=>0.0, "cum_i"=>0)
362+
ave_a, ave_cl, ave_cd, ave_cm, cum_i = 0.0, 0.0, 0.0, 0.0, 0
363+
count = 0
363364
for (i,this_a) in enumerate(alpha)
364365

365366
# Accumulates repeated values
366-
ave_val["a"] += this_a
367-
ave_val["cl"] += cl[i]
368-
ave_val["cd"] += cd[i]
369-
ave_val["cm"] += cm[i]
370-
ave_val["cum_i"] += 1
367+
ave_a += this_a
368+
ave_cl += cl[i]
369+
ave_cd += cd[i]
370+
ave_cm += cm[i]
371+
cum_i += 1
371372

372373
# Averages repeated values
373374
next_a = i!=size(alpha)[1] ? alpha[i+1] : nothing
374375
if i<start_i || this_a!=next_a
375-
push!(out_a, ave_val["a"]/ave_val["cum_i"])
376-
push!(out_cl, ave_val["cl"]/ave_val["cum_i"])
377-
push!(out_cd, ave_val["cd"]/ave_val["cum_i"])
378-
push!(out_cm, ave_val["cm"]/ave_val["cum_i"])
379-
ave_val = Dict("a"=>0.0, "cl"=>0.0, "cd"=>0.0, "cm"=>0.0, "cum_i"=>0)
376+
count += 1
377+
out_a[count] = ave_a/cum_i
378+
out_cl[count] = ave_cl/cum_i
379+
out_cd[count] = ave_cd/cum_i
380+
out_cm[count] = ave_cm/cum_i
381+
ave_a, ave_cl, ave_cd, ave_cm, cum_i = 0.0, 0.0, 0.0, 0.0, 0
380382
end
381383
end
382384

383385
# Injective polar
384-
new_polar = Polar(get_Re(polar), out_a, out_cl, out_cd, out_cm;
386+
new_polar = Polar(get_Re(polar), out_a[1:count], out_cl[1:count],
387+
out_cd[1:count], out_cm[1:count];
385388
_get_nonpypolar_args(polar)...)
386389

387390
return new_polar

0 commit comments

Comments
 (0)