348
348
function expand_connections (sys:: AbstractSystem ; debug= false , tol= 1e-10 )
349
349
sys, csets = generate_connection_set (sys)
350
350
ceqs, instream_csets = generate_connection_equations_and_stream_connections (csets)
351
- additional_eqs = Equation[]
352
351
_sys = expand_instream (instream_csets, sys; debug= debug, tol= tol)
353
352
sys = flatten (sys, true )
354
- @set! sys. eqs = [equations (_sys); ceqs; additional_eqs ]
353
+ @set! sys. eqs = [equations (_sys); ceqs]
355
354
end
356
355
357
356
function unnamespace (root, namespace)
@@ -405,7 +404,7 @@ function expand_instream(csets::AbstractVector{<:ConnectionSet}, sys::AbstractSy
405
404
end
406
405
end
407
406
if debug
408
- @show ex idx_in_set ConnectionSet (cset)
407
+ @info " Expanding at [ $ idx_in_set] " ex ConnectionSet (cset)
409
408
@show n_inners, n_outers
410
409
end
411
410
if n_inners == 1 && n_outers == 0
@@ -493,15 +492,22 @@ function expand_instream(csets::AbstractVector{<:ConnectionSet}, sys::AbstractSy
493
492
end
494
493
end
495
494
496
- if debug
495
+ subed_eqs = substitute (instream_eqs, sub)
496
+ if debug && ! (isempty (csets) && isempty (additional_eqs) && isempty (instream_eqs))
497
+ println (" ======================================" )
497
498
@info " Additional equations" csets
498
- @show additional_eqs
499
+ display (additional_eqs)
500
+ println (" ======================================" )
499
501
println (" Substitutions" )
500
502
display (sub)
503
+ println (" ======================================" )
504
+ println (" Substituted equations" )
505
+ foreach (i-> println (instream_eqs[i] => subed_eqs[i]), eachindex (subed_eqs))
506
+ println (" ======================================" )
501
507
end
502
508
503
509
@set! sys. systems = []
504
- @set! sys. eqs = [get_eqs (sys); eqs; substitute (instream_eqs, sub) ; additional_eqs]
510
+ @set! sys. eqs = [get_eqs (sys); eqs; subed_eqs ; additional_eqs]
505
511
sys
506
512
end
507
513
@@ -517,8 +523,10 @@ function get_cset_sv(namespace, ex, csets)
517
523
idx_in_set = - 1
518
524
sv = ns_sv
519
525
for (i, c) in enumerate (csets)
526
+ crep = first (c. set)
527
+ current = namespace == crep. sys. namespace
520
528
for (j, v) in enumerate (c. set)
521
- if isequal (namespaced_var (v), full_name_sv)
529
+ if isequal (namespaced_var (v), full_name_sv) && (current || ! v . isouter)
522
530
cidx = i
523
531
idx_in_set = j
524
532
sv = v. v
@@ -527,9 +535,9 @@ function get_cset_sv(namespace, ex, csets)
527
535
end
528
536
cidx < 0 && error (" $ns_sv is not a variable inside stream connectors" )
529
537
cset = csets[cidx]. set
530
- if namespace != first (cset). sys. namespace
531
- cset = map (c-> @set (c. isouter = false ), cset)
532
- end
538
+ # if namespace != first(cset).sys.namespace
539
+ # cset = map(c->@set(c.isouter = false), cset)
540
+ # end
533
541
cset, idx_in_set, sv
534
542
end
535
543
0 commit comments