Skip to content

Commit af8a3dd

Browse files
committed
unnamespace
1 parent 9422935 commit af8a3dd

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

src/ode_system.jl

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,17 @@ function batch_ss(args...; kwargs...)
405405
[ss(l...) for l in lins], ssys, resolved_ops
406406
end
407407

408+
function unnamespace(ap)
409+
# ap_name = ap.name
410+
# new_name = join(ModelingToolkit.namespace_hierarchy(ap_name)[2:end], Symbolics.NAMESPACE_SEPARATOR)
411+
# ap2 = ModelingToolkit.@set ap.name = Symbol(new_name)
412+
# ap2
413+
414+
ap_name = ModelingToolkit.SymbolicIndexingInterface.getname(ap.input.u)
415+
new_name = join(ModelingToolkit.namespace_hierarchy(ap_name)[2:end], Symbolics.NAMESPACE_SEPARATOR)
416+
new_var = Symbolics.rename(ap.input.u, Symbol(new_name))
417+
end
418+
408419
"""
409420
linsystems, ssys = trajectory_ss(sys, inputs, outputs, sol; t = _max_100(sol.t), fuzzer=nothing, verbose = true, kwargs...)
410421
@@ -429,24 +440,24 @@ function trajectory_ss(sys, inputs, outputs, sol; t = _max_100(sol.t), allow_inp
429440

430441
# TODO: The value of the output (or input) of the input analysis points should be mapped to the perturbation vars
431442
perturbation_vars = ModelingToolkit.inputs(ssys)
432-
original_inputs = [ap.input.u for ap in vcat(inputs)] # assuming all inputs are analysis points for now
443+
original_inputs = [unnamespace(ap) for ap in vcat(inputs)] # assuming all inputs are analysis points for now
433444
op_nothing = Dict(unknowns(sys) .=> nothing) # Remove all defaults present in the original system
434445
defs = ModelingToolkit.defaults(sys)
435446
ops = map(t) do ti
436447
opsol = Dict(x => robust_sol_getindex(sol, ti, x, defs; verbose) for x in [x; original_inputs])
437448
# opsolu = Dict(new_u => robust_sol_getindex(sol, ti, u, defs; verbose) for (new_u, u) in zip(perturbation_vars, original_inputs))
438449
merge(op_nothing, opsol)
439450
end
440-
# @show ops[1]
441451
if fuzzer !== nothing
442452
opsv = map(ops) do op
443453
fuzzer(op)
444454
end
445455
ops = reduce(vcat, opsv)
446456
t = repeat(t, inner = length(ops) ÷ length(t))
447457
end
448-
lin_fun, ssys = linearization_function(sys, inputs, outputs; op=ops[1], kwargs...) # initializealg=ModelingToolkit.SciMLBase.NoInit()
458+
lin_fun, ssys = linearization_function(sys, inputs, outputs; op=ops[1], initialization_abstol=1e-2, initialization_reltol=1e-2, kwargs...) # initializealg=ModelingToolkit.SciMLBase.NoInit()
449459
lins_ops = map(zip(ops, t)) do (op, t)
460+
@show t
450461
linearize(ssys, lin_fun; op, t, allow_input_derivatives)
451462
# linearize(sys, inputs, outputs; op, t, allow_input_derivatives, initialize=false)[1]
452463
end

0 commit comments

Comments
 (0)