Skip to content

Commit a274ed8

Browse files
committed
bench_simplify works
1 parent c2199d6 commit a274ed8

File tree

3 files changed

+27
-31
lines changed

3 files changed

+27
-31
lines changed

src/mtk_model.jl

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -876,7 +876,7 @@ function linear_vsm_eqs!(s, eqs, guesses; aero_force_b, aero_moment_b, group_aer
876876
return eqs, guesses
877877
end
878878

879-
function create_sys!(s::SymbolicAWEModel, system::SystemStructure; init_va_b)
879+
function create_sys!(s::SymbolicAWEModel, system::SystemStructure; init_va_b, bench=false)
880880
eqs = []
881881
defaults = Pair{Num, Any}[]
882882
guesses = Pair{Num, Any}[]
@@ -916,31 +916,15 @@ function create_sys!(s::SymbolicAWEModel, system::SystemStructure; init_va_b)
916916
eqs, defaults = wing_eqs!(s, eqs, defaults; tether_wing_force, tether_wing_moment, aero_force_b, aero_moment_b,
917917
ω_b, α_b, R_b_w, wing_pos, wing_vel, wing_acc, stabilize, fix_nonstiff)
918918
eqs = scalar_eqs!(s, eqs; R_b_w, wind_vec_gnd, va_wing_b, wing_pos, wing_vel, wing_acc, twist_angle, twist_ω, ω_b, α_b)
919-
920-
# te_I = (1/3 * (s.set.mass/8) * te_length^2)
921-
# # -damping / I * ω = α_damping
922-
# # solve for c: (c * (k*m/s^2) / (k*m^2)) * (m/s)=m/s^2 in wolframalpha
923-
# # damping should be in N*m*s
924-
# rot_damping = 0.1s.damping * te_length
925-
926-
# eqs = [
927-
# eqs
928-
# trailing_edge_α[1] ~ (force[:, s.i_A]) ⋅ e_te_A * te_length / te_I - (rot_damping[1] / te_I) * trailing_edge_ω[1] # TODO: add trailing edge
929-
# trailing_edge_α[2] ~ (force[:, s.i_B]) ⋅ e_te_B * te_length / te_I - (rot_damping[2] / te_I) * trailing_edge_ω[2]
930-
# ]
931-
919+
932920
eqs = Symbolics.scalarize.(reduce(vcat, Symbolics.scalarize.(eqs)))
933921

934-
# discrete_events = [
935-
# true => [
936-
# [Q_b_w[i] ~ normalize(Q_b_w)[i] for i in 1:4]
937-
# [twist_angle[i] ~ clamp(twist_angle[i], -π/2, π/2) for i in eachindex(s.point_groups)]
938-
# ]
939-
# ]
940-
941-
@info "Creating ODESystem"
942-
# @named sys = ODESystem(eqs, t; discrete_events)
943-
@time @named sys = ODESystem(eqs, t)
922+
! bench && @info "Creating ODESystem"
923+
if bench
924+
@named sys = ODESystem(eqs, t)
925+
else
926+
@time @named sys = ODESystem(eqs, t)
927+
end
944928

945929
defaults = [
946930
defaults

src/symbolic_awe_model.jl

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ and only update the state variables. Otherwise, it will create a new model from
301301
"""
302302
function init!(s::SymbolicAWEModel;
303303
solver=nothing, stiffness_factor = nothing, delta = nothing, adaptive=true, prn=true,
304-
precompile=false, remake=false, reload=false,
304+
precompile=false, remake=false, reload=false, bench=false,
305305
lin_outputs=Num[]
306306
)
307307
if isnothing(solver)
@@ -322,11 +322,16 @@ function init!(s::SymbolicAWEModel;
322322
init_Q_b_w, R_b_w, init_va_b = initial_orient(s)
323323
init!(s.sys_struct, s.set)
324324

325-
inputs = create_sys!(s, s.sys_struct; init_va_b)
325+
inputs = create_sys!(s, s.sys_struct; init_va_b, bench)
326326
prn && @info "Simplifying the system"
327327
@suppress_err begin
328-
prn ? (@time (sys, _) = structural_simplify(s.full_sys, (inputs, []))) :
329-
((sys, _) = structural_simplify(s.full_sys, (inputs, [])))
328+
if prn && !bench
329+
@time (sys, _) = structural_simplify(s.full_sys, (inputs, []))
330+
elseif bench
331+
return @elapsed structural_simplify(s.full_sys, (inputs, []))
332+
else
333+
(sys, _) = structural_simplify(s.full_sys, (inputs, []))
334+
end
330335
s.sys = sys
331336
end
332337
dt = SimFloat(1/s.set.sample_freq)
@@ -353,13 +358,19 @@ function init!(s::SymbolicAWEModel;
353358
end
354359
model_path = joinpath(KiteUtils.get_data_path(), get_model_name(s.set; precompile))
355360
if !ispath(model_path) || remake
356-
init(s)
361+
res = init(s)
362+
if bench
363+
return res
364+
end
357365
end
358366
_, success = reinit!(s, solver; adaptive, precompile, reload, lin_outputs, prn)
359367
if !success
360368
rm(model_path)
361369
@info "Rebuilding the system. This can take some minutes..."
362-
init(s)
370+
res = init(s)
371+
if bench
372+
return res
373+
end
363374
reinit!(s, solver; adaptive, precompile, lin_outputs, prn, reload=true)
364375
end
365376
return s.integrator

test/bench_simplify.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ rm("data/model_1.11_ram_dynamic_3_seg.bin"; force=true)
3434
# Initialize at elevation
3535
set.l_tethers[2] += 0.2
3636
set.l_tethers[3] += 0.2
37-
init!(sam; remake=false, reload=true)
37+
time = init!(sam; remake=false, reload=true, bench=true)
38+
@info "Simplify took $time seconds"
3839
sys = sam.sys
3940
nothing

0 commit comments

Comments
 (0)