Skip to content

Commit a251165

Browse files
authored
Merge pull request #1541 from SciML/myb/instream
Better instream expansion diagnostics and bug fix
2 parents 3fd7519 + 186b45e commit a251165

File tree

2 files changed

+21
-13
lines changed

2 files changed

+21
-13
lines changed

src/systems/connectors.jl

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -348,10 +348,9 @@ end
348348
function expand_connections(sys::AbstractSystem; debug=false, tol=1e-10)
349349
sys, csets = generate_connection_set(sys)
350350
ceqs, instream_csets = generate_connection_equations_and_stream_connections(csets)
351-
additional_eqs = Equation[]
352351
_sys = expand_instream(instream_csets, sys; debug=debug, tol=tol)
353352
sys = flatten(sys, true)
354-
@set! sys.eqs = [equations(_sys); ceqs; additional_eqs]
353+
@set! sys.eqs = [equations(_sys); ceqs]
355354
end
356355

357356
function unnamespace(root, namespace)
@@ -405,7 +404,7 @@ function expand_instream(csets::AbstractVector{<:ConnectionSet}, sys::AbstractSy
405404
end
406405
end
407406
if debug
408-
@show ex idx_in_set ConnectionSet(cset)
407+
@info "Expanding at [$idx_in_set]" ex ConnectionSet(cset)
409408
@show n_inners, n_outers
410409
end
411410
if n_inners == 1 && n_outers == 0
@@ -493,15 +492,22 @@ function expand_instream(csets::AbstractVector{<:ConnectionSet}, sys::AbstractSy
493492
end
494493
end
495494

496-
if debug
495+
subed_eqs = substitute(instream_eqs, sub)
496+
if debug && !(isempty(csets) && isempty(additional_eqs) && isempty(instream_eqs))
497+
println("======================================")
497498
@info "Additional equations" csets
498-
@show additional_eqs
499+
display(additional_eqs)
500+
println("======================================")
499501
println("Substitutions")
500502
display(sub)
503+
println("======================================")
504+
println("Substituted equations")
505+
foreach(i->println(instream_eqs[i] => subed_eqs[i]), eachindex(subed_eqs))
506+
println("======================================")
501507
end
502508

503509
@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]
505511
sys
506512
end
507513

@@ -517,8 +523,10 @@ function get_cset_sv(namespace, ex, csets)
517523
idx_in_set = -1
518524
sv = ns_sv
519525
for (i, c) in enumerate(csets)
526+
crep = first(c.set)
527+
current = namespace == crep.sys.namespace
520528
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)
522530
cidx = i
523531
idx_in_set = j
524532
sv = v.v
@@ -527,9 +535,9 @@ function get_cset_sv(namespace, ex, csets)
527535
end
528536
cidx < 0 && error("$ns_sv is not a variable inside stream connectors")
529537
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
533541
cset, idx_in_set, sv
534542
end
535543

test/runtests.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,7 @@ using SafeTestsets, Test
1515
@safetestset "SteadyStateSystem Test" begin include("steadystatesystems.jl") end
1616
@safetestset "SDESystem Test" begin include("sdesystem.jl") end
1717
@safetestset "NonlinearSystem Test" begin include("nonlinearsystem.jl") end
18-
@safetestset "OptimizationSystem Test" begin include("optimizationsystem.jl") end
1918
@safetestset "JumpSystem Test" begin include("jumpsystem.jl") end
20-
@safetestset "ControlSystem Test" begin include("controlsystem.jl") end
21-
@safetestset "Modelingtoolkitize Test" begin include("modelingtoolkitize.jl") end
2219
@safetestset "Constraints Test" begin include("constraints.jl") end
2320
@safetestset "Reduction Test" begin include("reduction.jl") end
2421
@safetestset "Components Test" begin include("components.jl") end
@@ -41,6 +38,9 @@ println("Last test requires gcc available in the path!")
4138
@safetestset "error_handling" begin include("error_handling.jl") end
4239
@safetestset "root_equations" begin include("root_equations.jl") end
4340
@safetestset "state_selection" begin include("state_selection.jl") end
41+
@safetestset "Modelingtoolkitize Test" begin include("modelingtoolkitize.jl") end
42+
@safetestset "ControlSystem Test" begin include("controlsystem.jl") end
43+
@safetestset "OptimizationSystem Test" begin include("optimizationsystem.jl") end
4444

4545
# Reference tests go Last
4646
@safetestset "Latexify recipes Test" begin include("latexify.jl") end

0 commit comments

Comments
 (0)