python - 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
解决方案
推荐阅读
- django - 未在 ModelForm 上呈现脆皮表单
- image - 颤振:将CameraImage从相机插件转换为base64而不将图像存储在文件中(直接)
- java - 如何获取以 JSON 格式保存的对象并将其放入控制器中的列表或地图中
- regex - 如何以非贪婪的方式使用正则表达式提取跨越多行的字符串?
- python - 为什么执行import语句时python终端会关闭?
- javascript - 在 module.exports 中使用的函数中未定义
- swift - 如何快速将 blob 存储数据附加到 multipart/form-data
- unit-testing - 如何使用 kotlin 函数式编程来访问属性
- xamarin.forms - 如何在 App.css 页面上检索通过 AppDelegate.cs 发送的消息?
- c# - 有时无法仅在 iOS 上为 Safari 和 chrome 加载网站