@@ -405,6 +405,17 @@ function batch_ss(args...; kwargs...)
405405 [ss (l... ) for l in lins], ssys, resolved_ops
406406end
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