国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

大型通用CFD軟件體系結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)研究

2012-11-08 02:32張來(lái)平鄧小剛
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu)流場(chǎng)網(wǎng)格

赫 新,張來(lái)平,趙 鐘,鄧小剛

(中國(guó)空氣動(dòng)力研究與發(fā)展中心 空氣動(dòng)力學(xué)國(guó)家重點(diǎn)實(shí)驗(yàn)室,四川 綿陽(yáng) 621000)

0 引 言

從20世紀(jì)90年代開(kāi)始,國(guó)外的CFD軟件開(kāi)發(fā)機(jī)構(gòu)開(kāi)始大量應(yīng)用面向?qū)ο蠹夹g(shù),在計(jì)算機(jī)圖形學(xué)、數(shù)據(jù)庫(kù)技術(shù)、標(biāo)準(zhǔn)輸入輸出等方面做了大量工作,在軟件的穩(wěn)定性和可用性方面取得豐碩成果,相繼推出了Fluent、ICEM-CFD、Fastran、CFX等知名商業(yè)軟件,同時(shí)開(kāi)發(fā)了眾多知名的In-h(huán)ouse專業(yè)軟件,如CFL3D、FUN3D、USM3D、TAU、elsA 等[1]。

國(guó)內(nèi)的CFD軟件研制起步較晚,和國(guó)外優(yōu)秀CFD軟件相比還有較大的差距,其主要體現(xiàn)為:(1)多數(shù)軟件采用Fortran語(yǔ)言的結(jié)構(gòu)化體系結(jié)構(gòu),軟件的通用性、可擴(kuò)展性和可維護(hù)性差,軟件架構(gòu)相對(duì)落后,升級(jí)換代遇到難以克服的困難;(2)CFD軟件開(kāi)發(fā)模式有待提高,項(xiàng)目管理手段簡(jiǎn)單,難以保證軟件質(zhì)量;(3)CFD軟件接口沒(méi)有統(tǒng)一標(biāo)準(zhǔn),限制了不同CFD軟件之間的數(shù)據(jù)共享和交流。

從國(guó)外CFD軟件的現(xiàn)狀來(lái)看,遵循著功能更全、求解速度更快、資源消耗更少的發(fā)展思路,強(qiáng)調(diào)面向用戶和多學(xué)科集成的研發(fā)模式,以更好地滿足客戶和研究的需求。眾所周知,對(duì)于復(fù)雜外形飛行器的數(shù)值模擬,綜合了結(jié)構(gòu)網(wǎng)格和非結(jié)構(gòu)網(wǎng)格優(yōu)勢(shì)的混合網(wǎng)格技術(shù)代表了未來(lái)網(wǎng)格技術(shù)的發(fā)展趨勢(shì)[2]。但是,當(dāng)前絕大多數(shù)基于混合網(wǎng)格的CFD軟件一般將結(jié)構(gòu)網(wǎng)格視為非結(jié)構(gòu)網(wǎng)格的特例,因此仍按照統(tǒng)一的非結(jié)構(gòu)網(wǎng)格進(jìn)行數(shù)值計(jì)算。這實(shí)際上沒(méi)有充分發(fā)揮結(jié)構(gòu)網(wǎng)格的優(yōu)勢(shì)。一種最佳的選擇是在結(jié)構(gòu)網(wǎng)格上運(yùn)行結(jié)構(gòu)化解算器,而在非結(jié)構(gòu)網(wǎng)格上運(yùn)行非結(jié)構(gòu)解算器,在算法層次上實(shí)現(xiàn)真正的結(jié)構(gòu)/非結(jié)構(gòu)網(wǎng)格耦合計(jì)算。

由于結(jié)構(gòu)網(wǎng)格和非結(jié)構(gòu)網(wǎng)格的數(shù)據(jù)結(jié)構(gòu)差異很大,因此需要構(gòu)建能夠涵蓋混合網(wǎng)格的規(guī)范的數(shù)據(jù)結(jié)構(gòu),同時(shí)需要建立適應(yīng)性好的軟件體系結(jié)構(gòu),因?yàn)檐浖捏w系結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)是大型通用軟件的基礎(chǔ)。體系結(jié)構(gòu)是軟件的框架,數(shù)據(jù)結(jié)構(gòu)貫穿于軟件體系結(jié)構(gòu)之中。將之比之為大廈,則軟件的體系結(jié)構(gòu)是大廈的主要承重框架,而數(shù)據(jù)結(jié)構(gòu)則是大廈內(nèi)部的連通道路。因此,一個(gè)好的CFD軟件必須具有科學(xué)的體系結(jié)構(gòu)以保證其良好的可擴(kuò)展性;必須具有規(guī)范的數(shù)據(jù)結(jié)構(gòu)以提高數(shù)據(jù)的利用效率,保證數(shù)據(jù)的安全性。

為了促進(jìn)我國(guó)大型CFD軟件開(kāi)發(fā)、推出具有自主知識(shí)產(chǎn)權(quán)的CFD軟件,我們有必要開(kāi)展大型通用CFD軟件的體系結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)研究,借鑒國(guó)外知名CFD軟件的成功經(jīng)驗(yàn),發(fā)展具有良好的通用性、易用性、可擴(kuò)展性和易維護(hù)性的CFD軟件。

