网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 水动力数值模拟 >> 文章中心 >> CJK3D开发组 >> 文章正文
  [图文]河口海岸数值模拟可视化系统           ★★★ 【字体:
河口海岸数值模拟可视化系统
作者:cjk3d    文章来源:水资讯网    点击数:    更新时间:2007-1-14    

 

河口海岸数值模拟可视化系统

辛文杰1 陈志昌1 罗小峰21

1         南京水利科学研究院河港所 210029

2 武汉大学水利工程学院 430072

 

摘要:随着计算机技术的发展,河口海岸数学模型已经由一维发展到二维平面模型,并向三维模型发展,数值模拟已经成为河口海岸工程研究的重要手段。本文建立的系统将数学模型的前后处理以及计算结合为一个有机的整体,并能够实现计算过程的实时演示。系统采用Microsoft Visual C++编制,界面相当友好,便于操作。

 

关键词:河口海岸,数值模拟,可视化

 

 

 

1 研究背景和意义

近几十年来,随着计算机技术的发展,河口海岸数学模型已经由一维发展到二维平面模型,并向准三维和三维模型发展,数值模拟已经成为海岸工程研究的重要手段。进入上个世纪90年代以后,在计算机技术支持下,多媒体技术、大型关系数据库技术、图像处理技术、GIS/GPS/RS技术等发展迅速,它们与新的计算技术相结合,为数学模型提供了更加广阔的发展空间。

国外数值模拟系统比较成熟的有丹麦水工研究所的MIKE系统有荷兰Delft水力研究所的Delft3D,另外,英国Wallinford HR水力研究所、美国水道试验站 (WES)等也推出了各自的数值模拟系统。

国内则主要以软件包的形式,将建模、计算和演示分开,其中演示方面较为成功的有天津水运工程科学研究所的仿真动态系统软件包,其特点是可以将整个计算区域内的数字信息码转换为仿真动态直观的图像。针对目前国内数学模型计算系统的松散耦合现象,叶清华利用组件技术开发了组件式海岸工程数学模型集成系统,辛文杰[1]也开发出了滨海河口波浪水流泥沙数学模型系统。

完整的数值模拟系统包括建模、计算和演示三部分,其中建模是准备数据资料的过程,然后通过计算获得所需的数据信息并保存,最后将计算结果通过演示表达出来。应该说所有的数学模型都能够通过不同的方法来完成上述的三个步骤,但是有一个问题通常会被忽略,即计算过程中的可视化,而这正是数学模型不足于物理模型之处。那么如何将这三者集成为一个有机的系统,并能够实现计算过程中的动态演示正是关键之所在。

 

2 系统开发基本原理及功能

2.1 基本思想

系统是一个有机的整体,作为完整的系统,就必须将建模、计算和演示三者有机地结合起来。建模即通常所说的前处理,是处理计算所需的数据,为计算做准备。计算方法虽然多种多样,但都是连接计算前数据和计算后数据的纽带。演示则主要解决计算结果的表达,按表达方式可分为静态演示(单帧图片)和动态演示(连续动画),可以在计算结束后再演示,通常称之为后处理(即回放),也可以在计算过程中动态地演示(即动态观测)。

为便于功能升级和开发的连续性,该系统将建模、计算和演示封装成独立的对象,各自提供通用的接口函数,然后通过系统应用程序将各个对象有机地连接,根据不同的需要来调用相应的对象。系统的开发流程见图1

1 潮汐河口水流盐度数值模拟系统流程

2.2 开发工具

目前国内的数值模拟系统计算部分主要采用Fortran语言编制,少数采用C++Visual BasicMatlab等等。演示部分则大多数借助了一些成熟的商用软件(如SurfVis5D等)或者其它支持二次开发的软件(如MatlabMapinfoAutocad等),也有不少自行编制的后处理程序,但是通用性都不是很好。

该系统主要采用Microsoft Visual C++(以下简称VC)编制,主要考虑到VC有以下几方面的优点:VC编制的应用程序完全继承了Windows的窗体界面风格,界面相当友好,便于操作;VC具有高效的内存管理能力,可以保证稳定高速的计算;VC提供的绘图函数功能特别强大,可以绘制出24位真彩色的高清晰图形,同时可以利用双缓帧技术进行高速无闪烁的动画处理,使得动画效果非常流畅。

 

2.3 系统功能

2为数值模拟系统界面,用户可以通过菜单项、工具条、按钮、输入框及快捷键等方法来实现不同的功能。该界面由以下几部分组成:上方为标题栏、菜单和工具条;中部左侧边拦为建模及验证工具;中部右侧为客户区,主要用来演示;下部为计算及演示工具。

