If statement If2/3在Gekko有限元法中的正交配置
我目前正在使用Gekko库开发一个动态热传递模型。该模型由偏微分方程组组成。如APMonitor平台所示,空间上变化的微分已离散,而时间上的微分已通过有限元法上的正交配置进行数值求解 我有两个问题:If statement If2/3在Gekko有限元法中的正交配置,if-statement,pde,gekko,orthogonal,collocation,If Statement,Pde,Gekko,Orthogonal,Collocation,我目前正在使用Gekko库开发一个动态热传递模型。该模型由偏微分方程组组成。如APMonitor平台所示,空间上变化的微分已离散,而时间上的微分已通过有限元法上的正交配置进行数值求解 我有两个问题: 该模型仅在空间上最多3个离散点,时间上最多30个,节点数为3。而对于节点=4,节点不遵循函数值。是什么解释了这种行为 当使用任何if2/3时,该模型均未求解。对所有类型的溶解剂进行了测试,没有一种找到了解决方案。当m.if3被m.中间产物替换时,模型正常求解。此外,如果未指定节点数,则模型最多可求
节点=4
,节点不遵循函数值。是什么解释了这种行为
节点=3
进行求解
***我还想知道如何在另一个if2/3中使用if2/3
这是模型的主要部分:
将numpy导入为np
导入数据
从func_H导入func_H
从func_KW导入func_KW
从func_den导入func_fg_cpv
从func_PG导入func_PG
从func_CPV导入func_cpv11、func_cpv21、func_cpv31、func_cpv41、func_cpv51、func_cpv6、func_cpv7、func_cpv8、func_cpv12、func_cpv22、func_cpv32、func_cpv42、func_cpv52
从func_CPL导入func_cpl11、func_cpl12、func_cpl21、func_cpl22、func_cpl31、func_cpl32、func_cpl4、func_cpl5、func_cpl6、func_cpl71、func_cpl72、func_cpl8、func_cpl9
从导入函数项中的函数项
从func_DHW导入func_DHW
将matplotlib.pyplot作为plt导入
从gekko进口gekko
m=GEKKO(远程=False)
zf=0.17
tf=768.24
dz=zf/n
n=3
nt=10
m、 时间=np.linspace(0,tf,nt)
nd=3
####################################################################################################
u=函数条件(data.tg,data.g,data.p1,data.yi[0],data.yi[1],data.yi[2],data.yi[3],data.yi[4],data.yi[5],data.yi[6],data.yi[7],n)
tg=[m.Var(u[0][i]),对于范围(n)内的i]
g=[m.Var(u[1][i])表示范围(n)内的i]
pg=[m.Var(u[2][i])表示范围(n)内的i]
tp=[m.Var(data.tp)表示范围(n)内的i]
y1=[m.Var(u[3][i][0]),对于范围(n)内的i]
y2=[m.Var(u[4][i][0]),对于范围(n)内的i]
y3=[m.Var(u[5][i][0]),对于范围(n)内的i]
y4=[m.Var(u[6][i][0]),对于范围(n)内的i]
y5=[m.Var(u[7][i][0]),对于范围(n)内的i]
y6=[m.Var(u[8][i][0]),对于范围(n)内的i]
y7=[m.Var(u[9][i][0]),对于范围(n)内的i]
y8=[m.Var(u[10][i][0]),对于范围(n)内的i]
对于范围(n)中的i,y=[np.数组([y1[i],y2[i],y3[i],y4[i],y5[i],y6[i],y7[i],y8[i]])
范围(n)内的i的yt=[np.转置(y[i])]
x1=[m.Var(data.xi[0]),适用于范围(n)内的i]
x2=[m.Var(data.xi[1])表示范围(n)内的i]
x3=[m.Var(data.xi[2]),适用于范围(n)内的i]
x4=[m.Var(data.xi[3])表示范围(n)内的i]
x5=[m.Var(data.xi[4]),适用于范围(n)内的i]
x6=[m.Var(data.xi[5]),适用于范围(n)内的i]
x7=[m.Var(data.xi[6]),适用于范围(n)内的i]
x8=[m.Var(data.xi[7]),适用于范围(n)内的i]
x9=[m.Var(data.xi[8]),对于范围(n)内的i]
对于范围(n)中的i,x=[np.数组([x1[i],x2[i],x3[i],x4[i],x5[i],x6[i],x7[i],x8[i],x9[i]])
####################################################################################################
对于范围(n)内的i,rhog=[m.Intermediate((pg[i]*(data.mmg@y[i])/(data.r*tg[i]))
kw=[m.中间值(func_-kw(g[i],tg[i],y[i],pg[i],rhog[i]),用于范围(n)内的i)]
对于范围(n)内的i,weg=[m.Intermediate(m.exp(-3.5+(0.0549/tg[i]))
wg=[m.Intermediate((pg[i]*data.mmg[3]*y4[i])/(data.r*tg[i]),用于范围(n)内的i)]
rw_f=[m.mediate(kw[i]*data.a*(weg[i]-wg[i]),用于范围(n)内的i]
rw_m=[m.中间值(rw_f[i]*1000/18.01528),适用于范围(n)内的i]
dhw=[m.中间值(函数dhw(tg[i],tp[i]),用于范围(n)内的i]
qcond=[m.中间值(rw_m[i]*dhw[i]),用于范围(n)内的i]
##热容
cpv1=[m.if2(tg[i]-700,func_cpv11(tg[i]),func_cpv12(tg[i]),用于范围(n)内的i]
cpv2=[m.if2(tg[i]-500,func_cpv21(tg[i]),func_cpv22(tg[i]),用于范围(n)内的i]
cpv3=[m.if2(tg[i]-1200,func_cpv31(tg[i]),func_cpv32(tg[i]),用于范围(n)内的i]
cpv4=[m.if2(tg[i]-1700,func_cpv41(tg[i]),func_cpv42(tg[i]),用于范围(n)内的i]
cpv5=[m.if2(tg[i]-1300,func_cpv51(tg[i]),func_cpv52(tg[i]),用于范围(n)内的i]
#cpv1=[m.中间(函数cpv11(tg[i]),用于范围(n)内的i]
#cpv2=[m.中间值(函数cpv21(tg[i]),用于范围(n)内的i]
#cpv3=[m.mediate(func_cpv31(tg[i])表示范围(n)内的i]
#cpv4=[m.mediate(func_cpv41(tg[i])表示范围(n)内的i]
#cpv5=[m.中间(函数cpv51(tg[i]),用于范围(n)内的i]
cpv6=[m.中间(函数cpv6(tg[i]),用于范围(n)内的i]
cpv7=[m.中间(函数cpv7(tg[i]),用于范围(n)内的i]
cpv8=[m.中间(函数cpv8(tg[i]),用于范围(n)内的i]
cpv=[[cpv1[i]、cpv2[i]、cpv3[i]、cpv4[i]、cpv5[i]、cpv6[i]、cpv7[i]、cpv8[i]]表示范围(n)内的i
fg_cpv=[m.中间值(func_fg_cpv(g[i],cpv[i],y[i]),用于范围(n)内的i]
对于范围(n)内的i,h=[m.中间(func_h(g[i],tg[i],y[i],cpv[i]))
qconv=[m.中间((data.a*h[i]*(tg[i]-tp[i]),用于范围(n)内的i)]
对于范围(n)内的i,p=[m.中间(func_pg(g[i],tg[i],y[i],rhog[i]))
##热容
cpl1=[m.if2(tp[i]-950,func_cpl11(tp[i]),func_cpl12(tp[i]),用于范围(n)内的i]
cpl2=[m.if2(tp[i]-900,func_cpl21(tp[i]),func_cpl22(tp[i]),用于范围(n)内的i]
cpl3=[m.if2(tp[i]-847,func_cpl31(tp[i]),func_cpl32(tp[i]),用于范围(n)内的i]
#cpl1=[m.Intermediate(func_cpl11(tp[i])表示范围(n)内的i]
#cpl2=[m.Intermediate(func_cpl21(tp[i])表示范围(n)内的i]
#cpl3=[m.Intermediate(func_cpl31(tp[i])表示范围(n)内的i]
cpl4=[m.mediate(func_cpl4(tp[i]))表示r中的i
Number of state variables: 510
Number of total equations: - 402
Number of slack variables: - 0
---------------------------------------
Degrees of freedom : 108
----------------------------------------------
Dynamic Control with APOPT Solver
----------------------------------------------
Iter Objective Convergence
0 1.67459E+11 1.01245E+05
1 +Inf 1.01245E+05
No feasible solution
---------------------------------------------------
Solver : APOPT (v1.0)
Solution time : 1.1939000000000002 sec
Objective : 108000.
Unsuccessful with error code 0
---------------------------------------------------
Creating file: infeasibilities.txt
Use command apm_get(server,app,'infeasibilities.txt') to retrieve file
@error: Solution Not Found
m.open_folder()
m.solve()