本文針對(duì)大型通用CFD軟件研制的需求,從新一代結(jié)構(gòu)/非結(jié)構(gòu)混合流場(chǎng)解算器的研制出發(fā),著重研究了大型CFD軟件的體系結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。首先,針對(duì)未來(lái)計(jì)算流體力學(xué)對(duì)大型通用CFD軟件的需求進(jìn)行了分析,對(duì)軟件研制中將要面對(duì)的各種計(jì)算網(wǎng)格、物理模型、計(jì)算方法以及未來(lái)多學(xué)科耦合計(jì)算的發(fā)展趨勢(shì)進(jìn)行了充分的需求評(píng)估。進(jìn)一步提出了采用面向?qū)ο筌浖O(shè)計(jì)技術(shù),進(jìn)行大型CFD軟件體系結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)的方法,包括軟件的整體架構(gòu)、層次結(jié)構(gòu)等,其間提出了運(yùn)行數(shù)據(jù)庫(kù)的概念,設(shè)計(jì)了能夠涵蓋結(jié)構(gòu)網(wǎng)格、非結(jié)構(gòu)網(wǎng)格和混合網(wǎng)格的規(guī)范的數(shù)據(jù)結(jié)構(gòu)。在此基礎(chǔ)上,研制了基于結(jié)構(gòu)/非結(jié)構(gòu)網(wǎng)格的結(jié)構(gòu)/非結(jié)構(gòu)混合解算器(HyperFlow),并通過(guò)典型算例對(duì)軟件進(jìn)行了驗(yàn)證,同時(shí)推廣應(yīng)用于不可壓縮非定常流計(jì)算、高階精度DG/FV混合算法等領(lǐng)域。大量的應(yīng)用實(shí)踐表明本文提出的CFD軟件體系結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)具有良好的通用性和可擴(kuò)展性,具有廣闊的應(yīng)用前景。

1 體系結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)需求分析

1.1 計(jì)算網(wǎng)格適應(yīng)性需求

未來(lái)CFD軟件的發(fā)展趨勢(shì)是結(jié)構(gòu)/非結(jié)構(gòu)混合網(wǎng)格耦合求解?;旌暇W(wǎng)格技術(shù)一方面提高了網(wǎng)格對(duì)復(fù)雜外形的適應(yīng)能力,另一方面又能充分提高計(jì)算效率和計(jì)算精度。對(duì)于復(fù)雜外形飛行器的數(shù)值模擬,一般在幾何外形比較復(fù)雜的地方用非結(jié)構(gòu)網(wǎng)格,而在幾何外形比較簡(jiǎn)單的地方用結(jié)構(gòu)網(wǎng)格填充。這其中,結(jié)構(gòu)網(wǎng)格又主要包括多塊對(duì)接網(wǎng)格、重疊網(wǎng)格、搭接網(wǎng)格;非結(jié)構(gòu)網(wǎng)格主要包括三棱柱、四面體、金字塔、多面體等各種基本單元。

為了適應(yīng)變形體或多體分離問(wèn)題非定常計(jì)算的需要,必須考慮動(dòng)態(tài)網(wǎng)格技術(shù);為了提高計(jì)算效率,需要發(fā)展多重網(wǎng)格計(jì)算和并行計(jì)算方法,并實(shí)現(xiàn)并行/多重的耦合計(jì)算,這就涉及到多重網(wǎng)格和并行分區(qū)網(wǎng)格的自動(dòng)生成及數(shù)據(jù)的存取問(wèn)題;為了提高計(jì)算精度,需要發(fā)展網(wǎng)格自適應(yīng)方法,同樣涉及到自適應(yīng)網(wǎng)格的存取問(wèn)題。

因此,在通用CFD軟件研制過(guò)程中,需要充分考慮各種網(wǎng)格拓?fù)浣Y(jié)構(gòu)的差異,設(shè)計(jì)規(guī)范的數(shù)據(jù)結(jié)構(gòu),提高數(shù)據(jù)結(jié)構(gòu)對(duì)各種計(jì)算網(wǎng)格的適應(yīng)性。

1.2 物理模型及計(jì)算方法需求

當(dāng)前CFD軟件求解的物理模型主要包括雷諾平均的N-S方程(包括可壓縮流和不可壓縮流)、湍流模型和轉(zhuǎn)捩模型、化學(xué)反應(yīng)動(dòng)力學(xué)模型等,未來(lái)還需要考慮多學(xué)科耦合計(jì)算,如電磁流體/N-S方程耦合求解等。

目前的CFD軟件一般采用二階精度的有限體積計(jì)算方法。隨著高精度格式日新月異的發(fā)展,高精度格式將在實(shí)際工程中得到深入的研究和應(yīng)用,因此,通用CFD軟件在體系結(jié)構(gòu)設(shè)計(jì)時(shí),必須考慮到容納高精度格式計(jì)算的需要。這其中主要包括結(jié)構(gòu)網(wǎng)格下的 WCNS[3],WENO[4-5]等和非結(jié)構(gòu)網(wǎng)格下的 DG方法[6]、DG/FV 混合方法[7]等。

隨著CFD面臨的問(wèn)題越來(lái)越復(fù)雜,復(fù)雜外形粘性流動(dòng)數(shù)值模擬所需網(wǎng)格量越來(lái)越大。為了縮短計(jì)算周期,需要發(fā)展高效率的時(shí)間推進(jìn)方法。就目前而言,主要包括顯式多步Runge-Kutta迭代和殘值光順耦合計(jì)算方法,隱式LU-SGS和BLU-SGS[8-10],GMERS[11]等;針對(duì)不可壓流,需要集成虛擬壓縮法、預(yù)處理方法或SIMPLE算法等。為了進(jìn)一步提高計(jì)算效率,還需要將分區(qū)并行和多重網(wǎng)格耦合計(jì)算。

因此,在通用CFD軟件的體系結(jié)構(gòu)設(shè)計(jì)過(guò)程中需要充分考慮各種計(jì)算方法和物理模型的特性,設(shè)計(jì)合理靈活的、具有良好可擴(kuò)展性的體系結(jié)構(gòu),不至于在軟件功能擴(kuò)充時(shí)需要重新設(shè)計(jì)體系結(jié)構(gòu)。

1.3 其他需求

大型CFD軟件耦合了結(jié)構(gòu)/非結(jié)構(gòu)網(wǎng)格的拓?fù)浣Y(jié)構(gòu)和計(jì)算方法,還包括各種模型的計(jì)算,使得軟件的各模塊之間、軟件與其他配套軟件之間的通信非常復(fù)雜,建立統(tǒng)一的、標(biāo)準(zhǔn)的數(shù)據(jù)接口可以極大地增強(qiáng)軟件的可維護(hù)性和魯棒性。

和配套軟件的數(shù)據(jù)接口主要包括前置軟件數(shù)據(jù)接口和后置軟件數(shù)據(jù)接口。前置軟件主要包括網(wǎng)格生成軟件的接口,比如Gridgen、ICEM-CFD等,后置軟件的數(shù)據(jù)接口主要包括Tecplot、ParaView、Field-View等。因此,在軟件體系結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)時(shí)要充分考慮和這些前后置處理軟件的接口需求。

以CFD為核心的多學(xué)科多目標(biāo)優(yōu)化設(shè)計(jì)是當(dāng)前及未來(lái)發(fā)展的重點(diǎn),其中將涉及到靜動(dòng)態(tài)網(wǎng)格自動(dòng)生成、優(yōu)化計(jì)算方法、氣動(dòng)聲學(xué)特性分析、RCS隱身特性分析、飛行力學(xué)特性分析等。因此大型通用CFD軟件的體系結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)應(yīng)該充分考慮未來(lái)多學(xué)科多目標(biāo)優(yōu)化設(shè)計(jì)的需求。

2 大型通用CFD軟件體系結(jié)構(gòu)

大型通用CFD軟件體系結(jié)構(gòu)的構(gòu)建原則是可擴(kuò)展性和易維護(hù)性??蓴U(kuò)展型指軟件體系結(jié)構(gòu)要在適應(yīng)當(dāng)前CFD技術(shù)的同時(shí)也能適應(yīng)可預(yù)見(jiàn)的未來(lái)CFD發(fā)展趨勢(shì);可維護(hù)性指軟件體系結(jié)構(gòu)應(yīng)能適應(yīng)未來(lái)模塊功能改進(jìn)、軟件更新的維護(hù)成本和功能增強(qiáng)達(dá)到最優(yōu)。

2.1 軟件采用的語(yǔ)言

目前在CFD界比較流行的程序語(yǔ)言是Fortran和C++(包括C),二者各有優(yōu)缺點(diǎn)。Fortran是針對(duì)科學(xué)計(jì)算開(kāi)發(fā)的語(yǔ)言,在復(fù)數(shù)運(yùn)算、數(shù)組運(yùn)算等方面具有得天獨(dú)厚的優(yōu)勢(shì)。但是一般認(rèn)為其為一種“面向過(guò)程”的計(jì)算機(jī)語(yǔ)言,盡管新版Fortran語(yǔ)言(Fortran90及升級(jí)版)逐步具備了某些“面向?qū)ο蟆惫δ?,但是其在?shù)據(jù)的抽象、對(duì)象的封裝、可繼承性上還有所欠缺,不利于大型CFD軟件的擴(kuò)展。相比而言,C++是一種“面向?qū)ο蟆钡挠?jì)算機(jī)語(yǔ)言,長(zhǎng)期的發(fā)展已使其在數(shù)據(jù)封裝、面向?qū)ο笊嫌兄渌Z(yǔ)言難以匹敵的優(yōu)勢(shì)。雖然C++在科學(xué)計(jì)算時(shí)的計(jì)算效率常為人所詬病,但近來(lái)已經(jīng)發(fā)展出多種知名的多維數(shù)組算法庫(kù),比如blitz++,從而使得在C++上進(jìn)行多維數(shù)組運(yùn)算業(yè)已不成問(wèn)題。

正是因?yàn)镃++不僅能滿足大型CFD軟件對(duì)可繼承性、可擴(kuò)展性的需求,又能方便、高效地進(jìn)行多維數(shù)組的運(yùn)算,因此,我們建議采用C++語(yǔ)言進(jìn)行大型CFD軟件的開(kāi)發(fā)。利用C++的面向?qū)ο蠹夹g(shù),我們可以根據(jù)CFD軟件的特殊需求,設(shè)計(jì)各種基類和派生類,從而將各功能模塊合理封裝,即相對(duì)獨(dú)立又相互關(guān)聯(lián),并可通過(guò)派生類實(shí)現(xiàn)新的功能模塊的有機(jī)集成。

2.2 軟件的整體架構(gòu)

無(wú)論是分區(qū)并行計(jì)算,還是多重網(wǎng)格計(jì)算,CFD軟件的本質(zhì)實(shí)際上是在每個(gè)網(wǎng)格塊上的科學(xué)計(jì)算。根據(jù)CFD軟件的上述特點(diǎn),我們?cè)O(shè)計(jì)了如圖1所示的軟件體系結(jié)構(gòu)。整個(gè)軟件系統(tǒng)由計(jì)算任務(wù)控制類(Simulation類)、計(jì)算區(qū)域類(Zone類)、網(wǎng)格信息類(Grid類)、解算器類(Solver類)、后置處理輸出類(Post類)和“運(yùn)行數(shù)據(jù)庫(kù)”組成(“運(yùn)行數(shù)據(jù)庫(kù)”將在第三節(jié)詳細(xì)介紹)??刂茀?shù)輸入包含在Simulation類之中,而網(wǎng)格數(shù)據(jù)信息在創(chuàng)建Zone類時(shí)輸入,同時(shí)創(chuàng)建Grid類。各類之間的關(guān)系類似于一種“網(wǎng)絡(luò)”結(jié)構(gòu),彼此相對(duì)獨(dú)立,而又通過(guò)Simulation類初始化時(shí)形成的“計(jì)算任務(wù)配置表”相互關(guān)聯(lián)。這一設(shè)計(jì)理念與“結(jié)構(gòu)化”軟件的設(shè)計(jì)思想存在本質(zhì)的不同。

