说明


半图解法计算步骤如下:
(1)根据水位~库容关系、水位~泄流关系以及计算时段等绘制辅助曲线;
(2)确定起调水位 Z 1 Z_1 Z1​及相应的 q 1 q_1 q1​、 V 1 V_1 V1​计算各时段平均入库流量 Q p Q_p Qp​;
(3)在水位坐标轴上确定Z位置,记为a点。作水平线ac 交A线于b点,使 b c = Q p bc=Q_p bc=Qp​。因A 线为 ( V / Δ t − q / 2 ) = f 1 ( Z ) (V/\Delta t-q/2)=f_1(Z) (V/Δt−q/2)=f1​(Z),则 a b ab ab等于 ( V / Δ t − q / 2 ) (V/\Delta t-q/2) (V/Δt−q/2), a c ac ac等于 Q , + ( V Δ t − q / 2 ) = ( V / Δ t + q / 2 ) Q,+(V \Delta t- q /2)=(V/\Delta t+q/2) Q,+(VΔt−q/2)=(V/Δt+q/2)。
(4)在c点做垂线交B线于d点,由d点作水平线de 交Z坐标轴于e点,可见 d e = a c = ( V / Δ t + q / 2 ) de =ac=(V/\Delta t+q/2) de=ac=(V/Δt+q/2)。因B线为 ( V / A t + q / 2 ) = f ( Z ) (V/At+q/2)=f(Z) (V/At+q/2)=f(Z), d d d 点位于 B B B线上,则 e e e点为 Z Z Z值。
(5)过 d e de de与 C C C线交点f作垂线交 q q q坐标轴于 g g g点,则 g g g点为 q q q值。
(6)根据水量平衡得到下一时刻的 V V V。
(7)将 e e e点的 Z Z Z值作为第二时段的 Z Z Z,重复(2)~(6)即可得下一时段的特征值。由此逐时段进行计算,即可完成全部计算。

Python代码

def half_figure():z, v, q = util.ZVQ[:, 0], util.ZVQ[:, 1], util.ZVQ[:, 2]y = v*10**8/util.DT+q/2# 散点图plt.scatter(y, q, label='scatter')# 插值fyq = interpolate.interp1d(y, q, 'quadratic')ynew = np.linspace(min(y), max(y), len(y)*100)qnew = fyq(ynew)plt.plot(ynew, qnew, 'g--', label='interpolate')# 拟合z1 = np.polyfit(y, q, 3)p1 = np.poly1d(z1)plt.plot(y, p1(y), 'r-', label='polyfit')# 调整图像plt.xlabel("$\\frac{V}{\\Delta t}+\\frac{q}{2}(m^3/s)$")plt.ylabel("$q(m^3/s)$")plt.title("$q-\\frac{V}{\\Delta t}+\\frac{q}{2}$")plt.legend()plt.grid()plt.show()# 计算,采用拟合图像q_rk = util.QINT = q_rk.size(q_qs, q_ck, V, Z) = (0,  # 起始流量np.zeros(T + 1),  # 出库流量np.zeros(T + 1),  # 水库蓄水过程np.zeros(T + 1))  # 水位过程Z[0] = util.Z_fxV[0] = util.fzv(Z[0])for t in range(0, T - 1):# print("<DEBUG> time [{}]".format(t))Q_T = util.fzq(Z[t])  # 最大过流能力q_ck[t] = q_qs + Q_T  # 出库流量过程y2 = np.average([q_rk[t], q_rk[t+1]]) - q_ck[t] + V[t] / util.DT + q_ck[t] / 2  # 计算右侧q2 = p1(y2)  # 查q2q_ck[t+1] = q2  # 放进结果V[t+1] = V[t] + ((q_rk[t] + q_rk[t+1]) * util.DT / 2 - (q_ck[t] + q_ck[t+1]) * util.DT / 2)/10**8  # 水量平衡Z[t+1] = util.fvz(V[t+1])  # 水位变化print(V[t])# 画水位变化plt.plot(Z[:-1])plt.title("$Z$")plt.xlabel("$T$")plt.ylabel("$Z(m)$")zmax = (np.where(Z == np.max(Z))[0][0], np.max(Z).round(1))plt.annotate("max{}".format(zmax), xy=zmax)plt.xlim(0)plt.grid()plt.show()# 画库容变化# plt.plot(V[:-1])# plt.title("$V$")# plt.xlabel("$T$")# plt.ylabel("$V(10^8m^3)$")# plt.grid()# plt.show()# 画入流出流过程线plt.plot(q_rk, '.-', label='In')inmax = (np.where(q_rk == np.max(q_rk))[0][0], np.max(q_rk))plt.plot(q_ck[:-2], 'r--', label='Out')omax = (np.where(q_ck == np.max(q_ck))[0][0], np.max(q_ck).round(1))plt.title("$In\\quad and\\quad Out(half-figure)$")plt.xlabel("$T(\\Delta T=1h)$")plt.ylabel("$Q(m^3/s)$")plt.annotate("max{}".format(inmax), xy=inmax)plt.annotate("max{}".format(omax), xy=omax)plt.xlim(0)plt.legend()plt.grid()plt.show()

