• 184.99 KB
  • 2页

结构化程序设计方法在计算水力学中的应用.pdf

  • 2页
  • 关注公众号即可免费下载文档
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档由网友投稿或网络整理,如有侵权请及时联系我们处理。
'笫32卷第10期人民黄河Vo1.32.No.102010年l0J1YEII()WRIVEROct..2010【水利水电工程】结构化程序设计方法在计算水力学中的应用袁月平,邱卫国,陈凯。,陈雄波(1.青岛水文水资源勘测局,山东青岛266071;2.上海交通大学农业与生物学院,上海201101;3.奉贤区水务局,上海201400;4.黄河勘测规划设计有限公司,河南郑州450003)摘要:以FORTRAN语言为平台,以二阶常微分方程数值解、遗传算法核心模块编制、SIMPLE程式核心模块编制为例,说明结构化程序设计方法在计算水力学中的应用。根据实际情况进行单个或多个模块的修改或替换,进行源程序二次开发,缩短了编制程序的周期,扩充了计算方法的适用性,有利于计算结果的后处理。若引入新的计算方法或考虑新的影响因素,能很方便地进行创新性研究。关键词:结构化程序设计;水流数值计算;FORTRAN;二次开发中图分类号:I"VI3I.4文献标识码:Adoi:10.3969/j.issn.1000—1379.2010.10.054真实的流体运动,是以非线性偏微分方程组来描述的,即仅考虑亚音速情况,不产生激波『5}l力。使时类似均匀流绕过沿流向放置的平板这样一个最简单的流对于一般流体,当考虑J=述几个作用力时,其运动规律可动问题,也需要复杂的数值方法才能获得其解析解。这样,编表示如下⋯:制计算机程序,进行数值计算是计算水力学研究工作的重要方法⋯。m=mg—一mfg一5-%鲁~5-v,‘l‘手tIL)(L2)J结构化程序设计的思想是把一个实际问题分成两部分,即式(2)中使用ff而不是,以表明黏性阻力的方向总是与流速的方向相反。经过整理,式(2)可以写成二阶微分方程的数据和过程,通过动态的程序执行过程来对静态的数据进行存一般形式:储、分析、处理,最后得出确的结果,其特点是整个程序模块化,每个模块只有一个入【1]和一个出口,每个模块都应能单独鲁:,dv:÷[l一CvIfI詈d(),]j(3),执行,Ij_尤死循环。结构化程序设计方法将整个程序逐一分式中:z为顺重力方向圆球体球心原点的距离,A、B、C的含义解,分别编译,能方便地柃查编写错误,易于保证源程序的确见文献[1]。性和易读性。在给定初始条件的情况下,采用结构化程序设计方法求解FORTRAN即“公式酬泽器”,它是世界j:最早出现的计算式(2)、式(3)。程序编制的核心有两个:①采用四阶龙格一库饥高级程序设汁语,,一泛应川=科学和_1:程计算领域,在数塔方法来求解常微分方程的初值;②将C()独提取出来,值、科学和工程计算领域发挥着重要作用。该语言强调的是町雷诺数如建立关系,作为子程序。靠性、易于验证性、概念的清晰性和实现的简化,能够与结构化程序设计思想很好地结合。现以FORTRAN语言为平台,说明2遗传算法核心模块编制结构化程序【殳讣方法扯计算水力学中的应用。1962年美国Michigan大学JohnHHolland教授发现,按照1带初值问题的二阶常微分方程数值解法类似活的有机体自然选择和杂交的自然进化方式编制的计‘算机程序能够解决复杂的优化问题,这类优化方法就是遗传算法二阶常微分万栏一股彤式为(GeneticAlgorithm,简称GA)。遗传算法是在“优胜劣汰”指导=Jf),一dt:m,,『J",)【(1)下的随机并行自适应优化方法,所编的码串相当于某群体的个体,目标函数及解变量的约束条件相当于个体所处的环境,GA当z=。时,初始条件为=和dx/dt=P0,可用龙格一库塔的运行过程就是基于个体与环境的作用进行的。实际E,遗传方法来求解⋯。算法可视为介于确定性优化方法与随机性优化方法之间的一以圆球体的自由下落为例,令质量为m、直径为d的圆球体类优化方法,随着一代代地选择、杂交和变异,GA能在解空间在密度为P的周围流体中下落,重力加速度为g。球体受到的作用力有浮力m、作用在一个加速物体上的力一1mdv、由黏性收稿日期:2010—03—17作者简介:袁月平(1966一),男,山东平度人,高级工程师,主要从事水文水资源科研工作。引起的力寻d(),其中c()为阻力系数,为流速,E—mail:qds~yp@】26toni.126. 人民黄河2010年第l0期中发掘出期望值高的域,在这些域r}】串的数口断增网格的SIMPLE算法求解水深和速度的耦合关系J。加。目前,GA已在水问题研究中得到广‘泛应用。SIMPLE程式核心模块有:①求解方程的Solve模块,将式程序编制的步骤:①根据自变量范同给定初始值,生成一(4)离散后,两个方向(向和Y向)方程未知数仅与相邻边界定量的随机数序列,叮取200个;②将白变量范同调整为(0,节点有关,可采用交替方向(ADI)上求三对角矩阵(TDMA)法2一1),进行~卜进制数卜j二进制数的转换,编程时令N=10,求解;②各控制方程赋初值的模块,采用“欠松弛”的方法,确保即2一1:1023;⑧令二进制数为字符串,进行若:符的杂矩阵的正定性;③划分网格的Setup模块,计算区域向和Y向交、变异,获得新的字符书,将此二进制数转化为十进制数;根据自变龄精度要求确定尺度长度,采用矩形或交曲线网④计算日标函数住自变变化范刚内的极值,并进行排序,采格、无结构网格等离散方程j。用选择算子,剔除最不利的若干自变量值,并补充相应的优选将3个核心模块和辅助模块按照结构化程序没计方法进值;⑤返回步骤③,直到设定的迭代次数;⑥在同标数达到极行有机连接,对挖入式港池水流结构、复式断面水流分布、河道值时的自变量即为优化结果。内桥梁建设前后流场变化等汁算效果良好。程序的3个核心模块:①2()0个随机数序列的生成,算法源程序编制可采用参考文献[3]中的方法。②在(0,1023)范围4结构化程序的二次开发内进行十进制数与二进删数的转换。令十进制数为,/l,若(,/I结构化程序设计的最大优点是整个程序模块化。在理解一512)大于或等于0,则其二进制数上的第10位数/A(10)为各个模块的编程思路以后,开发人员可以极其方便地根据自己1,否则为0;若[/A一512¨(10)一256]大于或等于0,则其二进的需要对源程序进行二次开发。制数上的第9位数,/l(9)为1,否则为0;若[IA一512IA(10)一以“二阶常微分方程的数值解法”为例,四阶龙格一库塔方2561A(9)一128]大于或等于0,则其二进制数E的第8位数法求解初值问题的源程序几乎不用改动就可以直接应用于带M(8)为1,否则为0;依此类推,可完成此算法。③冒泡法排约束情况的单摆震荡运动、球体的抛射特性等计算。“遗传序,将200个序列数对应的目标函数值按从大到小排序或者从算法程序编制”中,在冒泡法排序时,选择的排序变量为BP神小到大排序,算法源序编制仍可采用参考文献[3]中的方法。经网络的优化准则函数,对BP网络的连接权值及阈值进行将3个核心模块按照结构化程序设计方法进行有机连接,优化,得到“BP—GA”算法,结果比经典BP方法明显改进。计算了一元函数、多元函数和带约束条件下的函数极值,结果SIMPLE程式白变量计算时可进行不同步修正,改进程序的收与精确值十分接近,说明编制的程序是正确的。采用该程序进敛性;在进行水位计算时考虑动水压力梯度的影响,更接近于行多泥沙河流断面概化方程系数确定、水流挟沙能力计算效果真实值;压力与流速松弛方法可以不同,松弛系数也可以不相良好。同。根据实际情况进行单个或多个模块的修改或替换,进行源3SIMPLE程式核心模块程序二次开发,缩短r编制程序的周期,扩充了计算方法的适SIMPLE(Semi——ImplicitMethodforPressureLinkedEqua·-用性,有利于计算结果的后处理。若引入新的计算方法或考虑tions)算法是数值传热学(NHT)里最基本也是最重要的算法,新的影响闲素,能很方便地进行创新性研究。这一算法及其各种改进方案在世界各国汁算流体力学(CFD)参考文献:和数值传热学界得到广泛应用。以沿水深方向平均的平面二维水流数学模型为例:对于一般河道水流来说,由于深度尺[1]Chuen—YeBChow计算流体力学导论[M]孔祥海,译.上海:上海交通大寸比平面尺寸要小得多,物理量沿水深的分布是次要的,压力学出版社,1987.分布与静压假定t分接近,因此可以采用沿水深方向平均的平[2]金菊良_遗传算法及其在水问题中的应用[D].南京:河海大学,1998[3]徐士良.FORTRAN常用算法程序集[M].2版.北京:清华大学出版社,面二维水流数学模型计算河道流场。将水流连续方程和运动l995方程写成统一的通用微分方程:[4]李曼,刁乃仁,胡玉秋.基于Eorh-an95的SIMPLE程J芋没计[J].山东建筑工+地+:善(,)+0(,)+5程学院学报,2006,21(2):159—164.oLoxoyOxooyoy[5]陈雄波,张浩,唐梅英.三维水流方程迭代求解时的不同步修正[J].人民黄(4)河,2008,30(1):30—32式中:为通用变量;F为广义扩散系数;S为源项;为水深;[6]王莉,陈雄波,程冀宁蒙河段冲淤量和平滩流量影响因素的BP分析[J].“、分别为、Y方向的垂线平均流速。人民黄河,2009,31(11):38—39.采用有限体积法对控制方程进行离散,用交错网格或同位【责任编辑张华岩】·l27·'