整個(gè)軟件的核心是Zone類,Zone之間通過(guò)邊界信息(InterFace類)交換數(shù)據(jù)交換。這樣做既有利于對(duì)大網(wǎng)格進(jìn)行分區(qū)串行計(jì)算,也有利于進(jìn)行多個(gè)CPU的并行/多重耦合計(jì)算,還可以在同一個(gè)Zone上加載若干個(gè)相關(guān)解算器,或者在不同的Zone上加載不同的解算器,這對(duì)多學(xué)科耦合計(jì)算是大有裨益的。

關(guān)于各主要類的功能簡(jiǎn)述如下:

(1)Simulation類

Simulation類起到對(duì)整個(gè)模擬進(jìn)程的控制作用,通過(guò)對(duì)成員變量及函數(shù)的調(diào)用,形成“計(jì)算任務(wù)配置表”,實(shí)現(xiàn)對(duì)控制參數(shù)讀入、網(wǎng)格數(shù)據(jù)讀入、計(jì)算任務(wù)初始化、流場(chǎng)解算器選取和后置處理輸入等操作的配置。

(2)Zone類

在進(jìn)行并行計(jì)算或者分區(qū)計(jì)算時(shí),每一個(gè)網(wǎng)格分區(qū)可以視為一個(gè)Zone對(duì)象,其中即包括了網(wǎng)格信息,又包括了解算器信息、流場(chǎng)控制信息以及流場(chǎng)數(shù)據(jù),網(wǎng)格信息和解算器都以各自的類的方式存在于Zone類中,做為其成員變量。Zone類的主要作用是負(fù)責(zé)各個(gè)模塊之間的調(diào)度工作,包括創(chuàng)建網(wǎng)格Grid信息、加載解算器并執(zhí)行求解任務(wù)等。

(3)Grid類

Grid類中包括了網(wǎng)格的全部信息,包括點(diǎn)的坐標(biāo)、單元及其關(guān)聯(lián)信息、單元面積/體積信息等,同時(shí)還包括多重網(wǎng)格計(jì)算中的“粗-細(xì)”網(wǎng)格信息、非定常計(jì)算中動(dòng)網(wǎng)格的新舊時(shí)刻坐標(biāo)信息等。Grid類作為基類,又可從中派生出非結(jié)構(gòu)網(wǎng)格子類(UnsGrid子類)、結(jié)構(gòu)網(wǎng)格子類(StrGrid子類)以及混合計(jì)算時(shí)二者之間的交界面類(InterFace子類)。UnsGrid類中包括了非結(jié)構(gòu)網(wǎng)格的點(diǎn)-面-單元的連接信息,StrGrid類中包括了結(jié)構(gòu)網(wǎng)格的網(wǎng)格點(diǎn)標(biāo)號(hào),InterFace子類中包括了混合網(wǎng)格交界面處的面的編號(hào)、網(wǎng)格點(diǎn)編號(hào)、交界面交界單元數(shù)目等信息。Grid類的功能是負(fù)責(zé)Grid的幾何量計(jì)算、存儲(chǔ)網(wǎng)格信息、構(gòu)建多重網(wǎng)格信息等。

(4)Solver類

Solver類是解算器類,根據(jù)任務(wù)需求,可以派生出不同的子類,如基于結(jié)構(gòu)網(wǎng)格的NS方程解算器(StrSolver子類)和基于非結(jié)構(gòu)網(wǎng)格的解算器(UnsSolver子類)等,同時(shí)還可以派生出湍流模型方程解算器(如SA_Solver、KE_Solver、KW_Solver等)、不可壓縮NS方程解算器(IncompNS_Solver)、高階精度DG解算器(DG_Solver)、高階精度DG/FV混合解算器(DG/FV_Solver)、電磁流體解算器(MHD_Solver)等等。未來(lái),還可以在Solver類基礎(chǔ)上派生出其他學(xué)科的解算器。在整個(gè)Solver類中,各個(gè)不同的解算器之間地位平等,可以隨時(shí)方便、安全地調(diào)用不同的解算器。

圖1 通用CFD軟件體系結(jié)構(gòu)Fig.1 Frame of CFD software

2.3 解算器的層次結(jié)構(gòu)

為了有效集成各種計(jì)算模型和計(jì)算方法,我們?cè)诹鲌?chǎng)解算器設(shè)計(jì)中應(yīng)用了分層模型,如圖2所示。整個(gè)解算器分為五個(gè)層次。第一層,根據(jù)不同的計(jì)算需要,將計(jì)算分為定常計(jì)算和非定常計(jì)算;第二層,根據(jù)流場(chǎng)性質(zhì)分為無(wú)粘流、層流或湍流;第三層,針對(duì)非定常流中的動(dòng)態(tài)網(wǎng)格性質(zhì)以及不同的算法,將網(wǎng)格分為靜態(tài)網(wǎng)格和動(dòng)態(tài)網(wǎng)格;第四層,針對(duì)不同的方程,分別就方程中的空間項(xiàng)、時(shí)間項(xiàng)和源項(xiàng)進(jìn)行離散;第五層是整個(gè)軟件的最底層,其中包括了CFD技術(shù)中的各種離散方法、求解方法等具體算法。這種分層結(jié)構(gòu)使得軟件體系結(jié)構(gòu)清晰明確,軟件模塊化規(guī)范,易于軟件的維護(hù)和擴(kuò)展。

圖2 解算器層次結(jié)構(gòu)Fig.2 Frame of solvers

2.4 程序運(yùn)行基本流程

一旦Simulation類通過(guò)讀入用戶自定義的“動(dòng)態(tài)參數(shù)控制文件”(所有控制參數(shù)存儲(chǔ)于“運(yùn)行數(shù)據(jù)庫(kù)”之中),即可形成“計(jì)算任務(wù)配置表”。隨后根據(jù)“計(jì)算任務(wù)配置表”讀入網(wǎng)格數(shù)據(jù)信息,同時(shí)創(chuàng)建Zone類、Grid類,完成網(wǎng)格幾何信息量的計(jì)算并存儲(chǔ)至“運(yùn)行數(shù)據(jù)庫(kù)”之中;進(jìn)而加載Solver類(選取不同的解算器),執(zhí)行計(jì)算任務(wù),在計(jì)算過(guò)程中和計(jì)算結(jié)束后輸出計(jì)算結(jié)果。整個(gè)計(jì)算任務(wù)流程如圖3所示。由此,原先各類之間的“網(wǎng)絡(luò)”結(jié)構(gòu)關(guān)系,根據(jù)具體任務(wù)需求,轉(zhuǎn)化為自定義“局部結(jié)構(gòu)化”計(jì)算任務(wù)流程。

圖3 軟件運(yùn)行流程圖Fig.3 Flow chart of CFD software

3 大型通用CFD軟件數(shù)據(jù)結(jié)構(gòu)

3.1 數(shù)據(jù)分類

在CFD軟件運(yùn)行過(guò)程中,會(huì)涉及到各種各樣的數(shù)據(jù)存取與更新。這些數(shù)據(jù)主要包括:

(1)網(wǎng)格數(shù)據(jù):網(wǎng)格點(diǎn)坐標(biāo)、網(wǎng)格點(diǎn)編號(hào)(結(jié)構(gòu)網(wǎng)格)、“點(diǎn)-線-面-體”連接關(guān)系(非結(jié)構(gòu)網(wǎng)格)、面積、體積、動(dòng)網(wǎng)格計(jì)算時(shí)的單元面運(yùn)動(dòng)速度等;

(2)流場(chǎng)數(shù)據(jù):流場(chǎng)密度、速度、壓力、溫度、組分濃度、渦粘性系數(shù)、湍流相關(guān)參數(shù)等;

(3)狀態(tài)參數(shù):來(lái)流條件如馬赫數(shù)、雷諾數(shù)、攻角等;

(4)控制參數(shù):計(jì)算格式、限制器、湍流模型、時(shí)間推進(jìn)格式等;

(5)其他數(shù)據(jù):比如計(jì)算過(guò)程中的臨時(shí)存儲(chǔ)數(shù)據(jù)(如物理量梯度、殘值)、一些用于流動(dòng)顯示和計(jì)算過(guò)程監(jiān)控的數(shù)據(jù)等。

所有數(shù)據(jù)根據(jù)權(quán)限分為兩類:永久保護(hù)數(shù)據(jù)和限制保護(hù)數(shù)據(jù)。永久保護(hù)數(shù)據(jù)是在整個(gè)計(jì)算過(guò)程中不能改變的量,如來(lái)流狀態(tài)參數(shù)、計(jì)算控制參數(shù)、網(wǎng)格信息數(shù)據(jù)等。限制保護(hù)數(shù)據(jù)只能對(duì)某些特定的對(duì)象才能修改,如流場(chǎng)數(shù)據(jù),其在計(jì)算過(guò)程中需隨時(shí)間推進(jìn)不斷更新。

3.2 數(shù)據(jù)結(jié)構(gòu)

為了便于CFD數(shù)據(jù)的跨平臺(tái)和跨網(wǎng)絡(luò)共享,以美國(guó)為主導(dǎo)的西方國(guó)家提出了CFD通用符號(hào)標(biāo)準(zhǔn)(CGNS)[12]數(shù)據(jù)格式,并開(kāi)發(fā)了適應(yīng)各種計(jì)算機(jī)軟硬件環(huán)境的CGNS庫(kù)。CGNS庫(kù)是一個(gè)龐大的數(shù)據(jù)管理函數(shù)庫(kù),其幾乎涵蓋了所有CFD數(shù)據(jù)類型,其作為輸入輸出標(biāo)準(zhǔn)是很好的。但是在CFD軟件中內(nèi)嵌龐大臃腫的CGNS庫(kù),將大幅降低計(jì)算效率。為此,我們借鑒CGNS的數(shù)據(jù)定義方法,結(jié)合CFD軟件運(yùn)行的實(shí)際需求,定義了如下輕量級(jí)的層次數(shù)據(jù)結(jié)構(gòu):

1)變量名:如迭代步數(shù)iter、馬赫數(shù)Ma、雷諾數(shù)Re等單變量參數(shù),流場(chǎng)壓力p、速度u/v/w、溫度T等數(shù)組數(shù)據(jù)。

2)數(shù)據(jù)類型:整型、字符、浮點(diǎn)。

3)數(shù)據(jù)精度:?jiǎn)尉?、雙精度等。

4)數(shù)據(jù)維度:?jiǎn)螀?shù)、數(shù)組長(zhǎng)度/維度等。

對(duì)于所有的數(shù)組數(shù)據(jù)均采用一維數(shù)組(指針)存取。在結(jié)構(gòu)網(wǎng)格計(jì)算中,其隱含的i,j,k指標(biāo)關(guān)系由特定函數(shù)(SetArrayLayout)給出,這樣就保證了結(jié)構(gòu)網(wǎng)格和非結(jié)構(gòu)網(wǎng)格存取方式的統(tǒng)一。為了保證結(jié)構(gòu)網(wǎng)格計(jì)算時(shí)多維數(shù)組運(yùn)算的順利進(jìn)行,同時(shí)為了避免內(nèi)嵌龐大臃腫的多維數(shù)組運(yùn)算庫(kù),我們參考blitz++等開(kāi)源軟件,編制了一個(gè)輕量級(jí)的多維數(shù)組算法庫(kù)。這里采用了C++最新的模板編程技術(shù),并利用模板偏特化的一些成果,有效解決了C++中多維數(shù)組的運(yùn)算問(wèn)題。

3.3 數(shù)據(jù)存取與更新:“運(yùn)行數(shù)據(jù)庫(kù)”

大型通用CFD軟件的一個(gè)重要基礎(chǔ)是能夠可靠、安全、高效地存取數(shù)據(jù)。數(shù)據(jù)流設(shè)計(jì)的合理性直接影響到軟件平臺(tái)設(shè)計(jì)的好壞和計(jì)算效率。為了保證數(shù)據(jù)的安全性和使用方便性,我們提出了“運(yùn)行數(shù)據(jù)庫(kù)”的概念。在CFD軟件運(yùn)行過(guò)程中涉及到的所有數(shù)據(jù)均按照統(tǒng)一的規(guī)范存儲(chǔ)于“運(yùn)行數(shù)據(jù)庫(kù)”之中?!斑\(yùn)行數(shù)據(jù)庫(kù)”不是傳統(tǒng)意義上的“固態(tài)”數(shù)據(jù)庫(kù),而是伴隨CFD軟件平臺(tái)的運(yùn)行自動(dòng)生成,并隨軟件運(yùn)行的結(jié)束而自動(dòng)釋放。其具體實(shí)現(xiàn)方式如下:

(1)限制保護(hù)數(shù)據(jù)類

(2)永久保護(hù)數(shù)據(jù)類

(3)數(shù)據(jù)庫(kù)類

數(shù)據(jù)的存儲(chǔ)通過(guò)“運(yùn)行數(shù)據(jù)庫(kù)”成員函數(shù)UpdataData(單參數(shù)存儲(chǔ))和UpdataDataPtr(數(shù)組數(shù)據(jù)或指針數(shù)據(jù)存?。?shí)現(xiàn);數(shù)據(jù)的提取通過(guò)成員函數(shù)Get-Data(單參數(shù)提取)和GetDataPtr(數(shù)組數(shù)據(jù)或指針數(shù)據(jù)提?。?shí)現(xiàn)。所有數(shù)據(jù)均“封裝”于“運(yùn)行數(shù)據(jù)庫(kù)”中。由此,在每個(gè)獨(dú)立的模塊內(nèi),編程人員可以根據(jù)自己的習(xí)慣自由定義局部變量,只需在使用該變量的值時(shí)采用上述規(guī)范統(tǒng)一的提取和更新方式,避免了各模塊間數(shù)據(jù)(變量)定義和調(diào)用混亂。

4 軟件測(cè)試與應(yīng)用

基于以上研究成果,作者開(kāi)發(fā)了集結(jié)構(gòu)網(wǎng)格解算器和非結(jié)構(gòu)網(wǎng)格解算器于一體的新一代CFD軟件平臺(tái):HyperFlow。目前,我們已經(jīng)對(duì)其中的結(jié)構(gòu)網(wǎng)格NS方程解算器和非結(jié)構(gòu)網(wǎng)格NS方程解算器進(jìn)行了多方測(cè)試,并進(jìn)行了二者同時(shí)運(yùn)行的混合NS方程解算器進(jìn)行了初步的測(cè)試。此外,我們?cè)谠撥浖脚_(tái)上還集成了不可壓縮虛擬壓縮法解算器、高階精度DG/FV混合解算器(二維標(biāo)量方程和Euler方程)等多種解算器。以下給出了一下典型計(jì)算結(jié)果。

4.1 M6機(jī)翼計(jì)算

M6機(jī)翼是一個(gè)標(biāo)準(zhǔn)的三維跨聲速算例,來(lái)流條件取為:Ma=0.8395,雷諾數(shù)為1.172×107,攻角為3.06°。計(jì)算網(wǎng)格分別采用了結(jié)構(gòu)網(wǎng)格和非結(jié)構(gòu)網(wǎng)格(圖4a、b),非結(jié)構(gòu)網(wǎng)格分為8個(gè)區(qū)并行計(jì)算,空間離散方法采用基于Roe分裂的MUSCL型格式,隱式時(shí)間推進(jìn)采用BLU-SGS方法,湍流模型采用一方程S-A模型和二方程k-ε模型。圖4(c、d)分別給出了結(jié)構(gòu)網(wǎng)格和非結(jié)構(gòu)網(wǎng)格計(jì)算得到的壓力等值線,可以看到二者得到的流場(chǎng)結(jié)構(gòu)大體一致,但結(jié)構(gòu)網(wǎng)格的計(jì)算結(jié)果明顯較非結(jié)構(gòu)網(wǎng)格計(jì)算結(jié)果光滑。圖4(e~h)給出了在四個(gè)典型站位的壓力分布和實(shí)驗(yàn)結(jié)果的比較,其中同時(shí)給出了結(jié)構(gòu)網(wǎng)格無(wú)粘流計(jì)算結(jié)果,對(duì)比風(fēng)洞試驗(yàn)結(jié)果,可見(jiàn)粘流計(jì)算結(jié)果明顯好于無(wú)粘流結(jié)果。

4.2 DLR-F6翼身組合體

DLR-F6翼身組合體外形是AIAA阻力預(yù)測(cè)研討會(huì)(DWP)[13]的標(biāo)準(zhǔn)算例。對(duì)于該復(fù)雜外形,我們采用三棱柱/四面體混合網(wǎng)格進(jìn)行計(jì)算,圖5(a)所示為DLR-F6翼身組合體(帶發(fā)動(dòng)機(jī)和翼吊構(gòu)型)的表面網(wǎng)格,半場(chǎng)空間網(wǎng)格總共有779萬(wàn),分為30個(gè)區(qū)并行計(jì)算。計(jì)算狀態(tài)與DPW-II的CASE2相同:Ma=0.75,雷諾數(shù)為3.0×106,攻角從-3°到1.5°范圍內(nèi)變化。計(jì)算方法仍采用與M6機(jī)翼計(jì)算相同的非結(jié)構(gòu)流場(chǎng)解算器,湍流模型采用SST湍流模型。圖5(b、c)所示為計(jì)算得到的氣動(dòng)力系數(shù)曲線,分別和實(shí)驗(yàn)結(jié)果以及國(guó)外軟件FUN3D、USM3D、NSU3D的對(duì)比[13]。結(jié)果顯示,HyperFlow計(jì)算結(jié)果和實(shí)驗(yàn)值及國(guó)外CFD軟件的計(jì)算結(jié)果符合良好。

