Skip to content

Commit 92dca3e

Browse files
committed
Now 424 allocations
1 parent 1ee0731 commit 92dca3e

1 file changed

Lines changed: 25 additions & 18 deletions

File tree

src/solver.jl

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@ Struct for storing the solution of the [solve!](@ref) function. Must contain all
1515
- solver_status::SolverStatus: enum, see [SolverStatus](@ref)
1616
"""
1717
@with_kw mutable struct VSMSolution{P}
18+
### private vectors of solve_base
19+
x_airf_array::Matrix{Float64} = zeros(P, 3)
20+
y_airf_array::Matrix{Float64} = zeros(P, 3)
21+
z_airf_array::Matrix{Float64} = zeros(P, 3)
22+
va_array::Matrix{Float64} = zeros(P, 3)
23+
chord_array::Vector{Float64} = zeros(P)
24+
###
1825
panel_width_array::Vector{Float64} = zeros(P)
1926
cl_array::Vector{Float64} = zeros(P)
2027
cd_array::Vector{Float64} = zeros(P)
@@ -115,7 +122,7 @@ function solve!(solver::Solver, body_aero::BodyAerodynamics, gamma_distribution=
115122

116123
# calculate intermediate result
117124
(converged, body_aero, gamma_new, reference_point, density, aerodynamic_model_type, core_radius_fraction,
118-
mu, alpha_array, v_a_array, chord_array, x_airf_array, y_airf_array, z_airf_array,
125+
mu, alpha_array, v_a_array, chord_array, solver.sol.x_airf_array, solver.sol.y_airf_array, solver.sol.z_airf_array,
119126
va_array, va_norm_array, va_unit_array, panels,
120127
is_only_f_and_gamma_output) = solve_base(solver, body_aero, gamma_distribution; log, reference_point)
121128
if !isnothing(solver.sol.gamma_distribution)
@@ -159,8 +166,8 @@ function solve!(solver::Solver, body_aero::BodyAerodynamics, gamma_distribution=
159166
body_aero,
160167
gamma_new,
161168
core_radius_fraction,
162-
z_airf_array,
163-
x_airf_array,
169+
solver.sol.z_airf_array,
170+
solver.sol.x_airf_array,
164171
va_array,
165172
va_norm_array,
166173
va_unit_array
@@ -317,17 +324,17 @@ function solve_base(solver::Solver, body_aero::BodyAerodynamics, gamma_distribut
317324
relaxation_factor = solver.relaxation_factor
318325

319326
# Preallocate arrays
320-
x_airf_array = zeros(n_panels, 3)
321-
y_airf_array = zeros(n_panels, 3)
322-
z_airf_array = zeros(n_panels, 3)
327+
solver.sol.x_airf_array .= 0
328+
solver.sol.y_airf_array .= 0
329+
solver.sol.z_airf_array .= 0
323330
va_array = zeros(n_panels, 3)
324331
chord_array = zeros(n_panels)
325332

326333
# Fill arrays from panels
327334
for (i, panel) in enumerate(panels)
328-
x_airf_array[i, :] .= panel.x_airf
329-
y_airf_array[i, :] .= panel.y_airf
330-
z_airf_array[i, :] .= panel.z_airf
335+
solver.sol.x_airf_array[i, :] .= panel.x_airf
336+
solver.sol.y_airf_array[i, :] .= panel.y_airf
337+
solver.sol.z_airf_array[i, :] .= panel.z_airf
331338
va_array[i, :] .= panel.va
332339
chord_array[i] = panel.chord
333340
end
@@ -366,9 +373,9 @@ function solve_base(solver::Solver, body_aero::BodyAerodynamics, gamma_distribut
366373
gamma_initial,
367374
va_array,
368375
chord_array,
369-
x_airf_array,
370-
y_airf_array,
371-
z_airf_array,
376+
solver.sol.x_airf_array,
377+
solver.sol.y_airf_array,
378+
solver.sol.z_airf_array,
372379
panels,
373380
relaxation_factor;
374381
log
@@ -382,9 +389,9 @@ function solve_base(solver::Solver, body_aero::BodyAerodynamics, gamma_distribut
382389
gamma_initial,
383390
va_array,
384391
chord_array,
385-
x_airf_array,
386-
y_airf_array,
387-
z_airf_array,
392+
solver.sol.x_airf_array,
393+
solver.sol.y_airf_array,
394+
solver.sol.z_airf_array,
388395
panels,
389396
relaxation_factor/2;
390397
log
@@ -404,9 +411,9 @@ function solve_base(solver::Solver, body_aero::BodyAerodynamics, gamma_distribut
404411
alpha_array,
405412
v_a_array,
406413
chord_array,
407-
x_airf_array,
408-
y_airf_array,
409-
z_airf_array,
414+
solver.sol.x_airf_array,
415+
solver.sol.y_airf_array,
416+
solver.sol.z_airf_array,
410417
va_array,
411418
va_norm_array,
412419
va_unit_array,

0 commit comments

Comments
 (0)