Open
Description
Describe the bug 🐞
If I have a stream
connector for a concentration, sol[inlet.concentration]
should work. It doesn't, but it works for sol.outlet.concentration
.
Minimal Reproducible Example 👇
using ModelingToolkit, DifferentialEquations
using ModelingToolkit: t_nounits as t, D_nounits as D
@connector SolutionPin begin
flow(t), [connect=Flow]
conc(t), [connect=Stream]
dummy(t)
end
@mtkmodel Source begin
@components begin
outlet = SolutionPin()
end
@equations begin
outlet.flow ~ -10
outlet.conc ~ 0.3
end
end
@mtkmodel Tank begin
@components begin
inlet = SolutionPin()
end
@variables begin
product_mass(t) = 0
conc(t)
end
@equations begin
D(product_mass) ~ inlet.flow * instream(inlet.conc)
conc ~ instream(inlet.conc) # obviously not physically correct
end
end
@mtkmodel Room begin
@components begin
src = Source()
tank = Tank()
end
@equations begin
connect(src.outlet, tank.inlet)
end
end
@mtkbuild room = Room()
prob = ODEProblem(room, [], (0, 10.0), [])
sol = solve(prob)
sol[room.src.outlet.conc] # works
sol[room.src.inlet.flow] # works
sol[room.tank.inlet.conc] # ERROR: ArgumentError: tank₊inlet₊conc(t) is neither an observed nor an unknown
sol[room.tank.conc] # works
Adding instream()
does not work either (it shouldn't be required anyway).