圖4 M6機(jī)翼計(jì)算網(wǎng)格、壓力等值線及典型站位壓力分布Fig.4 Grid,pressure contours and pressure coefficient distributions of M6wing at z/b=0.2,0.44,0.8,0.95

圖5 DLR-F6表面網(wǎng)格及氣動(dòng)特性曲線Fig.5 Surface grid of DLR-F6wing-body configuration and Aerodynamic coefficients

4.3 不可壓縮非定常流解算器驗(yàn)證與應(yīng)用

為了驗(yàn)證HyperFlow中不可壓流非定常計(jì)算模塊,我們數(shù)值模擬了在初始靜止流場(chǎng)中橫向振動(dòng)的圓柱問(wèn)題。該算例為經(jīng)典不可壓縮流非定常算例。圓柱中心點(diǎn)的運(yùn)動(dòng)方程為:

A表示振幅,f表示振動(dòng)頻率。Keulegan-Carpenter數(shù)(KC)是表示圓柱振動(dòng)的無(wú)量綱數(shù)之一,其定義如下:

其中D代表圓柱的直徑。雷諾數(shù)定義為:

Umax表示圓柱振動(dòng)過(guò)程中的最大速度(經(jīng)過(guò)中心點(diǎn)時(shí)的速度)。這里參照文獻(xiàn)[14],取Re=100,KC=5。圖6(a)顯示了一周期內(nèi)壓差阻力、摩擦阻力、總阻力與Dutsch的實(shí)驗(yàn)結(jié)果[15]的比較,可見(jiàn)二者結(jié)果符合很好。圖6(b)表示的是不同的時(shí)間步長(zhǎng)下的計(jì)算結(jié)果對(duì)比,可見(jiàn)一周期內(nèi)取不同的真實(shí)時(shí)間步數(shù)對(duì)結(jié)果影響并不大。我們還對(duì)不同截面上(x=-0.6d,0d,0.6d,1.2d)的速度剖面(u,v)進(jìn)行了對(duì)比,如圖6(c~h)所示,它們與Guilmineau的數(shù)值結(jié)果[14]、Dutsch的實(shí)驗(yàn)結(jié)果[15]都吻合的相當(dāng)好。

為了展示不可壓縮非定常計(jì)算模塊對(duì)復(fù)雜非定常流動(dòng)的模擬能力,我們數(shù)值模擬了三維魚(yú)體巡游的非定常流場(chǎng),圖7所示為某時(shí)刻魚(yú)體尾部的漩渦形態(tài)及相應(yīng)的表面壓力云圖,并進(jìn)行了層流和湍流狀態(tài)的比較。

圖6 圓柱在靜止流場(chǎng)中橫向振動(dòng)計(jì)算結(jié)果Fig.6 Numerical results of oscillating cylinder

4.4 高階精度DG/FV混合解算器驗(yàn)證

高精度格式是CFD發(fā)展的總體趨勢(shì),面向未來(lái)的CFD軟件必須考慮到高精度格式計(jì)算的需要。DG格式是未來(lái)高精度格式研究的熱點(diǎn)之一,因其對(duì)各種網(wǎng)格的適應(yīng)能力而備受青睞,但是其計(jì)算量頗大。為此,我們發(fā)展了一類混合DG格式和有限體積的DG/FV格式[7,16],該格式的基本思想是利用較低階的DG格式“動(dòng)態(tài)重構(gòu)”較低階的自由度,利用FV格式“靜態(tài)重構(gòu)”高階自由度,從而實(shí)現(xiàn)高階精度計(jì)算。該格式已集成于HyperFlow之中。目前三階精度的DG/FV混合格式已推廣應(yīng)用于二維Euler方程的求解,在提高計(jì)算精度的同時(shí)降低計(jì)算所需時(shí)間和內(nèi)存需求,詳見(jiàn)參考文獻(xiàn)[7,16]。圖8是利用三階DG/FV混合解算器計(jì)算的繞NACA0012翼型跨聲速流動(dòng)的Mach等值線圖和壓力分布圖。通過(guò)和實(shí)驗(yàn)數(shù)據(jù)以及其他學(xué)者的高精度格式計(jì)算結(jié)果對(duì)比,DG/FV混合計(jì)算格式的精度令人鼓舞。

圖7 魚(yú)體游動(dòng)時(shí)的流動(dòng)結(jié)構(gòu)及壓力云圖Fig.7 The flow structure of fish swimming

圖8 DG/FV格式計(jì)算NACA0012跨聲速流動(dòng)Fig.8 Pressure coefficient of NACA0012using DG/FV scheme

4.5 結(jié)構(gòu)/非結(jié)構(gòu)解算器混合求解初步測(cè)試

結(jié)構(gòu)/非結(jié)構(gòu)解算器混合求解是HyperFlow的目標(biāo),目前正在發(fā)展之中。混合求解的難點(diǎn)是如何將結(jié)構(gòu)網(wǎng)格求解和非結(jié)構(gòu)網(wǎng)格求解耦合起來(lái),其關(guān)鍵在交界處的邊界信息處理。目前我們僅針對(duì)簡(jiǎn)單的二維圓柱繞流算例進(jìn)行了驗(yàn)證。圖9(a)所示為計(jì)算網(wǎng)格,在邊界層內(nèi)用結(jié)構(gòu)網(wǎng)格填充并用基于結(jié)構(gòu)網(wǎng)格的有限體積法求解,以很好地模擬邊界層的流場(chǎng)結(jié)構(gòu),在外場(chǎng)用非結(jié)構(gòu)網(wǎng)格填充并用基于非結(jié)構(gòu)網(wǎng)格的有限體積法求解。圖9(b)為計(jì)算結(jié)果,由結(jié)果可見(jiàn),混合求解算法能很好地模擬流場(chǎng)結(jié)構(gòu),在交接面處流場(chǎng)過(guò)渡光滑。

