張 南,金 生,艾叢芳
(大連理工大學海岸和近海工程國家重點實驗室,大連116024)
三維水動力數(shù)值模擬系統(tǒng)的開發(fā)
張 南,金 生,艾叢芳
(大連理工大學海岸和近海工程國家重點實驗室,大連116024)
利用面向?qū)ο蟮某绦蛟O計方法、數(shù)據(jù)庫存儲以及新一代的圖形平臺(WPF),以多種三維計算模型為基礎,集成前處理、后處理子系統(tǒng),開發(fā)實現(xiàn)了三維水動力數(shù)值模擬系統(tǒng)(HydroInfo)。該系統(tǒng)具有基礎資料輸入快速、建模過程自動化程度高、計算方法高效高精度、流場數(shù)據(jù)表現(xiàn)豐富以及輔助工具簡單實用等特點。而且搭建了快速的三維圖形系統(tǒng),實現(xiàn)了歐拉以及拉格朗日兩種方式呈現(xiàn)三維流場。在計算過程中能夠分析實時計算結果,避免無效計算,提高了工作效率。以長江斗湖堤河段為例,對建模、計算及數(shù)據(jù)后處理各模塊進行驗證。
三維水動力;數(shù)值模擬;可視化
近年來,隨著計算機的發(fā)展和水流數(shù)值模型領域的擴展和研究水平的不斷深入,數(shù)值模擬越來越成為研究水流、水沙、水環(huán)境等要素變化的主要方法和重要手段[1]。特別是三維水流的數(shù)值模擬在解決實際工程應用中發(fā)揮著越來越重要的作用。目前,國外已經(jīng)開發(fā)了一系列比較成熟的水流數(shù)值模擬商用軟件,如丹麥的Mike軟件、荷蘭的Delft3D和美國的SMS、Ansys等。這些軟件都集成多種數(shù)值模型并且具有強大的前后處理功能,但是缺少計算結果數(shù)據(jù)的實時處理及顯示功能。國內(nèi)也涌現(xiàn)出很多優(yōu)秀的數(shù)值模擬系統(tǒng)[2-6],但是可視化程度不高,數(shù)值模型不夠先進,特別在三維可視化方面顯得尤為不足。鑒于此,開發(fā)了一套集成前處理、計算和后處理等子系統(tǒng)于一體的三維數(shù)值模擬系統(tǒng)(HydroInfo)。該系統(tǒng)采用高效、準確的數(shù)值方法能夠模擬多種水流的運動狀態(tài),例如常規(guī)河流、彎道水流、潰壩等流動。并且能夠輸出全部節(jié)點的數(shù)據(jù)并實時查看計算結果。特別在三維可視化方面,以WPF圖形平臺為基礎,實現(xiàn)了三維流場的多種顯示。該系統(tǒng)從底層開發(fā),不借助其它的軟件包接口進行二次開發(fā),具有自主的知識產(chǎn)權。
圖形系統(tǒng)開發(fā)平臺選擇Microsoft Visual Studio 2010。它具有用戶界面友好、支持面向?qū)ο蟮木幊?、支持WPF技術開發(fā)和易學易于實現(xiàn)等特點。
數(shù)值計算開發(fā)語言選擇FORTRAN。它最大特性是接近數(shù)學公式的自然描述,可以直接對矩陣和復數(shù)進行運算,在計算機里具有很高的執(zhí)行效率。最重要的是原來已經(jīng)積累了大量高效而可靠的源程序。
對于C#和FORTRAN之間的相互調(diào)用,采用文本文件或者自定義的數(shù)據(jù)文件的方式。
數(shù)據(jù)庫選擇Microsoft SQL Server 2008關系數(shù)據(jù)庫。該數(shù)據(jù)庫能提供超大型系統(tǒng)所需的數(shù)據(jù)庫服務。數(shù)據(jù)庫引擎充分保護數(shù)據(jù)完整性,同時將管理上千個并發(fā)修改數(shù)據(jù)庫的用戶的開銷減到最小。
三維圖形平臺選擇WPF。選擇WPF這一個新的編程模型作為圖形系統(tǒng)能夠產(chǎn)生更好的視覺效果,同時避免繪制復雜圖形時占用大量CPU,消耗大量內(nèi)存,導致界面失去響應的現(xiàn)象發(fā)生。更為重要的是在三維圖形系統(tǒng)方面,WPF是基于向量的呈現(xiàn)引擎,并且與分辨率無關,相對于DirextX是圖形硬件的底層接口,WPF提供的是上層抽象描述了場景(scene),只要硬件支持,它就會找出最好的呈現(xiàn)方法。
2.1 系統(tǒng)總體結構設計
系統(tǒng)的設計采用如圖1所示的三層架構,從底層到頂層分別為數(shù)據(jù)層、邏輯層以及交互層。
數(shù)據(jù)層的數(shù)據(jù)庫提供整個系統(tǒng)的數(shù)據(jù)支持,包括圖形、建模、計算、水文數(shù)據(jù)等。邏輯層主要由水動力數(shù)值模型、離散方法、文件系統(tǒng)以及數(shù)據(jù)庫引擎組成,它是系統(tǒng)的核心部分。系統(tǒng)通過進行邏輯組織生成各種客戶應用層。邏輯層的存在使系統(tǒng)的可擴充性和可維護性得到了極大的提高。交互層即應用的客戶端部分,它負責與用戶打交道。交互層分為三部分:建模部分、二維流場顯示、三維模型顯示。主要提供水動力數(shù)值模擬建模、數(shù)值模型設置、模擬結果統(tǒng)計分析、流場分析等功能。
圖1 總體結構設計Fig.1 Design of the whole structure
2.2 軟件系統(tǒng)的功能設計
根據(jù)HydroInfo系統(tǒng)的整體結構,將系統(tǒng)的主要功能劃分為如圖2所示的子系統(tǒng)及功能模塊。系統(tǒng)的設計遵循模塊獨立性原則,滿足了模塊內(nèi)高內(nèi)聚,模塊間低耦合的軟件工程要求。
(1)問題設定子系統(tǒng)的主要功能是設置計算的問題類型和設置計算的輸運量。主要的問題類型包括三維自由水面模擬、潮流波浪模擬等。輸運量包括泥沙、鹽度、溫度、輸運量、COD、BOD等。每一種輸運量需要設置特定的選項,例如泥沙的設置中就包括懸移泥沙、推移泥沙、混合全沙、異重流泥沙。
(2)前處理子系統(tǒng)主要的功能是為模型建立提供數(shù)據(jù),前處理子系統(tǒng)主要由以下幾個功能模塊組成:
1)計算域獲取:包括AutoCAD文件導入計算域和界面錄入計算域兩種方法。AutoCAD文件中用封閉的多段線(PolyLine)表示計算域邊界,其中外邊界為逆時針,內(nèi)邊界為順時針。
2)初始條件設置:初始條件數(shù)據(jù)包括水位初值、流量初值以及輸運量初值等。可以通過直接輸入,粘貼輸入或者文件導入等方式將初始條件數(shù)據(jù)輸入到系統(tǒng)中。
3)邊界條件設置:邊界條件的設置相對復雜。第一設置邊界節(jié)點號,第二設置邊界條件類型,包括水位邊界、流量邊界、流速邊界、水位-流量關系邊界、四點潮位過程邊界等。第三設置時間單位,包括分、小時、日和月等。第四設置物理量隨時間的變化過程,與邊界條件類型相對應。在系統(tǒng)中有簡單的操作界面,使添加、修改、刪除邊界條件等操作變得很方便。
4)地形數(shù)據(jù)獲取:描述地形數(shù)據(jù)的文件很簡單,包括三個屬性(x,y,z),但是地形數(shù)據(jù)量通常很大而且多數(shù)的工程計算中地形數(shù)據(jù)都是以AutoCAD文件的方式提供的,所以在系統(tǒng)中提供讀取DXF文件地形數(shù)據(jù)的功能。同樣的地形數(shù)據(jù)也可以通過文本文件導入或者粘貼數(shù)據(jù)獲取。
圖2 HydroInfo軟件體系結構Fig.2 Architectural structure of HydroInfo
5)網(wǎng)格生成:采用基于Bowyer?Watson逐點插入法進行Delaunay網(wǎng)格生成,網(wǎng)格過渡均勻,能夠滿足實際工程計算域的網(wǎng)格劃分。在系統(tǒng)中,通過設置不同邊界點的網(wǎng)格尺度可以方便的生成均勻網(wǎng)格、加密網(wǎng)格、漸變網(wǎng)格等。
6)AutoCAD接口:主要是同DXF文件的交互。包括讀取DXF文件中的點、線、多段線等數(shù)據(jù)和將計算的數(shù)據(jù)導出為DXF文件等操作。
(3)模擬計算系統(tǒng)主要的功能是完成數(shù)值模擬計算,所包含的數(shù)值模型主要包括以下幾種:
1)三維自由水面模型:采用分層Euler?Lagrange計算模式建立了平面上非結構化網(wǎng)格,垂向分層動網(wǎng)格的三維自由水面模型計算模型??梢栽诒WC計算精度的條件下采用很少的垂向網(wǎng)格,提高了計算效率。模型包括靜水壓強與動水壓強兩種計算模式,其中三維動水壓強模型可模擬粘性流體下的波浪傳播與變形。
2)N-S方程計算模型:包括二維與三維,恒定流與非恒定流,可壓流與不可壓流??梢詰肰OF方法模擬自由水面問題,并包含了傳熱與自然對流、相變(結冰與融化)等專門問題。3)波浪模型:采用緩坡方程計算波浪的傳播變形與繞射反射。(4)后處理子系統(tǒng)主要功能是顯示計算的結果。
1)水力要素查詢:能夠以數(shù)據(jù)和折線圖兩種方式輸出每個節(jié)點和單元的水力要素過程(水位、流量、流速以及計算過程所涉及的輸運量),并且能夠輸出計算值與實測值的比較。同時具有靈活的統(tǒng)計功能。例如按時間步、按分辨率或者按某一個具體位置(x,y)統(tǒng)計水力要素過程。還可以統(tǒng)計剖面上平均量隨時間的變化。以及對于某個節(jié)點,水力要素以及輸運量垂向的變化等。系統(tǒng)能夠輸出Excel,文本,tecplot數(shù)據(jù)格式。
2)二維流場分析:能夠顯示網(wǎng)格,按分辨率繪制平面流場以及標量場,同時能夠進行流場的動畫模擬。
3)三維顯示:提供了多種三維模擬數(shù)據(jù)的后處理方法,包括三維地形曲面顯示、三維網(wǎng)格顯示、歐拉法表面流場顯示、多個置于原三維模型的截面流場顯示,截面疊加標量場顯示以及拉格朗日法示蹤球顯示,跡線顯示等,還具有流場、標量場等動畫顯示功能。
(5)常用計算工具模塊主要功能是封裝一些輔助計算的小工具。1)插值工具:具有一階插值、拉格朗日插值等基本的插值算法。
2)地形修改工:具有靈活的地形修改工具,方便在工程中挖航槽,建立護坡、護岸等地形修改。
圖3 數(shù)據(jù)庫設計Fig.3 Design of database
2.3 數(shù)據(jù)庫設計
HydroInfo系統(tǒng)采用數(shù)據(jù)庫的方式管理模型數(shù)據(jù)。將系統(tǒng)的數(shù)據(jù)庫分為4個基本的子數(shù)據(jù)庫,圖形數(shù)據(jù)庫、基本信息數(shù)據(jù)庫、建模數(shù)據(jù)庫和計算數(shù)據(jù)庫。圖形數(shù)據(jù)庫中主要存儲跟圖形相關的數(shù)據(jù)包括背景圖、衛(wèi)星圖、光柵圖以及矢量圖;基本信息數(shù)據(jù)庫存儲水文的測量數(shù)據(jù)(水位、流量、含沙量等),用來對模型的參數(shù)進行率定及結果驗證;建模數(shù)據(jù)庫存儲水動力數(shù)值模擬的前處理的數(shù)據(jù),計算數(shù)據(jù)庫主要存儲離散后的計算域數(shù)據(jù)和計算結果數(shù)據(jù)。各個子數(shù)據(jù)庫表的結構及表之間的約束關聯(lián)如圖3所示。
3.1 前處理子系統(tǒng)的開發(fā)
在前處理過程中與AutuoCad的交互通過DXF文件的方式實現(xiàn)。而DXF格式文件的讀取,則是利用StreamReader.ReadLine()函數(shù)讀取內(nèi)容,并判斷是否為標識字符串(BLOCK、POINT、TEXT、LINE、POLYLINE、LAYER)。如果是,則將相應信息記錄到相應的變量中,否則繼續(xù)讀取文件,直至到達文件末尾為止。記錄信息時,可根據(jù)圖元所在的圖層進行對象性質(zhì)的判別,完成建模元素不同類別信息的對應存儲。DXF文件中的圖層名稱、圖層中圖元的特性及數(shù)據(jù)含義如表1所示。
導入計算域后,將用戶設定的各個邊界節(jié)點附近的網(wǎng)格尺度,更新到存儲區(qū)域邊界線的hashtable中。以Delaunay方法完成網(wǎng)格劃分。網(wǎng)格生成的具體方法參見文獻[7]。網(wǎng)格生成后,將地形、糙率、水位初值等原始數(shù)據(jù)通過插值算法插入到網(wǎng)格節(jié)點上。保存所有計算參數(shù),輸出自定義格式文件(*.dat)供Fortune計算程序調(diào)用。
表1DXF文件中的圖層內(nèi)容Tab.1 Content of layers in the DXF file
3.2 模擬計算子系統(tǒng)的開發(fā)
根據(jù)計算參數(shù)的設定將計算參數(shù)保存在文件中,C#以可執(zhí)行程序的方式調(diào)用Fortran計算程序。Fortran程序會將計算結果保存到文件中。C#讀取計算結果文件,獲取計算進度及計算的部分結果。此時可以對這部分結果進行分析,不用等全部結束以后查看結果,從而提高了工作效率。同時通過當前計算步,總計算步數(shù),當前計算耗時,能夠估算計算的完成時間。界面可以直觀的顯示計算進度等相關信息。計算結束后通過數(shù)據(jù)轉(zhuǎn)換模塊將計算數(shù)據(jù)保存到數(shù)據(jù)庫中。數(shù)值模型的計算方法參見文獻[8-9]。
圖4 實測斷面位置Fig.4 Position of measured section
3.3 后處理子系統(tǒng)的開發(fā)
后處理子系統(tǒng)的開發(fā)主要涉及以下四方面內(nèi)容:
(1)水力要素過程顯示:以DataGrid控件作為數(shù)據(jù)顯示的載體,Chart控件作為多種統(tǒng)計圖的載體。
(2)二維圖形繪制:涉及到邊界(多段線PolyLine)、網(wǎng)格和流場(直線Line)以及地形和標量場(形狀Fig?ure)等。采用WPF繪制圖形有很多類,最節(jié)省內(nèi)存的,響應最快的是DrawingVisual類。使用DrawingVisual首先需要創(chuàng)建一個容器(從FrameworkElement繼承)和全局可視對象的集合(VisualCollection)。其次初始化一個DrawingVisual類,使用RenderOpen()獲取其DrawingContext對象,DrawingContext提供了一些繪圖方法例如DrawLine,DrawRectangle等。這里使用DrawGeometry方法,將所有的圖形轉(zhuǎn)換為一個對象統(tǒng)一呈現(xiàn)。繪制完成以后調(diào)用Close方法。另外WPF提供了方便使用的Transform類來進行坐標變換,例如平移(Trans?lateTransfrom)、縮放(SacleTransfrom)以及旋轉(zhuǎn)(RotateTransform3D)。靈活的坐標變換配合鼠標動作可以更方便的分析流場。
(3)三維圖形繪制:涉及到邊界、網(wǎng)格和流場(三維線段),三維地形、標量場、剖面場(三維曲面)等。將繪制三維線段的方法封裝在ScreenSpaceLines3D類中,在繪制的時候給ScreenSpaceLines3D類的Points Thickness,Color屬性賦值,WPF自動創(chuàng)建三維線段對象。同樣的將所有線段作為一個三維對象呈現(xiàn)在三維場景中,用以節(jié)省系統(tǒng)的開銷。繪制三維曲面的時候,需要將待繪制的曲面劃分成若干小三角形。將節(jié)點和連接關系信息賦值給Positions和TriangleIndices屬性,WPF會自動創(chuàng)建MeshGeometry3D對象,然后附上常用的DiffuseMaterial材質(zhì)作為紋理映射。只需要將MeshGeometry3D類轉(zhuǎn)換為ModelVisual3D即可通過view?port3D類呈現(xiàn)三維曲面。通過Transform3DGroup對象對三維曲面進行三維坐標變換平移(TranslateTrans?from3D)、縮放(SacleTransfrom3D)以及旋轉(zhuǎn)(RotateTransform3D)來獲得更好的觀察視角。
圖5 Hydroinfo系統(tǒng)建模顯示Fig.5 Modeling interface in HydroInfo
圖6局部網(wǎng)格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用來實現(xiàn)繪制某一時刻流場,采用Dispatcher.BeginInvoke()方法異步執(zhí)行該委托,按計算的時間順序呈現(xiàn)不同時刻的流場就完成了流場的動畫顯示。
以長江斗湖堤河段為例說明HydroInfo系統(tǒng)模擬實際工程的能力。計算域上游起始于鄭江市,下游至朱家灣,計算域內(nèi)6個測量斷面的具體位置如圖4所示、地形建模如圖5所示及局部網(wǎng)格如圖6所示。采用40 m的網(wǎng)格邊長,將計算域劃分為66 474個三角形單元,33 822個網(wǎng)格節(jié)點,垂向分10層,局部網(wǎng)格如圖6所示。計算步長為1 000,時間步長0.002 h。進口給定恒定流量為6 197 m3/s,作為入流邊界條件,出口邊界按照實測的水位-流量關系控制。計算界面及流場的三維顯示如圖7所示。通過對各斷面的實測數(shù)據(jù)與模型計算所得到的數(shù)據(jù)對比驗證如圖8所示,說明了HydroInfo系統(tǒng)能夠?qū)嶋H工程的水流狀態(tài)進行模擬,對工程應用具有十分重要的指導意義。
采用先進的圖形平臺及面向?qū)ο缶幊碳夹g,開發(fā)了具有自主知識產(chǎn)權的、界面簡單實用以及功能完善的三維水流數(shù)值模擬系統(tǒng)(HydroInfo)。該系統(tǒng)通過DXF文件與AutoCAD軟件進行交互,包括獲取計算域,輸出網(wǎng)格文件等。通過基于Bowyer?Watson逐點插入算法進行Delaunay網(wǎng)格剖分的方法,對任意給定邊界的區(qū)域按照需求進行加密網(wǎng)格。通過讀取部分計算結果文件的方式,可以邊計算邊分析實時計算結果。系統(tǒng)中集成多種三維數(shù)值模型,計算方法高效穩(wěn)定,精度高,滿足了普通計算機上進行大型的數(shù)值模擬的需求。而且具有多種方式的結果展示功能,例如水力要素隨時間的變化,流場顯示以及三維流場模擬等。通過對長江斗湖堤河段的模擬說明了HydroInfo具有較強的實用性。
HydroInfo系統(tǒng)雖然在算法上具有一定的先進性,但是水流的運動過程是復雜的多維過程,仍需要在算法的多樣化和模擬的精度上不斷完善。另外GIS技術在數(shù)值模擬可視化過程中的應用越來越廣泛,如何將GIS的優(yōu)勢應用到現(xiàn)有的系統(tǒng)中是以后研究的重要方面。
[1]張明進,張華慶,白玉川.我國河流水流泥沙數(shù)值模擬技術進展與應用[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]張華慶,呂忠華,沈漢堃,等.珠江河口水沙數(shù)值模擬系統(tǒng)[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]羅秋實,朱進星,劉士和.河流數(shù)值模擬系統(tǒng)的開發(fā)與應用[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]汪榮勝,宋立松,張澤鋒.二維水流數(shù)值模擬系統(tǒng)研制與應用[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]葉榮輝,宋志堯,沈正,等.珠江口風暴潮數(shù)值模擬系統(tǒng)的設計與實現(xiàn)[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]馮利軍,李競生,郭曉山.地下水數(shù)值模擬系統(tǒng)的設計與實現(xiàn)[J].煤田地質(zhì)與勘探,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]班胭胭,金生,丁偉業(yè).河道三維水流數(shù)學模型計算及應用[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-),女,遼寧省人,博士研究生,主要從事數(shù)值模擬和流場仿真模擬研究。
Biography:ZHANG Nan(1983-),female,doctor student.