CFD訪談(一):看OpenFOAM創(chuàng)始人Henry Weller論CFD!

2017-03-30  by:CAE仿真在線  來(lái)源:互聯(lián)網(wǎng)



CFD界:編程技巧和CFD基本理論,哪一個(gè)更加重要?


Henry:了解流體機(jī)理和計(jì)算流體力學(xué)更加重要。大多數(shù)CFD工程師并不需要經(jīng)常編程,因?yàn)镃FD代碼已經(jīng)非常成熟了,并且包含了非常多的功能。但是對(duì)于一個(gè)CFD工程師而言,很有必要了解到底什么是“物理”,什么是“邊界條件”。這些都和流體動(dòng)力學(xué)有關(guān),而和編程關(guān)系不大。


很好地了解CFD的概念在選擇合適的數(shù)值方法、離散格式、時(shí)間步、松弛因子的時(shí)候非常有必要。這通??梢酝ㄟ^(guò)培訓(xùn)來(lái)達(dá)到目的,因?yàn)楸举|(zhì)上其主要通過(guò)積累的經(jīng)驗(yàn)來(lái)獲得。


使用CFD就像玩樂(lè)器,你不能撿起一把小提琴就彈“維爾瓦底”的曲子(CFD界注:著名小提琴演奏家),這需要很長(zhǎng)的練習(xí)。


然而,相對(duì)于GUI的點(diǎn)擊型操作,OpenFOAM中CFD算例的自動(dòng)運(yùn)行VERY有用,因此如果會(huì)寫腳本的話就更好了。腳本語(yǔ)言不重要,大家可以使用隨便一個(gè)腳本語(yǔ)言,只要你熟悉就好。


CFD界:網(wǎng)格對(duì)FVM計(jì)算重要性如何?


Henry:當(dāng)然網(wǎng)格大小對(duì)流體結(jié)構(gòu)的求解是一個(gè)關(guān)鍵的因素。網(wǎng)格對(duì)LES/DES更加重要,因?yàn)樵贚ES/DES中,網(wǎng)格和湍流尺度有關(guān)。網(wǎng)格大小、密度、分布應(yīng)該小心處理。


并且FVM對(duì)網(wǎng)格類型非常敏感,因?yàn)镕VM使用體心或者面心作為高斯積分點(diǎn)。在做局部插值的時(shí)候,例如,面心只從相鄰網(wǎng)格獲取的時(shí)候,如果網(wǎng)格比較有序,FVM只是2階精度。我在算法中提供了高階多項(xiàng)式插值方法,這種方法在不規(guī)則以及混亂的網(wǎng)格也可以提供2階精度。但是這些方法很耗費(fèi)計(jì)算資源并且不是很穩(wěn)定。能避免就避免??傊?網(wǎng)格質(zhì)量和分布是非常重要的。


另外,有關(guān)精度的問(wèn)題,在對(duì)立的面中,存在一種誤差對(duì)消。例如規(guī)則的六面體網(wǎng)格要比規(guī)則的四面體網(wǎng)格更加精準(zhǔn)(CFD界注:六面體存在3個(gè)對(duì)立的面,四面體沒(méi)有),雖然倆種網(wǎng)格在使用中心差分的時(shí)候都具有2階精度。但對(duì)于混亂的網(wǎng)格,FVM中,多面體網(wǎng)格要比四面體網(wǎng)格更加精準(zhǔn)。


所以基本上說(shuō),六面體網(wǎng)格是最好的,并且應(yīng)該盡量避免不規(guī)則和混亂的網(wǎng)格。對(duì)于復(fù)雜幾何,OpenFOAM對(duì)網(wǎng)格生成有嚴(yán)格的限制。其求解器對(duì)大部分網(wǎng)格也可運(yùn)行收斂。但是網(wǎng)格這個(gè)東西,還是盡可能的做成最好吧!


foamyHexMesh的理念很好,它會(huì)生成規(guī)則的六面體網(wǎng)格,對(duì)于一些復(fù)雜的幾何區(qū)域,它會(huì)生成多面體而不是四面體(CFD界:不同于snappyHexMesh生成的夾雜楔形的網(wǎng)格)。然而,foamyHexMesh并不是一個(gè)資助的項(xiàng)目并且目前也沒(méi)有人資助。目前這個(gè)程序是VERY脆弱的,因此只是一個(gè)演示。


CFD界:從個(gè)人經(jīng)驗(yàn)來(lái)講,如何學(xué)習(xí)CFD?


Henry:運(yùn)行算例,從錯(cuò)誤中吸取教訓(xùn),運(yùn)行更多算例,吸取更多的教訓(xùn)。Live and breath CFD!這是我學(xué)CFD的經(jīng)驗(yàn)。


我從上個(gè)世紀(jì)80年代開(kāi)始學(xué)習(xí)CFD,現(xiàn)在掌握CFD經(jīng)驗(yàn)的人要比80年代的時(shí)候多得多。有更多的培訓(xùn)課,更多的書,因此直接的吸取經(jīng)驗(yàn)會(huì)更加容易。但是當(dāng)然了,還是從自身經(jīng)驗(yàn)來(lái)學(xué)習(xí)最好!


CFD界:相對(duì)于商業(yè)代碼,OpenFOAM的特性是什么?


Henry:OpenFOAM是完全免費(fèi)并且開(kāi)源的(CFD界注:開(kāi)源的意思即為使用者可以隨意更改軟件的內(nèi)核)!這提供了HUGE的方便,不僅僅在費(fèi)用上,也表現(xiàn)在靈活性、以及從軟件本身來(lái)學(xué)習(xí)CFD上。OpenFOAM不僅僅讓CFD工程師可以模擬算例,它也允許CFD工程師來(lái)學(xué)習(xí)CFD方法、開(kāi)發(fā)CFD算法并完善,甚至某一天創(chuàng)造一個(gè)可以替代OpenFOAM的軟件。


