大尺度流域网格分块方法与流程

文档序号:14072910阅读:388来源:国知局
本发明属于流体力学和环境模拟领域,具体涉及一种大尺度流域网格分块方法。技术背景网格是将整体单元离散化,进行有限元数值模拟计算的前提。随着以有限元数值计算为基础的流体力学计算与二三维水动力水质数学模型的不断发展,计算的单元从局部逐渐拓展到流域尺度,流域尺度的模拟计算精度需求越来越高,流域计算网格越来越多,进行模拟计算的硬件条件和计算能力的不同,如何将流域海量精细网格划分为合适大小的分块网格,来适应流域的特征和计算条件,达到计算效率的最大化,是当前流域大尺度海量网格计算的重要前提,也是提高模拟能力和效率的重要技术难题。网格作为数值计算中的计算单元,当前已有成熟的商业软件可用于正交网格的绘制,还具有网格平滑、正交、删减等方法等可以用来对网格的质量进行检验或编辑。虽然通过利用这些商业软件可以根据意愿绘制合适网格数量的分块网格,但在流域范围内进行绘制时,网格的数量是海量的,要通过将每一块绘制成合适数量的网格块,需要耗费的人力和时间是巨大的。技术实现要素:本发明是为了解决上述问题而进行的,目的在于提供一种大尺度流域网格分块方法,该方法能够获得合适网格数量大小的分块网格,从而实现流域模拟效率的提高。本发明为了实现上述目的,采用了以下方案:本发明提供一种大尺度流域网格分块方法,其特征在于,包括以下步骤:步骤1.对海量精细规则网格进行分干支流管理:基于河道关系,将干支流交汇处划分为节点,在节点的基础上,将流域河道按干支流关系划分为若干河段,按照上下游关系,先对干流进行编号,遇到节点,转到对支流进行编号,再回到对干流进行编号,将河段依次进行编号,如若遇到存在二级、三级支流乃至更多及支流的情况,先将支流河段编号完整再回到对干流进行编号,由此获得对计算范围内的流域水系完整编码的河段体系;步骤2.对海量精细规则网格进行分块处理:根据河段特征,实际计算网格精度需求以及计算机器的计算速度等硬件条件,确定每一河段的分块规则网格数量和大小,对每一河段进行自动重新分块,得到合适的规则网格数量大小的分块;步骤3.对海量精细规则分块网格的边界进行交换:根据流域水系的特点,将干支流河段以及节点按照空间位置关系,分为多种类型,按照各种类型分别设置对应的边界交换规则,来实现分块网格的边界自动交换。进一步,本发明提供的大尺度流域网格分块方法,还可以具有以下特征:步骤1包括如下子步骤:步骤1-1.流域水系体结构的识别与概化:根据流域数字高程模型数据,提取流域河网,按照研究实际研究精度的需要,确定计算所需河网精细程度,即需要到几级支流,按照干支流,上下游关系,概化成平面二维正交枝状图;步骤1-2.水系河道的分段编码:根据步骤1得到的平面二维正交枝状图,首先确定干支流交汇处为节点,然后可根据二三级(三四级等)支流处分块网格数量,在二三级(三四级等)支流交汇处增加节点,并将节点按照上游往下游,先干流,遇支流转到支流,支流节点编码完成再转回干流的顺序依次编号;其次对河道进行编号,两节点之间为一河段,按照上游往下游,先干流,遇支流转到支流,支流节点编码完成再转回干流的顺序;规定沿流域主干流方向为i方向,沿水流方向i增大;沿垂直于主干流方向为j方向,沿主干流水流方向从右往左方向j增大,根据河道与节点之间的相互关系,得到河段节点关系表table_reach_n与河段信息表table_reach_m,其表结构如下列表1和表2所示;步骤1-3.水系河道的分段类型设置:将节点和河段统一按照一套规则设置类型,并给与相应的代码。表1table_reach_n的表结构表2table_reach_m的表结构进一步,本发明提供的大尺度流域网格分块方法,还可以具有以下特征:步骤1包括如下子步骤:在步骤1-3中,类型信息表table_type见下列表3所示,并给与相应的代码;河段类型分为1,2,3,4,节点类型统一为5,河段类型设置规则为:根据步骤1平面二维正交枝状图,选定主干流方向,沿主干流上游往下游方向为1,与1方向相反的为3,从上游往下游,在主干流左侧的为2,在主干流右侧的为4。表3table_type的表结构进一步,本发明提供的大尺度流域网格分块方法,还可以具有以下特征:步骤1包括如下子步骤:在步骤2中,河段特征为河段的长度和断面宽度。进一步,本发明提供的大尺度流域网格分块方法,还可以具有以下特征:步骤1包括如下子步骤:步骤2包括如下子步骤:步骤2-1.网格属性信息配置:待重新分块的分块网格有各类属性信息,网格属性信息表table_grid_a,table_grid_a信息见下列表4;每一块网格文件,存放在dat文件中,前缀为河流中文名拼音首字母缩写,主干流表示为xx_00n1_00n2,00n1表示将主干流以支流为界进行分段,分段的标号;00n2表示,每一段中每一块分块网格的编号;支流则表示为xx_00n3,n3表示支流中每一块分块网格的编号;构建原始网格信息表table_grid_old,table_grid_old表如下列表5所示:每一块网格的文件中,包含三部分,第一部分为:kib,ijb_new(1,ib),ijb_new(2,ib),ktype_ib(ib),kk_b(ib),分别为ib块编号,该块网格的起始一维化ij编号ijb_new(1,ib),该块网格的末尾一维化ij编号ijb_new(2,ib),该块所在的河段的分段类型ktype_ib(ib),该块所含的行/列数kk_b(ib),第一部分共占据一行数据;第二部分为:kip,(ij_nn(l,ip),i_nn(l,ip),j_nn(l,ip),l=1,2),分别为每一块行/列编号,l=1时,为每一行/列起始的一维化整体ij,每一行/列起始的二维的i,每一行/列起始的二维的j,当l=2时,为每一行/列末尾的一维化整体ij,每一行/列起始的二维的i,每一行/列起始的二维的j,依次排列,至kk_b(ib)行;第三部分为:ij_gn(ijm),(ij_ln(ijm,l),l=1,4),i_gn(ijm),j_gn(ijm),xn(ijm),yn(ijm),zbn(ijm),分别表示每一个网格的整体一维化ij编号,相邻位置1,2,3,4方向的网格的整体一维化ij编号,整体二维i编号,整体二维j编号,网格的x坐标,网格的y坐标,网格的高程;步骤2-2.分块条件配置:首先对分块条件进行配置,准备配置文件,名称为part_type,类型为dat文件,完整名称为part_type.dat;构建配置信息表table_grid_type,table_grid_type见下列表6,表中包含三部分信息,第一部分:与河段相关,mul_ibg,kp,mu_ibg(l_p),ijh_ibg(l_p),(ib_old(l,l_p),l=1,mu_ibg(l_p)),分别为河段数,河段序号,每一河段内包含的原始块数,每一河段网格分块数量大小,每一河段内包含的原始块的编号;第二部分,与节点相关:mu_bay,kp,ib_nu_old(l_p),mu_bay_ibg(l_p),(ib_bay_old(l,l_p),l_bay_old(l,l_p),l=1,mu_bay_ibg(l_p)),分别为节点数,节点序号,节点所在的原始块数,与节点相邻的河段数,与节点相邻的河段序号,与节点相邻的河段的方向,1为起始位置,2为末端位置;第三部分,与节点相关,为多个节点相邻的情况特殊处理:mu_bbay,kp,ip,kkk,(ib_bgbay_old(k,ip),lb_bgbay_new(k,ip),k=1,kkk),分别为存在多个节点相连的节点数,节点序号,节点原始块号,与此节点相邻的节点数,与此节点相邻的节点原始块号,此节点在相邻的节点的相对位置,只能为4,下方,或者1,左方;步骤2-3.网格自动分块:依据步骤2-2配置的分块条件,得到分块配置信息表table_grid_d,table_grid_d信息见下列表7;首先,统计每一河段l_p内的网格总数ij_sum(l_p)和河段内总的行/列数m_kk,根据设置的每一段分块文件数量大小ijh_ibg(l_p),求出每一河段自动分块的块数kt_ij,根据块数kt_ij,计算该河段分块后实际每一块的平均网格数量hij;根据分块后每一块的实际网格数量,对网格的属性进行重新配置,配置后得到河段分块信息表table_reach_fm,table_reach_fm见下列表8,将原来每块网格中对应位置处的网格信息赋予新块对应位置的网格,进而得到步骤1中每一块网格新的三部分信息。表4table_grida的表结构(网格属性信息表)表5table_grid_old(原始网格信息表)表6table_grid_type(配置信息表)表7table_gridd的表结构(分块配置信息表)表8table_reach_m的表结构(河段分块信息表)进一步,本发明提供的大尺度流域网格分块方法,还可以具有以下特征:步骤3包括如下子步骤:步骤3-1.交换边界设置:规定每一块网格的四个方向的边界用1,2,3,4来表示,具体规则如下:每一块网格左边界为1,右边界为2,上边界为3,下边界为4;当块类型为1或者3或者5的时候,交换的边界lb为lb1=1和lb2=2,当块类型为2或者4的时候,交换边界lb为lb1=3和lb2=4;步骤3-2.交换边设置:规定对于每块非节点网格,共有6条边参与交换;对于块类型为1的时候,该块中i=i(min)的边和i=i(max)的边,赋属性为3,i=i(min)+1的边,赋属性为4,i=i(min)+2的边,赋属性为5,i=i(max)-2的边,赋属性为1,i=i(max)-1的边,赋属性为2;对于块类型为3的时候,该块中i=i(min)的边和i=i(max)的边,赋属性为3,i=i(min)+1的边,赋属性为2,i=i(min)+2的边,赋属性为1,i=i(max)-2的边,赋属性为5,i=i(max)-1的边,赋属性为4;对于块类型为2的时候,该块中j=j(min)的边和j=j(max)的边,赋属性为3,j=j(min)+1的边,赋属性为4,j=j(min)+2的边,赋属性为5,j=j(max)-2的边,赋属性为1,j=j(max)-1的边,赋属性为2;对于块类型为4的时候,该块中j=j(min)的边和j=j(max)的边,赋属性为3,j=j(min)+1的边,赋属性为2,j=j(min)+2的边,赋属性为1,j=j(max)-2的边,赋属性为4,j=j(max)-1的边,赋属性为5;对于节点所在的块,针对不同的相邻类型,存在两套边的赋值方式:当节点块与相邻块在相对位置为1和2时相交,则i=i(min)+1的边,赋属性为4,i=i(min)+2的边,赋属性为5,i=i(max)-2的边,赋属性为1,i=i(max)-1的边,赋属性为2;当节点块与相邻块在相对位置为3和4时相交,则j=j(min)+1的边,赋属性为4,j=j(min)+2的边,赋属性为5,j=j(max)-2的边,赋属性为1,j=j(max)-1的边,赋属性为2。步骤3-3.参与交换的边:当块类型为1或者2的时候,对于起始端,lx=3,4,5的边参与交换,对于末端,lx=1,2,3的边参与交换;当块类型为3或4的时候,对于起始端,lx=3,2,1的边参与交换,对于末端,lx=5,4,3的边参与交换;当块类型为5的时候,对于起始端,lx=4,5的边参与交换,对于末端,lx=1,2的边参与交换;步骤3-4.边信息交换:交换的信息至少包括整体一维化ij,整体二维(i,j),(x,y,z)坐标及高程信息;两块共有一条边lx=3,第一块的lx=1,2的边将信息给第二块,第二块的lx=4,5的边将信息给第一块;与节点进行边交换,节点块lx=1,2边信息赋给非节点块,非节点块lx=3,4,5边信息赋给节点块;或者,节点块lx=4,5边信息赋给非节点块,非节点块lx=1,2,3边信息赋给节点块;步骤3-5.网格点交换属性配置:首先将每一块网格中所有点赋属性mfs=2,表示为内点;然后将边界点,即网格块中每一行/列中j最大最小/i最大最小,如(imin,j),(imax,j),(i,jmin),(i,jmax),等处的点重新赋属性mfs=1,表示外点,即边界点;其次,将每一块中,lx=2,5的边,除边界点外,重新赋属性mfs=3,表示参与信息交换的点,即交换点。发明的作用与效果本发明通过对海量精细规则网格的分干支流管理,自动分块处理和边界自动交换,来实现流域大尺度计算网格的准备,对绘制的网格进行二次处理,获得合适网格数量大小的分块网格,从而有效地提高流域模拟效率。附图说明图1为本发明实施例中大尺度流域网格分块方法的流程图;图2为本发明实施例中流域河网关系示意图;图3为本发明实施例中绘制的初始网格示意图;图4为本发明实施例中分块示意图;图5为本发明实施例中自动分块结果示意图;图6为本发明实施例中边交换示意图;图7为本发明实施例中边信息交换示意图。具体实施方式以下结合附图对本发明涉及的大尺度流域网格分块方法的具体实施方案进行详细地说明。如图1所示,本实施例所提供的大尺度流域网格分块方法包括以下步骤:(一)河段编码①节点编码:基于实际河网关系,概化概化成平面二维正交枝状图。如图2中,为三峡库区长江干流和嘉陵江、乌江、澎溪河、大宁河和香溪河等5条支流。根据权利要求2中步骤2的编码方式,首先确定干支流交汇处为节点,确定干支流交汇节点有5个,在支流澎溪河、大宁河、香溪河等支流以及三峡大坝前,根据需要,增加节点,按照从上游往下游的顺序,依次编码为jd1,jd2,……jd18。②河段编码:按照上游往下游,先干流,遇支流转到支流,支流节点编码完成再转回干流的顺序,依次对所有河段进行编码。因此三峡库区长江干流及支流内被分成36段,编码分别为hd1,hd2,……hd36。③河段节点关系构建:基于上述两步的编码,构建图2中的河段节点关系表table_reach_n如下表i:④河段原始分块信息构建,基于上述两步的编码,构建图2中的河段节点关系表table_reach_m如下表ii:表i河段节点关系表table_reach_n表ii河段信息表table_reach_m(二)自动分块①河段重新分块设置:基于上列表ii河段信息表table_reach_m,首先根据每一块中网格属性信息中ijb_new(1,ib)ijb_new(2,ib),统计每一河段的网格总数ijkk,如下表iii中总网格数;通过需求,设计每一河段分块的大小,如下表iii中分块大小,即可得到该河段新分块个数,如下表iii中新分块个数。绘制的初始网格示意图见图3,分块示意图见图4,自动分块结果示意图见图5。②分块编号重新设置:根据上一步中得到的每一河段新分块个数,根据河段的顺序,对新分块进行重新编号,得到新分块编号nfk1,nfk2,……nfk382。河段分块完成后,再根据节点顺序,对节点块进行重新编号,编号起始连接河段分块终止编号,即节点块新编号有nfk383开始,得到节点块新编号为nfk383,nfk384,……,nfk400。③分块信息重新配置:根据分块后每一块的实际网格数量,对网格的属性进行重新配置,得到河段分块信息表,见表iii,得到中每一块新的网格文件样式中的三部分信息,即将原来每块中对应位置处的网格信息赋予新块对应位置的网格。表iii河段分块信息表table_reach_fm(三)边界自动交换按照上下游关系,对每一河段上的分块网格与其上游分块网格以及下游分块网格进行相邻边界交换网格处理:①交换边设置。当块类型为1或者2的时候,对于起始端,lx=3,4,5的边参与交换,对于末端,lx=1,2,3的边参与交换。当块类型为3或4的时候,对于起始端,lx=3,2,1的边参与交换,对于末端,lx=5,4,3的边参与交换。当块类型为5的时候,对于起始端,lx=4,5的边参与交换,对于末端,lx=1,2的边参与交换。②边交换信息。交换的信息包括整体一维化ij,整体二维(i,j),(x,y,z)坐标及高程等信息。两块共有一条边lx=3,第一块的lx=1,2的边将信息给第二块,第二块的lx=4,5的边将信息给第一块。与节点进行边交换,节点块lx=1,2边信息赋给非节点块,非节点块lx=3,4,5边信息赋给节点块;或者,节点块lx=4,5边信息赋给非节点块,非节点块lx=1,2,3边信息赋给节点块。交换信息示意图见图6和图7。③网格点交换属性配置。首先将每一块网格中所有点赋属性mfs=2,表示为内点;然后将边界点,即网格块中每一行/列中j最大最小/i最大最小,如(imin,j),(imax,j),(i,jmin),(i,jmax),等处的点重新赋属性mfs=1,表示外点,即边界点;其次,将每一块中,lx=2,5的边,除边界点外,重新赋属性mfs=3,表示参与信息交换的点,即交换点。网格信息交换示意图见图7。以上实施例仅仅是对本发明技术方案所做的举例说明。本发明所涉及的大尺度流域网格分块方法并不仅仅限定于在以上实施例中所描述的内容,而是以权利要求所限定的范围为准。本发明所属领域技术人员在该实施例的基础上所做的任何修改或补充或等效替换,都在本发明的权利要求所要求保护的范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1