首页 > 解决方案 > Python 中的 Hardy Cross

问题描述

我试图在 python 中编写代码来解决使用 Hardy Cross 的管网问题。我快完成了,但显示的结果不满足与流出交界处的水守恒。

while True:


    a1=-(kAB*GIVEN[0][3]**2+kBE*GIVEN[1][3]**2+kEI*GIVEN[2][3]**2-kIH*GIVEN[3][3]**2+kHA*GIVEN[4][3]**2)\
        /(2*(kAB*GIVEN[0][3]+kBE*GIVEN[1][3]+kEI*GIVEN[2][3]+kIH*GIVEN[3][3]+kHA*GIVEN[4][3]))
    a2=-(kBC*GIVEN[5][3]**2+kCF*GIVEN[6][3]**2+kFE*GIVEN[7][3]**2-kBE*GIVEN[1][3]**2)/(2*(kBC*GIVEN[5][3]+kCF*GIVEN[6][3]+kFE*GIVEN[7][3]+kBE*GIVEN[1][3]))
    a3=-(kCD*GIVEN[8][3]**2+kDG*GIVEN[9][3]**2+kGF*GIVEN[10][3]**2-kCF*GIVEN[6][3]**2)/(2*(kCD*GIVEN[8][3]+kDG*GIVEN[9][3]+kGF*GIVEN[10][3]+kCF*GIVEN[6][3]))
    a4=-(-kFE*GIVEN[7][3]**2-kGF*GIVEN[10][3]**2-kGJ*GIVEN[11][3]**2-kJI*GIVEN[12][3]**2-kEI*GIVEN[2][3]**2)\
        /(2*(kFE*GIVEN[7][3]+kGF*GIVEN[10][3]+kGJ*GIVEN[11][3]+kJI*GIVEN[12][3]+kEI*GIVEN[2][3]))


    if abs(a1)<0.001 and abs(a2)<0.001 and abs(a3)<0.001 and abs(a4)<0.001:
        print("P_AB = ",GIVEN[0][3]*1000,"L/s"
        break
    else:
        #compute corrected flow
        #abs function is used to remove negative when Qcorrected is used for another iteration
        GIVEN[0][3]=abs(GIVEN[0][3]+a1      )#AB
        GIVEN[1][3]=abs(GIVEN[1][3]+a1-a2   )#BE
        GIVEN[2][3]=abs(GIVEN[2][3]+a1-a4   )#EI
        GIVEN[3][3]=abs(GIVEN[3][3]-a1      )#IH
        GIVEN[4][3]=abs(GIVEN[4][3]+a1      )#HA
        GIVEN[5][3]=abs(GIVEN[5][3]+a2      )#BC
        GIVEN[6][3]=abs(GIVEN[6][3]+a2-a3   )#CF
        GIVEN[7][3]=abs(GIVEN[7][3]+a2-a4   )#FE
        GIVEN[8][3]=abs(GIVEN[8][3]+a3      )#CD
        GIVEN[9][3]=abs(GIVEN[9][3]+a3      )#DG
        GIVEN[10][3]=abs(GIVEN[10][3]+a3-a4 )#GF
        GIVEN[11][3]=abs(GIVEN[11][3]-a4    )#GJ
        GIVEN[12][3]=abs(GIVEN[12][3]-a4    )#JI

标签: pythonide

解决方案


推荐阅读