并且,許多CFD問(wèn)題需要一些特別的功能、算法、方程、邊界條件等。在商業(yè)軟件中植入這些功能可能令人沮喪并且很可能失敗。有些情況下可能有必要完全的重新寫一個(gè)求解器、邊界條件等。OpenFOAM提供了最大的靈活以及擴(kuò)展性。這些對(duì)使用CFD做研究的人非常重要,因此我覺(jué)得OpenFOAM可能在某一天會(huì)替代閉源軟件。


CFD界:您為什么選擇C++開(kāi)發(fā)CFD代碼而不是FORTRAN?


Henry:在1984年本科之前,我最開(kāi)始的時(shí)候從Basic語(yǔ)言學(xué)起,然后轉(zhuǎn)移到Pascal和C。在我的論文里我使用FORTRAN-77,不得不說(shuō),這實(shí)在AWFUL!!!太差勁了!C和Pascal比FORTRAN-77會(huì)好一點(diǎn),實(shí)際上在1960年ALGOL-60問(wèn)世之后,FORTRAN就差不多廢棄了。


當(dāng)我開(kāi)始我的CFD研究的時(shí)候,我拿到的代碼是一堆不能編譯的令人費(fèi)解的FORTRAN-77代碼。在我學(xué)習(xí)了幾個(gè)月之后,我認(rèn)為我可以玩的更好。在1989年,我接觸到了C++,并立即看到了對(duì)象起源編程的優(yōu)勢(shì)。從那時(shí)起,我就開(kāi)始用C++設(shè)計(jì)FOAM。然而,在那個(gè)年代,C++剛剛問(wèn)世,并且編譯器VERY脆弱甚至不能工作。慢慢的我認(rèn)識(shí)到泛型編程(Generic Programming)對(duì)操作場(chǎng)、矩陣、方程等是非常有必要的,在C++模板問(wèn)世之前,我就使用C方法、宏和腳本得方法來(lái)實(shí)現(xiàn)。在C++模板問(wèn)世之后,以及gcc編譯器的發(fā)布,我把我之前寫的代碼用C++模板重寫,這就是OpenFOAM的前身。


當(dāng)然了,FORTRAN不能做這些。不過(guò)FORTRAN-90有一些面向?qū)ο蟮哪芰?但是它完全沒(méi)有泛型編程的功能,據(jù)我所知,FORTRAN以后亦不會(huì)添加泛型編程的概念?;旧?我個(gè)人認(rèn)為FORTRAN語(yǔ)言快要廢了,在1960年那時(shí)候就應(yīng)該埋在土里了。目前使用FORTRAN的人大部分是由于歷史原因,只為了新代碼能和非常久遠(yuǎn)的代碼兼容。


FORTRAN和C++都因?yàn)椤跋蛳录嫒荨倍幸恍┲旅娜秉c(diǎn)。FORTRAN為了和FORTRAN-77兼容,C++為了和ANSI C兼容。然而最大的區(qū)別是,ANSI C本身就是一個(gè)非常好的語(yǔ)言,FORTRAN可不是。


在未來(lái),我希望C++被一個(gè)更干凈、簡(jiǎn)單、有力的語(yǔ)言代替,這個(gè)語(yǔ)言需要支持泛型編程,這對(duì)OpenFOAM以及其他相類似的代碼非常重要。我一直關(guān)注編程語(yǔ)言的發(fā)展,我認(rèn)為C++的可能的代替品有Nim,Rust以及Chapel,然而目前這些語(yǔ)言缺少一些我需要的必要功能,添加這些功能,比如C++中的高度的泛型編程概念,可能需要很多年。我希望他們?cè)谌舾赡旰筇砑舆@些特性。同時(shí),C++的缺陷需要妥善處理。在C++17中,我希望“概念”(concept)和“模塊”(module)特性會(huì)被加入,所有的C++編程人員都會(huì)受益。


額,這個(gè)問(wèn)題我想說(shuō)的太多了,尤其是關(guān)于C++的缺陷以及我對(duì)未來(lái)編程語(yǔ)言的期望。這越說(shuō)越遠(yuǎn)了,就這么遭!



Henry Weller簡(jiǎn)介:

CFD Direct聯(lián)合創(chuàng)始人兼任技術(shù)總監(jiān),OpenFOAM基金會(huì)共同創(chuàng)始人,OpenFOAM架構(gòu)師,27年OpenFOAM開(kāi)發(fā)經(jīng)驗(yàn)。


開(kāi)放分享:優(yōu)質(zhì)有限元技術(shù)文章,助你自學(xué)成才

相關(guān)標(biāo)簽搜索:CFD訪談(一):看OpenFOAM創(chuàng)始人Henry Weller論CFD! Fluent培訓(xùn) Fluent流體培訓(xùn) Fluent軟件培訓(xùn) fluent技術(shù)教程 fluent在線視頻教程 fluent資料下載 fluent分析理論 fluent化學(xué)反應(yīng) fluent軟件下載 UDF編程代做 Fluent、CFX流體分析 HFSS電磁分析 

編輯
在線報(bào)名:
  • 客服在線請(qǐng)直接聯(lián)系我們的客服,您也可以通過(guò)下面的方式進(jìn)行在線報(bào)名,我們會(huì)及時(shí)給您回復(fù)電話,謝謝!
驗(yàn)證碼

全國(guó)服務(wù)熱線

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號(hào)金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓(xùn)QQ咨詢:點(diǎn)擊咨詢 點(diǎn)擊咨詢
項(xiàng)目QQ咨詢:點(diǎn)擊咨詢
email:kf@1cae.com