圖9 基于結(jié)構(gòu)/非結(jié)構(gòu)網(wǎng)格混合求解圓柱繞流問(wèn)題Fig.9 The flow past cylinder by hybrid solver

5 結(jié) 語(yǔ)

針對(duì)未來(lái)大型CFD軟件發(fā)展的趨勢(shì),在綜合調(diào)研、分析國(guó)外優(yōu)秀CFD軟件的基礎(chǔ)上,設(shè)計(jì)了一套面向?qū)ο蟮摹⑦m用于計(jì)算流體力學(xué)的軟件體系結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),并開(kāi)發(fā)了集結(jié)構(gòu)網(wǎng)格解算器和非結(jié)構(gòu)網(wǎng)格解算器于一體的新一代CFD軟件平臺(tái)HyperFlow。面向?qū)ο蟮捏w系結(jié)構(gòu)使得軟件有極強(qiáng)的擴(kuò)展性和良好的維護(hù)性,很容易集成不同的物理模型解算器,為將來(lái)多學(xué)科耦合計(jì)算奠定堅(jiān)實(shí)的基礎(chǔ)。

HyperFlow軟件目前業(yè)已集成了包含多種湍流模型的雷諾平均N-S方程的二階精度解算器,正在進(jìn)一步發(fā)展全流場(chǎng)結(jié)構(gòu)/非結(jié)構(gòu)混合求解、高階精度DG/FV混合求解等先進(jìn)算法。通過(guò)對(duì)典型算例的驗(yàn)證,確保了軟件基本框架的正確性,為將來(lái)進(jìn)一步的發(fā)展打下了基礎(chǔ)。

[1]CFD resources at NASA Langley,Computational Fluid Dynamics:Codes development and applications.http://aaac.larc.nasa.gov/tsab/cfdlarc.

[2]BAKER T J.Mesh generation:art or science?[J].Prog.Aero.Sci.,2005,41:29-63.

[3]DENG X,ZHANG H.Developing high-order weighted compact nonlinear schemes[J].J.Comput.Phys,2000,165(1):22-44.

[4]LIU X D,OSHER S.Weighted essentially non-oscillatory schemes[J].J.Comput.Phys.,1994,115:200-212.

[5]JIANG G S,SHU C W.Efficient implementation of weighted ENO schemes[R].ICASE Report,1995,No.95-73.

[6]COCKBURN B,SHU C W.Discontinuous Galerkin methods[M].Berlin:Springer,2000.

[7]ZHANG L P,LIU W,HE L X,DENG X G.A class of hybrid DG/FV methods for conservation laws II:Two-dimensional cases[J].J.Comput.Phys.,2011,231:1104-1120.

[8]CHEN R F,WANG Z J.Fast,block lower-upper symmetric Gauss Seidel scheme for arbitrary grids[J].AIAA Journal,2000,38(12):2238-2245.

[9]ZHANG L P,WANG Z J.A block LU-SGS implicit dual time-stepping algorithm for hybrid dynamic meshes[J].Computers & Fluids,2004,33:891-916.

[10]ZHANG L P,ZHANG H X,CHANG X H,DUAN X P.A block LU-SGS implicit dual time-Stepping algorithm on hybrid dynamic meshes for bio-fluid simulations[J].Computers & Fluids,2009,38:290-308.

[11]SHAROV D,LUO H,BAUM J D,LOHNER R.Implementation of unstructured grid GMRES+ LUSGS method on shared-memory,cache-based parallel computers[R].2000,AIAA 2000-0927.

[12]STEVEN R,DOUGLAS R,MATTHEW F.The CGNS System[R].1998,AIAA 98-3007.

[13]LAFLIN K R,BRODERSEN O.Summary of data from the second AIAA CFD Drag Prediction Workshop[R].2004,AIAA 2004-0555.

[14]GUILMINEAU E,QUEUTEY P.A numerical simulation of vortex shedding from an oscillation circular cylinder[J].Journal of Fluids and Structures,2002,16:773-749.

[15]DUTSCH H,DURST F,BECHER.Low-Reynoldsnumber flow around an oscillating circular cylinder at low Keulegan-Carpenter number[J].J.Fluid Mech.,1998,360:249-271.

[16]張來(lái)平,劉偉,賀立新,等.基于靜動(dòng)態(tài)重構(gòu)的高階DG/FV混合格式在二維非結(jié)構(gòu)網(wǎng)格中的推廣[J].計(jì)算物理,2011,28(2):309-319.

猜你喜歡
數(shù)據(jù)結(jié)構(gòu)流場(chǎng)網(wǎng)格
車(chē)門(mén)關(guān)閉過(guò)程的流場(chǎng)分析
數(shù)據(jù)結(jié)構(gòu)線上線下混合教學(xué)模式探討
為什么會(huì)有“數(shù)據(jù)結(jié)構(gòu)”?
追逐
重疊網(wǎng)格裝配中的一種改進(jìn)ADT搜索方法
高職高專數(shù)據(jù)結(jié)構(gòu)教學(xué)改革探討
基于CFD新型噴射泵內(nèi)流場(chǎng)數(shù)值分析
天窗開(kāi)啟狀態(tài)流場(chǎng)分析
基于國(guó)外兩款吸掃式清掃車(chē)的流場(chǎng)性能分析
高效學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)