Skip to content

sol[inlet.conc] does not work in flow connector #3416

Open
@cstjean

Description

@cstjean

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).

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions