張 南,金 生,艾叢芳
(大連理工大學海岸和近海工程國家重點實驗室,大連116024)
三維水動力數值模擬系統的開發
張 南,金 生,艾叢芳
(大連理工大學海岸和近海工程國家重點實驗室,大連116024)
利用面向對象的程序設計方法、數據庫存儲以及新一代的圖形平臺(WPF),以多種三維計算模型為基礎,集成前處理、后處理子系統,開發實現了三維水動力數值模擬系統(HydroInfo)。該系統具有基礎資料輸入快速、建模過程自動化程度高、計算方法高效高精度、流場數據表現豐富以及輔助工具簡單實用等特點。而且搭建了快速的三維圖形系統,實現了歐拉以及拉格朗日兩種方式呈現三維流場。在計算過程中能夠分析實時計算結果,避免無效計算,提高了工作效率。以長江斗湖堤河段為例,對建模、計算及數據后處理各模塊進行驗證。
三維水動力;數值模擬;可視化
近年來,隨著計算機的發展和水流數值模型領域的擴展和研究水平的不斷深入,數值模擬越來越成為研究水流、水沙、水環境等要素變化的主要方法和重要手段[1]。特別是三維水流的數值模擬在解決實際工程應用中發揮著越來越重要的作用。目前,國外已經開發了一系列比較成熟的水流數值模擬商用軟件,如丹麥的Mike軟件、荷蘭的Delft3D和美國的SMS、Ansys等。這些軟件都集成多種數值模型并且具有強大的前后處理功能,但是缺少計算結果數據的實時處理及顯示功能。國內也涌現出很多優秀的數值模擬系統[2-6],但是可視化程度不高,數值模型不夠先進,特別在三維可視化方面顯得尤為不足。鑒于此,開發了一套集成前處理、計算和后處理等子系統于一體的三維數值模擬系統(HydroInfo)。該系統采用高效、準確的數值方法能夠模擬多種水流的運動狀態,例如常規河流、彎道水流、潰壩等流動。并且能夠輸出全部節點的數據并實時查看計算結果。特別在三維可視化方面,以WPF圖形平臺為基礎,實現了三維流場的多種顯示。該系統從底層開發,不借助其它的軟件包接口進行二次開發,具有自主的知識產權。
圖形系統開發平臺選擇Microsoft Visual Studio 2010。它具有用戶界面友好、支持面向對象的編程、支持WPF技術開發和易學易于實現等特點。
數值計算開發語言選擇FORTRAN。它最大特性是接近數學公式的自然描述,可以直接對矩陣和復數進行運算,在計算機里具有很高的執行效率。最重要的是原來已經積累了大量高效而可靠的源程序。
對于C#和FORTRAN之間的相互調用,采用文本文件或者自定義的數據文件的方式。
數據庫選擇Microsoft SQL Server 2008關系數據庫。該數據庫能提供超大型系統所需的數據庫服務。數據庫引擎充分保護數據完整性,同時將管理上千個并發修改數據庫的用戶的開銷減到最小。
三維圖形平臺選擇WPF。選擇WPF這一個新的編程模型作為圖形系統能夠產生更好的視覺效果,同時避免繪制復雜圖形時占用大量CPU,消耗大量內存,導致界面失去響應的現象發生。更為重要的是在三維圖形系統方面,WPF是基于向量的呈現引擎,并且與分辨率無關,相對于DirextX是圖形硬件的底層接口,WPF提供的是上層抽象描述了場景(scene),只要硬件支持,它就會找出最好的呈現方法。
2.1 系統總體結構設計
系統的設計采用如圖1所示的三層架構,從底層到頂層分別為數據層、邏輯層以及交互層。
數據層的數據庫提供整個系統的數據支持,包括圖形、建模、計算、水文數據等。邏輯層主要由水動力數值模型、離散方法、文件系統以及數據庫引擎組成,它是系統的核心部分。系統通過進行邏輯組織生成各種客戶應用層。邏輯層的存在使系統的可擴充性和可維護性得到了極大的提高。交互層即應用的客戶端部分,它負責與用戶打交道。交互層分為三部分:建模部分、二維流場顯示、三維模型顯示。主要提供水動力數值模擬建模、數值模型設置、模擬結果統計分析、流場分析等功能。

圖1 總體結構設計Fig.1 Design of the whole structure
2.2 軟件系統的功能設計
根據HydroInfo系統的整體結構,將系統的主要功能劃分為如圖2所示的子系統及功能模塊。系統的設計遵循模塊獨立性原則,滿足了模塊內高內聚,模塊間低耦合的軟件工程要求。
(1)問題設定子系統的主要功能是設置計算的問題類型和設置計算的輸運量。主要的問題類型包括三維自由水面模擬、潮流波浪模擬等。輸運量包括泥沙、鹽度、溫度、輸運量、COD、BOD等。每一種輸運量需要設置特定的選項,例如泥沙的設置中就包括懸移泥沙、推移泥沙、混合全沙、異重流泥沙。
(2)前處理子系統主要的功能是為模型建立提供數據,前處理子系統主要由以下幾個功能模塊組成:
1)計算域獲取:包括AutoCAD文件導入計算域和界面錄入計算域兩種方法。AutoCAD文件中用封閉的多段線(PolyLine)表示計算域邊界,其中外邊界為逆時針,內邊界為順時針。
2)初始條件設置:初始條件數據包括水位初值、流量初值以及輸運量初值等。可以通過直接輸入,粘貼輸入或者文件導入等方式將初始條件數據輸入到系統中。
3)邊界條件設置:邊界條件的設置相對復雜。第一設置邊界節點號,第二設置邊界條件類型,包括水位邊界、流量邊界、流速邊界、水位-流量關系邊界、四點潮位過程邊界等。第三設置時間單位,包括分、小時、日和月等。第四設置物理量隨時間的變化過程,與邊界條件類型相對應。在系統中有簡單的操作界面,使添加、修改、刪除邊界條件等操作變得很方便。
4)地形數據獲取:描述地形數據的文件很簡單,包括三個屬性(x,y,z),但是地形數據量通常很大而且多數的工程計算中地形數據都是以AutoCAD文件的方式提供的,所以在系統中提供讀取DXF文件地形數據的功能。同樣的地形數據也可以通過文本文件導入或者粘貼數據獲取。

圖2 HydroInfo軟件體系結構Fig.2 Architectural structure of HydroInfo
5)網格生成:采用基于Bowyer?Watson逐點插入法進行Delaunay網格生成,網格過渡均勻,能夠滿足實際工程計算域的網格劃分。在系統中,通過設置不同邊界點的網格尺度可以方便的生成均勻網格、加密網格、漸變網格等。
6)AutoCAD接口:主要是同DXF文件的交互。包括讀取DXF文件中的點、線、多段線等數據和將計算的數據導出為DXF文件等操作。
(3)模擬計算系統主要的功能是完成數值模擬計算,所包含的數值模型主要包括以下幾種:
1)三維自由水面模型:采用分層Euler?Lagrange計算模式建立了平面上非結構化網格,垂向分層動網格的三維自由水面模型計算模型。可以在保證計算精度的條件下采用很少的垂向網格,提高了計算效率。模型包括靜水壓強與動水壓強兩種計算模式,其中三維動水壓強模型可模擬粘性流體下的波浪傳播與變形。
2)N-S方程計算模型:包括二維與三維,恒定流與非恒定流,可壓流與不可壓流。可以應用VOF方法模擬自由水面問題,并包含了傳熱與自然對流、相變(結冰與融化)等專門問題。3)波浪模型:采用緩坡方程計算波浪的傳播變形與繞射反射。(4)后處理子系統主要功能是顯示計算的結果。
1)水力要素查詢:能夠以數據和折線圖兩種方式輸出每個節點和單元的水力要素過程(水位、流量、流速以及計算過程所涉及的輸運量),并且能夠輸出計算值與實測值的比較。同時具有靈活的統計功能。例如按時間步、按分辨率或者按某一個具體位置(x,y)統計水力要素過程。還可以統計剖面上平均量隨時間的變化。以及對于某個節點,水力要素以及輸運量垂向的變化等。系統能夠輸出Excel,文本,tecplot數據格式。
2)二維流場分析:能夠顯示網格,按分辨率繪制平面流場以及標量場,同時能夠進行流場的動畫模擬。
3)三維顯示:提供了多種三維模擬數據的后處理方法,包括三維地形曲面顯示、三維網格顯示、歐拉法表面流場顯示、多個置于原三維模型的截面流場顯示,截面疊加標量場顯示以及拉格朗日法示蹤球顯示,跡線顯示等,還具有流場、標量場等動畫顯示功能。
(5)常用計算工具模塊主要功能是封裝一些輔助計算的小工具。1)插值工具:具有一階插值、拉格朗日插值等基本的插值算法。
2)地形修改工:具有靈活的地形修改工具,方便在工程中挖航槽,建立護坡、護岸等地形修改。

圖3 數據庫設計Fig.3 Design of database
2.3 數據庫設計
HydroInfo系統采用數據庫的方式管理模型數據。將系統的數據庫分為4個基本的子數據庫,圖形數據庫、基本信息數據庫、建模數據庫和計算數據庫。圖形數據庫中主要存儲跟圖形相關的數據包括背景圖、衛星圖、光柵圖以及矢量圖;基本信息數據庫存儲水文的測量數據(水位、流量、含沙量等),用來對模型的參數進行率定及結果驗證;建模數據庫存儲水動力數值模擬的前處理的數據,計算數據庫主要存儲離散后的計算域數據和計算結果數據。各個子數據庫表的結構及表之間的約束關聯如圖3所示。
3.1 前處理子系統的開發
在前處理過程中與AutuoCad的交互通過DXF文件的方式實現。而DXF格式文件的讀取,則是利用StreamReader.ReadLine()函數讀取內容,并判斷是否為標識字符串(BLOCK、POINT、TEXT、LINE、POLYLINE、LAYER)。如果是,則將相應信息記錄到相應的變量中,否則繼續讀取文件,直至到達文件末尾為止。記錄信息時,可根據圖元所在的圖層進行對象性質的判別,完成建模元素不同類別信息的對應存儲。DXF文件中的圖層名稱、圖層中圖元的特性及數據含義如表1所示。
導入計算域后,將用戶設定的各個邊界節點附近的網格尺度,更新到存儲區域邊界線的hashtable中。以Delaunay方法完成網格劃分。網格生成的具體方法參見文獻[7]。網格生成后,將地形、糙率、水位初值等原始數據通過插值算法插入到網格節點上。保存所有計算參數,輸出自定義格式文件(*.dat)供Fortune計算程序調用。

表1DXF文件中的圖層內容Tab.1 Content of layers in the DXF file
3.2 模擬計算子系統的開發
根據計算參數的設定將計算參數保存在文件中,C#以可執行程序的方式調用Fortran計算程序。Fortran程序會將計算結果保存到文件中。C#讀取計算結果文件,獲取計算進度及計算的部分結果。此時可以對這部分結果進行分析,不用等全部結束以后查看結果,從而提高了工作效率。同時通過當前計算步,總計算步數,當前計算耗時,能夠估算計算的完成時間。界面可以直觀的顯示計算進度等相關信息。計算結束后通過數據轉換模塊將計算數據保存到數據庫中。數值模型的計算方法參見文獻[8-9]。

圖4 實測斷面位置Fig.4 Position of measured section
3.3 后處理子系統的開發
后處理子系統的開發主要涉及以下四方面內容:
(1)水力要素過程顯示:以DataGrid控件作為數據顯示的載體,Chart控件作為多種統計圖的載體。
(2)二維圖形繪制:涉及到邊界(多段線PolyLine)、網格和流場(直線Line)以及地形和標量場(形狀Fig?ure)等。采用WPF繪制圖形有很多類,最節省內存的,響應最快的是DrawingVisual類。使用DrawingVisual首先需要創建一個容器(從FrameworkElement繼承)和全局可視對象的集合(VisualCollection)。其次初始化一個DrawingVisual類,使用RenderOpen()獲取其DrawingContext對象,DrawingContext提供了一些繪圖方法例如DrawLine,DrawRectangle等。這里使用DrawGeometry方法,將所有的圖形轉換為一個對象統一呈現。繪制完成以后調用Close方法。另外WPF提供了方便使用的Transform類來進行坐標變換,例如平移(Trans?lateTransfrom)、縮放(SacleTransfrom)以及旋轉(RotateTransform3D)。靈活的坐標變換配合鼠標動作可以更方便的分析流場。
(3)三維圖形繪制:涉及到邊界、網格和流場(三維線段),三維地形、標量場、剖面場(三維曲面)等。將繪制三維線段的方法封裝在ScreenSpaceLines3D類中,在繪制的時候給ScreenSpaceLines3D類的Points Thickness,Color屬性賦值,WPF自動創建三維線段對象。同樣的將所有線段作為一個三維對象呈現在三維場景中,用以節省系統的開銷。繪制三維曲面的時候,需要將待繪制的曲面劃分成若干小三角形。將節點和連接關系信息賦值給Positions和TriangleIndices屬性,WPF會自動創建MeshGeometry3D對象,然后附上常用的DiffuseMaterial材質作為紋理映射。只需要將MeshGeometry3D類轉換為ModelVisual3D即可通過view?port3D類呈現三維曲面。通過Transform3DGroup對象對三維曲面進行三維坐標變換平移(TranslateTrans?from3D)、縮放(SacleTransfrom3D)以及旋轉(RotateTransform3D)來獲得更好的觀察視角。

圖5 Hydroinfo系統建模顯示Fig.5 Modeling interface in HydroInfo

圖6局部網格Fig.6 Interface of local grid

圖7 長江斗湖堤河段模擬計算界面Fig.7 Simulated interface of Douhudi reach in Yangtze River

圖8 各斷面不同起點距的垂向流速實測與計算值對比驗證Fig.8 Comparison between measured value and calculated value of vertical velocity distribution at different section
(4)動畫顯示:定義一個委托delegate用來實現繪制某一時刻流場,采用Dispatcher.BeginInvoke()方法異步執行該委托,按計算的時間順序呈現不同時刻的流場就完成了流場的動畫顯示。
以長江斗湖堤河段為例說明HydroInfo系統模擬實際工程的能力。計算域上游起始于鄭江市,下游至朱家灣,計算域內6個測量斷面的具體位置如圖4所示、地形建模如圖5所示及局部網格如圖6所示。采用40 m的網格邊長,將計算域劃分為66 474個三角形單元,33 822個網格節點,垂向分10層,局部網格如圖6所示。計算步長為1 000,時間步長0.002 h。進口給定恒定流量為6 197 m3/s,作為入流邊界條件,出口邊界按照實測的水位-流量關系控制。計算界面及流場的三維顯示如圖7所示。通過對各斷面的實測數據與模型計算所得到的數據對比驗證如圖8所示,說明了HydroInfo系統能夠對實際工程的水流狀態進行模擬,對工程應用具有十分重要的指導意義。
采用先進的圖形平臺及面向對象編程技術,開發了具有自主知識產權的、界面簡單實用以及功能完善的三維水流數值模擬系統(HydroInfo)。該系統通過DXF文件與AutoCAD軟件進行交互,包括獲取計算域,輸出網格文件等。通過基于Bowyer?Watson逐點插入算法進行Delaunay網格剖分的方法,對任意給定邊界的區域按照需求進行加密網格。通過讀取部分計算結果文件的方式,可以邊計算邊分析實時計算結果。系統中集成多種三維數值模型,計算方法高效穩定,精度高,滿足了普通計算機上進行大型的數值模擬的需求。而且具有多種方式的結果展示功能,例如水力要素隨時間的變化,流場顯示以及三維流場模擬等。通過對長江斗湖堤河段的模擬說明了HydroInfo具有較強的實用性。
HydroInfo系統雖然在算法上具有一定的先進性,但是水流的運動過程是復雜的多維過程,仍需要在算法的多樣化和模擬的精度上不斷完善。另外GIS技術在數值模擬可視化過程中的應用越來越廣泛,如何將GIS的優勢應用到現有的系統中是以后研究的重要方面。
[1]張明進,張華慶,白玉川.我國河流水流泥沙數值模擬技術進展與應用[J].水道港口,2010,32(5):329-335. ZHANG M J,ZHANG H Q,BAI Y C.Development and applications of simulating technology for river flow and sediment in water transport engineering domain of China[J].Journal of Waterway and Harbor,2010,32(5):329-335.
[2]張華慶,呂忠華,沈漢堃,等.珠江河口水沙數值模擬系統[J].水道港口,2002,23(2):51-54. ZHANG H Q,LV Z H,SHEN H K,et al.A Numerical Model of Current and Sediment in Pearl River Estuary[J].Journal of Water?way and Harbor,2002,23(2):51-54.
[3]羅秋實,朱進星,劉士和.河流數值模擬系統的開發與應用[J].武漢大學學報:工學版,2009,42(1):69-72. LUO Q S,ZHU J X,LIU S H.Development of a river numerical simulation system and its application[J].Engineering Journal of Wuhan University,2009,42(1):69-72.
[4]汪榮勝,宋立松,張澤鋒.二維水流數值模擬系統研制與應用[J].水電能源科學,2010,28(10):118-121. WANG R S,SONG L S,ZHANG Z F.Application and Developing on 2D River Numerical Simulation System[J].Water Resources and Power,2010,28(10):118-121.
[5]葉榮輝,宋志堯,沈正,等.珠江口風暴潮數值模擬系統的設計與實現[J].河海大學學報:自然科學版,2013,41(3):260-264. YE R H,SONG Z R,SHEN Z,et al.A visualization system for numerical simulation of storm surges in Pearl River Estuary[J]. Journal of Hehai University:Natural Sciences,2013,41(3):260-264.
[6]馮利軍,李競生,郭曉山.地下水數值模擬系統的設計與實現[J].煤田地質與勘探,2004,32(3):33-35. FENG L J,LI J S,GUO X S.The design and realization of groundwater numerical modeling system[J].Coal Geology&Explora?tion,2004,32(3):33-35.
[7]柏祿海,金生.帶有干濕界面的MUSCL型有限體積法[J].水動力學研究與進展:A輯,2008,23(6):639-645. BAI L H,JIN S.MUSCL?type finite?volume algorithm for shallow?water flow with wetting and drying[J].Chinese Journal of Hydro?dynamics,2008,23(6):639-645.
[8]AI Cong?fang,XING Yan,JIN Sheng.A higher?order non?hydrostatic model for simulating wave propagation over irregular bottoms [J].Journal of Hydrodynamics,2011,23(5):589-593.
[9]班胭胭,金生,丁偉業.河道三維水流數學模型計算及應用[J].水利與建筑工程學報,2013,11(4):153-156. BAN Y Y,JIN S,DING W Y.Calculation and application of mathematical model for three?dimensional river flow[J].Journal of Wa?ter Resources and Architectural Engineering,2013,11(4):153-156.
Development of 3D hydrodynamic numerical simulation system
ZHANG Nan,JIN Sheng,AI Cong?fang
(State Key Laboratory of Coastal and Offshore Engineering,Dalian University of Technology,Dalian 116024,China)
Three?dimensional hydrodynamic numerical simulation system(HydroInfo)with a variety of three?dimensional numerical model,pre?processing and processing subsystem was developed based on object?oriented programming,database storage and a new generation of graphics(WPF).It had several characteristics such as basic data input quickly,modeling process automatically,high efficiency and high precision numerical method,flow field with multiple performances and simple and practical assistant tool,etc.High?efficiency 3D graphics system had been set up,so that Eulerian and Lagrangian 3D flow field had been achieved.Real?time calculation results could be analyzed in the process of calculation avoiding useless computing,so the working efficiency was improved.Sever?al models of the HydroInfo system such as modeling,calculation and data processing had been verified according to the application of Douhudi at the Yangtze River.
3D hydrodynamic;numerical simulation;visualization
TP 311.52
A
1005-8443(2016)06-0651-06
2016-03-14;
2016-05-10
張南(1983-),女,遼寧省人,博士研究生,主要從事數值模擬和流場仿真模擬研究。
Biography:ZHANG Nan(1983-),female,doctor student.