管网模型(julia)

管网模型

基于管网组件,可以建立一系列的模型,进行求解

Model1

稳态模型,求解流量

模型图如下:

在这里插入图片描述

代码:

@named pump = Pump()
@named Pipe1 = SimplePipe(L=10.0)
@named valve = Valve(K = 1.0)
@named sink = Sink()
eqs = [
        connect(sink.output, pump.input)
        connect(pump.output, Pipe1.input)
        connect(Pipe1.output, valve.input)
        connect(valve.output, sink.input)
      ]

@named model = ODESystem(eqs, t, systems=[pump, Pipe1,valve,sink])
sys = structural_simplify(model)
display(sys)

u0 = [
    sink.Pressure =>0.0
     ]
prob = ODAEProblem(sys, u0, (0, 10.0))
sol = solve(prob, Tsit5())
println(sol[pump.input.Flow])

Model3

稳态模型,采用哈兰德方法求管道摩擦因数,求解流量

模型图如下:

在这里插入图片描述

代码:

@named pump = PotentialEnergy(H=0.13)
@named Pipe1 = Pipe_Haaland(L=1.8,D=50.0E-3,ρ = 998.0,ϵ=0.2E-3,μ=1.0E-3)
@named valve = Valve(K = 1.6,D=50.0E-3)
@named source = Source()
@named sink = OutletPort(D=50.0E-3)
eqs = [
        connect(source.port, pump.input)
        connect(pump.output, Pipe1.input)
        connect(Pipe1.output, valve.input)
        connect(valve.output, sink.port)
      ]
@named model = ODESystem(eqs, t, systems=[pump, Pipe1,valve,sink,source])
sys = structural_simplify(model)
display(sys)

u0 = [
    sink.Pressure =>0.0
    source.Pressure => 0.0
     ]
prob = ODAEProblem(sys, u0, (0, 1.0))
sol = solve(prob, Tsit5())
println(sol[pump.input.Flow])

Model4

动态模型,向储水箱中灌水,求解水箱水量变化

模型图如下:

在这里插入图片描述

代码:

@named source = Source()
@named pump = Pump(a = 30,b=1500)
@named Pipe1 = SimplePipe(L=1.0,D=50.0E-3,ρ = 998.0,f=0.01)
@named sink = Reservior(S=1.0)

eqs = [
        connect(source.port, pump.input)
        connect(pump.output, Pipe1.input)
        connect(Pipe1.output, sink.input)
      ]

@named model = ODESystem(eqs, t, systems=[pump, Pipe1,sink,source])
sys = structural_simplify(model)
display(sys)

u0 = [
    sink.P => 0.0
    sink.Volume =>0.0
    source.Pressure => 0.0
     ]
prob = ODAEProblem(sys, u0, (0, 6000.0))
sol = solve(prob, Tsit5())
using Plots
plot(sol,vars=[sink.Volume])

Model5

动态模型,向储水箱中灌水,同时水箱出口打开,求解水箱水量变化

模型图如下:

在这里插入图片描述

代码:

@named source = Source()
@named pump = Pump(a = 30,b=1500)
@named Pipe1 = SimplePipe(L=10.0,D=50.0E-3,ρ = 998.0,f=0.01)
@named reservior = Reservior(S=1.0,isout=1)
@named Pipe2 = SimplePipe(L=10.0,D=50.0E-3,ρ = 998.0,f=0.01)
@named sink = OutletPort(D=50.0E-3)

eqs = [
        connect(source.port, pump.input)
        connect(pump.output, Pipe1.input)
        connect(Pipe1.output, reservior.input)
        connect(reservior.output, Pipe2.input)
        connect(Pipe2.output, sink.port)       
      ]  

@named model = ODESystem(eqs, t, systems=[pump, Pipe1,Pipe2,sink,source,reservior])
sys = structural_simplify(model)
display(sys)

u0 = [
     reservior.P => 0
     reservior.Volume =>10.0
     source.Pressure => 0.0
     sink.Pressure => 0.0
     ]
prob = ODAEProblem(sys, u0, (0, 4000.0))
sol = solve(prob, Tsit5())
using Plots
p1 = plot(sol,vars=[reservior.Volume],ylims=[1,15])
p2 = plot(sol,vars=[reservior.input.Flow,reservior.output.Flow])
plot(p1,p2,layout=(2,1))
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jake484

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值