当前位置: 首页 > news >正文

Python高克勒-曼宁-斯特里克勒公式计算一维流量

📜曼宁公式-用例

📜Python流体数据统计模型和浅水渗流平流模型模拟 | 📜Python蒸发散物理问题(微积分-线性代数-拉普拉斯和傅立叶变换)

✒️Python计算一维流量

高克勒-曼宁-斯特里克勒公式公式基于一维(横截面平均)流动特性的假设,将明渠水流的水深和流速联系起来。斯特里克勒公式是对纳维-斯托克斯方程和连续性方程进行大幅简化的结果。 尽管一维方法在很大程度上已被至少二维数值模型所取代,但一维斯特里克勒公式公式仍经常用作边界条件的第一近似值。

斯特里克勒公式的基本形式为:
u = k s t ⋅ S 1 / 2 ⋅ R h 2 / 3 u=k_{s t} \cdot S^{1 / 2} \cdot R_h^{2 / 3} u=kstS1/2Rh2/3
其中,

  • u u u 是 ( m / s m / s m/s ) 中的横截面平均流速
  • k s t k_{s t} kst 是斯特里克勒系数 ( m 1 / 3 / s m ^{1 / 3} / s m1/3/s ),对应于曼宁 n m n_m nm​ 的倒数。
    • k s t ≈ 20 ( n m ≈ 0.05 ) k_{s t} \approx 20\left(n_m \approx 0.05\right) kst20(nm0.05) 对于粗糙、复杂和接近自然的河流
    • k s t ≈ 90 ( n m ≈ 0.011 ) k_{s t} \approx 90\left(n_m \approx 0.011\right) kst90(nm0.011) 用于光滑、混凝土内衬的渠道
    • k s t ≈ 26 / D 90 1 / 6 k_{s t} \approx 26 / D_{90}^{1 / 6} kst26/D901/6 (基于颗粒尺寸 D 90 D_{90} D90 进行近似,其中 90 % 90 \% 90% 的表面沉积物颗粒较小)
  • S S S 是假设的能量斜率 ( m / m ) ( m / m ) (m/m)​,可以假设其对应于稳定、均匀流动条件下的河道斜率。
  • R h R_h Rh 是水力半径(米)

水力半径 R h R_h Rh是润湿面积 A A A与润湿周长 P P P的比率。 A A A P P P 都可以作为水深 h h h 和河道底部宽度 b b b 的函数进行计算。许多河道横截面可以近似为梯形,其中水面宽度 B = b + 2 ⋅ h ⋅ m B=b+2 \cdot h \cdot m B=b+2hm(其中 m m m是下图所示的岸坡)。

因此, A A A P P P 由以下公式得出:
A = h ⋅ 0.5 ⋅ ( b + B ) = h ⋅ ( b + h ⋅ m ) P = b + 2 h ⋅ ( m 2 + 1 ) 1 / 2 \begin{gathered} A=h \cdot 0.5 \cdot(b+B)=h \cdot(b+h \cdot m) \\ P=b+2 h \cdot\left(m^2+1\right)^{1 / 2} \end{gathered} A=h0.5(b+B)=h(b+hm)P=b+2h(m2+1)1/2
最后,排水 Q ( m 3 / s ) Q\left( m ^3 / s \right) Q(m3/s)​可计算为:
Q = u ⋅ A = k s t ⋅ S 1 / 2 ⋅ R h 2 / 3 ⋅ A Q=u \cdot A=k_{s t} \cdot S^{1 / 2} \cdot R_h^{2 / 3} \cdot A Q=uA=kstS1/2Rh2/3A
编写一个脚本,将流量打印为河道底宽 b b b、岸坡 m m m、水深 h h h、坡度 S S S 和斯特里克勒系数 k s t k_{s t} kst 的函数。

def reversed_mannings_fun(tar, args):Q, b, m_l, m_r, n_m, S_0 = argsarea = ((((tar * m_l) + (tar * m_r) + b) + b) / 2) * tarperimeter = b + (tar * (m_l * m_l + 1) ** 0.5) + (tar * (m_r * m_r + 1) ** 0.5)ratio = area / perimeterreturn (Q * n_m / S_0 ** 0.5) - (area * ratio ** (2.0 / 3.0))def solve(fun, x0, precision, args):last_x = x0next_x = last_x + 10 * precision  while abs(last_x - next_x) > precision:next_y = fun(next_x, args)last_x = next_xnext_x = last_x - next_y / derivative(fun, last_x, precision, args)  # update estimate using N-Rreturn next_xdef derivative(fun, x, delta_x, args):return (fun(x + delta_x, args) - fun(x - delta_x, args)) / (2.0 * delta_x)if __name__ == '__main__':Q = 15.5        b = 5.1         m_left = 2.5   m_right = 2.5   n_m = 1/20      S_0 = 0.005     init_value = .01  args0 = [Q, b, m_left, m_right, n_m, S_0]x_found = solve(reversed_mannings_fun, init_value, init_value / 10.0, args0)print("Iterated water depth = %.3f" % x_found)

🔗参阅:亚图跨际

http://www.lryc.cn/news/351288.html

相关文章:

  • 【GD32系列--基本定时器Timer + 定时1ms 灯光间隔1s闪烁例程】
  • 第11章 集合与迭代器
  • 探索Linux中的神奇工具:探秘tail命令的妙用
  • 1688商品API接口:电商数据自动化的新引擎
  • 路由器不能端口映射什么原因?如何设置内网映射?
  • 开源RAG,本地mac启动 dify源码服务
  • 【Linux取经路】基于信号量和环形队列的生产消费者模型
  • 计算机SCI期刊,中科院2区,收稿范围非常广泛!
  • JDK、JRE、编译指令和垃圾回收机制详解
  • 【ARM 嵌入式 C 入门及渐进 6.2 -- ARMv8 C 内嵌汇编读系统寄存器的函数实现】
  • 使用 LlamaParse 进行 PDF 解析并创建知识图谱
  • Oracle行迁移解析
  • 【k8s】 busybox镜像、挂载volume卷
  • 文本三剑客之 sed 编辑器
  • 【MySQL精通之路】SQL优化(1)-查询优化(3)-索引合并
  • Linux中安装配置并使用samba服务(Centos以及Ubuntu)
  • three.js能实现啥效果?看过来,这里都是它的菜(06)
  • 利用ESP32-C3将TF卡内容变成U盘进行读取
  • C++小病毒
  • 使用VUE3+TS+elementplus创建一个增加按钮
  • Python面试宝典:文件读写和上下文管理器以及输入输出流面试题(1000加python面试题助你轻松捕获大厂Offer)
  • Spring Boot | Spring Boot 实现 “记住我“ 功能
  • AGM AG32 MCU替代GD32F407/STM32F407的手持示波器方案
  • MongoDB基础入门到深入(八)MongoDB整合SpringBoot、Chang Streams
  • linux下的nfs概述与实验(openEuler22.03)
  • 影响Oracle数据库打开速度的因素
  • dify:开源 LLMOps平台。
  • CCF20220601——归一化处理
  • 用Ai编写一个电机驱动程序
  • 【C++入门】—— C++入门 (下)_内联函数