【Hydro】半图解法调洪演算步骤,附Python代码相关推荐

  1. XGBoost参数调优完全指南(附Python代码)

    XGBoost参数调优完全指南(附Python代码) 译注:文内提供的代码和运行结果有一定差异,可以从这里下载完整代码对照参考.另外,我自己跟着教程做的时候,发现我的库无法解析字符串类型的特征,所以只 ...

  2. 机器学习系列(12)_XGBoost参数调优完全指南(附Python代码)

    机器学习系列(12)_XGBoost参数调优完全指南(附Python代码) 原文链接:http://blog.csdn.net/han_xiaoyang/article/details/5266539 ...

  3. 教程 | 理解和实现自然语言处理终极指南(附Python代码)

     教程 | 理解和实现自然语言处理终极指南(附Python代码) 时间 2017-02-16 14:41:39 机器之心 原文  http://www.jiqizhixin.com/article ...

  4. python随机森林变量重要性_推荐 :一文读懂随机森林的解释和实现(附python代码)...

    原标题:推荐 :一文读懂随机森林的解释和实现(附python代码) 作者:WilliamKoehrsen:翻译:和中华:校对:李润嘉 本文约6000字,建议阅读15分钟. 本文从单棵决策树讲起,然后逐 ...

  5. 基于ANFIS的股票价格预测附Python代码

    基于ANFIS的股票价格预测附Python代码 在金融领域,股票价格预测一直是一个重要的问题.随着机器学习技术的发展,人们开始尝试使用神经网络等方法进行股票价格的预测. ANFIS(自适应网络基石推理 ...

  6. 基于TextRank算法的文本摘要(附Python代码)

    基于TextRank算法的文本摘要(附Python代码): https://www.jiqizhixin.com/articles/2018-12-28-18

  7. python 合并工作簿_Excel:快速合并多张表格或多个文件(工作簿)的数据(附Python代码)...

    Excel:快速合并多张表格或多个文件(工作簿)的数据(附Python代码) 现实工作中经常遇到将零散的原始数据合并统计的工作要求,如月度统计或年度统计等.原始数据的收集大多是按时间(如日期或小时)进 ...

  8. Excel:快速合并多张表格或多个文件(工作簿)的数据(附Python代码)

    Excel:快速合并多张表格或多个文件(工作簿)的数据(附Python代码) 现实工作中经常遇到将零散的原始数据合并统计的工作要求,如月度统计或年度统计等.原始数据的收集大多是按时间(如日期或小时)进 ...

  9. 利用OpenSearch API检索和下载数据 附Python代码实例

    利用OpenSearch API检索和下载数据 附Python代码实例 在数据下载过程中,我们常常会需要下载非常多的数据文件,这时我们可以利用wget等软件或者编写数据下载脚本来实现数据下载的批处理. ...

最新文章

  1. SpringBoot jetty webflux
  2. Android以当前Activity为基准进行截屏
  3. 《Spark核心技术与高级应用》——1.2节Spark的重要扩展
  4. Python之禅 by Tim Peters
  5. 洛谷P2055 [ZJOI2009]假期的宿舍 题解
  6. Hadoop详细配置
  7. 数据结构开发(7):典型问题分析(Bugfix)
  8. 从自媒体引流到私域池
  9. Prototype 学习——Function对象
  10. redis 删除key的命令_面试官问:Redis变慢了,你会怎么排查?
  11. 【无线网络技术】星链计划(StarLink)
  12. 区分BPSK、QPSK、8PSK和区分8QAM、16QAM、32QAM、64QAM
  13. 区块链:信仰亦需理性
  14. java分子分母的加减乘除_加减乘除四则运算
  15. Day22-Django之信号
  16. Python smtp gmail发送邮件(to,cc)
  17. 【愚公系列】2021年11月 攻防世界-进阶题-MISC-007(Aesop_secret)
  18. Nginx服务器--Nginx服务器的使用笔记
  19. 第一部分:基础知识(第一章)
  20. 荣耀砸场子 为新品造势之余还不忘暗讽小米

热门文章

  1. C语言qsort库函数
  2. 为gvim添加目录树
  3. opencv-python使用cvui编写界面
  4. 单向散列函数-指纹-哈希函数
  5. EPlan2.6版本解决卡顿未响应问题(安装防卡顿布丁)
  6. 直接import carla
  7. 07 旅游线路查询功能实现
  8. CSS背景(background)篇
  9. 解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):xxx问题
  10. CTFSHOW-爆破