建模的主要功能是输入原始数据并按照计算所需的要求整理数据。根据计算所需要的数据可以分为以下几类:模型基本数据,开边界条件及初始条件,计算参数等等。

计算模块充分应用了面向对象程序的设计思想。利用VC++的指针、动态数组等技术,因此计算效率高。在关闭绘图消耗的运行条件下,计算速度比Fortran编写的数学模型程序快。计算有二维和三维两种模式,该模块会根据选择调用对应的计算模式。在计算前须选择是否计算盐度,是否开启动边界处理,是否快速计算。计算过程中可以查询任意单元当前的各物理量,计算步数及计算时间等。计算结束后可以保存初始场、验证点及采样点信息、按需要的时间间隔保存所有场的信息。

由于盐度数学模型计算的循环较多、时间较长,常规的做法就是等到计算结束后才可以查看计算结果,这样在计算过程中既不知道计算的合理程度也无法确定何时能够达到稳定的状态。例如在三维盐度计算中,通常需要数天甚至数十天的时间,如果按照以前的做法,在计算过程中只能在屏幕上输出指定单元的信息,而无法看到全场的信息,只有等到模拟结束后,才能够查看结果,而且由于计算信息量很大,无法看到详细的中间过程,为调试工作造成了很大的障碍。为此,在该系统中引入了“计算过程可视化”[3]的思想。

 

2 数值模拟系统界面

演示有三种表达方式:曲线、模型图、剖面图及模型动画。曲线主要用来显示潮位、流速流向及含盐度等验证情况。模型图则包括地形、水位场、潮流场及盐度场。地形可以有等深线、网格线及深度渲染等表现形式,而水位场和盐度场只有两种表现形式,等值线或者色域填充。流场通常通过流矢量来表示,也可以将基于欧拉法的流速场转换为基于拉格朗日跟踪质点的显示模式。模型是全三维的,支持从任意角度、任意方位去查看模型,视方位角范围为 ,视倾角范围 ,并提供漫游、镜头缩进拉出等效果。同时、这四者还可以互相组合叠加进行三维显示。剖面图是为了解各剖面的三维计算结果,可以通过设置断面号来显示对应的横向、纵向及水平剖面流场、盐度场。动画则是将上述各种图形按时间序列来连续播放。

 

3 系统编制的关键技术

3.1 数据结构表达

从整个系统流程来看,数据是联系各个模块的纽带。建模是处理数据,计算是获得数据,演示则是表达数据。那么如何建立严谨的数据结构对于演示至关重要。在潮汐河口数学模型中,变量主要有两类:标量和矢量,二者皆可以是多维的物理变量。系统借鉴了气象学上的五维数据集[2]的概念,按照定义,五维数据集用于描述物理过程的多个物理变量的空间分布和时间变化。其中与四维数据集的不同之处是内含多个物理变量,因此五维数据的表达除了四维数据表达方法外,还需要表达物理变量之间的关系。如所有时间步的整个模拟区域的盐度场,而此时由于采用相对分层,各垂向层面的实际深度还与水位场有关,这样就可以快速正确地演示盐度场与水位场的叠加。

 

3.2 图形处理

所有的图形都离不开场的信息,如果按照每个单元去着色填充,当数据量很大的时候,效率会很低,并且影响效果。本系统利用了等值线、等值面将全场信息分成若干级,然后按级进行着色、贴图或渲染,大大提高了绘图效率。VC是面向对象的编程语言,事先将等值线的数据结构封装成类,然后利用追踪出各时刻场、各个值域的等值线数据建立对象,从而绘制出可以编辑的矢量图。

颜色系统采用Windows通用的RGB(Red,Green,Blue)模式,其中各项皆可取值0255,这样画面可以达到24位真彩色。进行色域填充有两种方法,一种是根据等值线区域按照色差进行填充,这样的

  左:网格线模式

  上:深度渲染模式

 

3 三维地形的表达模式

 

图像比较显目,色差可以采用渐变模式也可以采用大色差模式,但是由于等值线值域的限制,不可能生成逼真的图像;另一种是采用无级渐变填充模式,即采用趋势面拟合,然后从最小到最大值颜色取值采用等配原则,这样生成的图像视觉效果很逼真,但是生成的速度较慢。

另外参考OpenGL的贴图技术,在三维图形中将事先准备好的高清晰无缝位图贴到陆域或边壁上,可以增强图形的立体效果,图3中模型边界上就利用了贴图技术。

 

3.3 动画演示

如何描述计算过程中的水位场或者含盐度变化的过程,这一点,物理模型可以直接满足,而数学模型就必须依赖于动画演示。过去采用的方法是预先保存好各个时刻的场图,然后用相关软件将一序列位图进行连续播放,这样做缺点是后期准备位图的工作量很大,如果减少位图的数量,动画的连续性又较差,再加上本身位图的画面就不是很清晰,影响了数学模型的整体效果。

本系统利用VC强大的绘图功能即时生成矢量场图,播放动画时,按照时间序列依次生成对应时刻的矢量场图,并覆盖前一时刻,但是演示中发现当网格单元数量很大时,画面会有明显闪烁现象,主要是由于占用内存太大时,刷屏速度跟不上造成的。为避免这种现象,采用了OpenGL中的双缓冲技术[4]。双缓冲技术,在执行绘图代码时可以在内存的缓冲区内合成渲染复杂的图像,然后用交换命令放到屏幕上,这种技术的主要用途就是制作动画。利用双缓冲技术,屏幕显示某一时刻图像的时候,其实在屏幕之外的缓冲区内已经在绘制下一时刻的图像了,通过交换命令根据需要将缓冲区生成的图像瞬间放到屏幕上,这样,在屏幕上就再也看不到画面闪烁或者停顿的现象了。

 

3.4 打印

前面描述的都是如何解决计算机屏幕的演示技术,那么我们最关心的往往是最终的打印图形。VC本身就支持打印,但是如果利用VC提供的打印支持,打印出来的画质会比较粗糙,主要是因为VC默认的映射模式是MM_TEXT ,与屏幕的分辨率对应,而打印机支持的分辨率要远远高于屏幕的分辨率。

本系统重载了VCOnPrint()函数,并选用MM_ISOTROPIC模式,该模式可以支持的最小分辨率为0.001mm,这样就可以打印出高质量的矢量图,并可以设定打印范围及打印比例。

 

4 结语

4.1 系统特点[5]

系统主要有以下几方面特点:

1.系统完全采用Windows的窗体风格,界面相当友好,且操作简便。

2.系统可以进行二维、三维水流盐度数值模拟,并可以实现二维向二维、二维向三维提供嵌套边界。

3.系统可以在计算过程中实时观察各物理量的变化过程,使得计算不是那么枯燥,同时也便于及时中断计算过程进行参数调整。

4.计算结果动态演示操作简便,可以连续播放,也可以查看每一时刻场,且支持打印当前图形。

5.系统功能升级容易,扩展性好。随着计算方法的发展改进,只要保持数据结构的一致性,就可以将不同的计算方法嵌入到该系统,而不影响整个系统的连续性。由于该系统中的各个功能是由功能模块完成的,通过增减组件还可以定制用户所需的系统环境。

 

4.2 系统局限性及展望

系统的主要缺点是只支持矩形计算网格,且水流盐度计算仅采用了目前较成熟的方法。

数值模拟的核心是计算,计算方法和模拟的精度才是评价系统优劣的重要标准。河口地区动力机制相当复杂,风浪、水流、盐度和泥沙相互作用,而各物理量均是复杂的多维过程,随着数值模拟方法在不断提高,该系统还有待在算法的多样化和模拟的精度上不断完善。

随着计算机的高速发展,GISOpenGL等技术在河口工程数值模拟的成果表达中应用已经越来越广泛,如何结合系统现有特色,借鉴其它应用技术的经验和处理方法,来进一步完善该系统的演示表达方式,做到真正意义上的数字模型。

 

参考文献

1         辛文杰,罗小峰.滨海、河口电厂取排水口冲淤变化数值模拟系统研发报告.南京水利科学研究院.2002

2         王洪庆、张焱等.气象多维数据集可视化.自然科学进展,1998(6)

3         罗小峰,辛文杰,陈志昌.泥沙数学模型可视化系统,江河湖泊泥沙研究.武汉:湖北辞书出版社,2002

4         Donald HearnM.Pauline BakerComputer GraphicsPearson EducationInc.1997

5         罗小峰.长江口水流盐度数值模拟.南京水利科学研究院.2003

 

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    滨海、河口电厂取排水口冲淤
    Visualization Simulation S
    CJK3D河口海岸数值模拟系统简
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    CJK3D河口海岸数值模拟系统版权所有1998-2007 CJK3D工作室维护制作 

    站长:cjk3d