本人武漢理工船海研究生,目前研二。本科的時候沒啥志向,只是機械性地學習,對老本行力學分析(結構和流體)自認理解得比較深刻。上了研究生,突然發現自己對於水動力方向極有興趣,也有較強的物理層面的理解,不是我吹,勢流理論和粘流理論的一般推導我磕磕巴巴基本都能搞定,網格法和粒子法的思想我也可以讀懂。不過我最煩惱的是實驗室都是用商業軟體計算,工程項目居多,對著例子改參數,商業模型沒有他們就不會搞,我個人感覺沒什麼含金量(無法發揮我的水平)。雖然研一一年發了幾篇高速艇水動力、畸形波、破損船之類的論文,但是感覺毫無成就感。我個人有很多自認獨到,也很想嘗試的想法,包括最小網格逼近、自適應自由表面網格、自由造波消波、超重力(源項)、粒子法和網格法耦合、勢流區域無反射波等等。然後我還設想了考慮空氣、水兩相的高速艇勢流時域姿態捕捉方法,方程還差一個新的自由表面條件,不過我感覺可以搞定。總之吧,都是現有商業軟體根本就沒有的功能,我一直覺得商業軟體只能做最基本的東西,拿這玩意搞科研簡直搞笑,不過我的同學不這麼想,我總覺得他們SB,他們也覺得我SB,不過沒關係我不在乎,反正每次都是他們來抄我的作業。至於編程,說來慚愧,我對編程的理解只停留在MATLAB輸入數解方程的層次,因為沒學過,所以對編軟體一頭霧水。我請教過老師,老師也只是開發過一些經典的移動脈動源程序,還是那種沒界面的,只能得到一組數,自己再拷貝進EXCEL里畫曲線圖的那種,這我自己就能實現,但我要的不是這個,我想要自己寫一個類似於FLUENT的工業軟體,不過更專業化一些,只算數值波浪水池。這是終極目標,我打算以後寫出這玩意兒就去船廠賣錢,作為未來十幾年的奮鬥目標。研究生我只打算把二相流的勢流軟體寫出來,估計會簡單很多,但應該也難度很大。前幾天我還想過寫一個靜水力計算軟體,算各種破倉之後的力矩(compass沒這功能),但我不清楚三維幾何這種數據不畫網格的話是怎麼讀取,程序算體積、慣性矩具體是怎麼弄的,我只知道物理原理(門清兒),但編程我就是個渣(我只會輸入一串數,然後做矩陣運算,得到一串數,和真正的軟體差好多,但我不知道要學什麼)。大概就是這樣,我特別想做,基本都規劃好了,絕對可以實現,而且有很大的趣味,絕對不是商業軟體可比的!但我發現現在編程把我難住了,打算學,但不知道學什麼,大學學了C,只會寫簡單調用函數的水平,研究生學了MATLAB,可以簡單做數值計算的水平,買了本FARTORN的書還有C++,還沒開始看。請問大家我要去學什麼?我是真的把開發這個軟體當成事業做的,雖然研究生畢業批發價能到15-18萬,水動力還能高些到20-25萬,但我看不上,我羨慕的是像ansys8000萬美金收購spaceclaim那種,賣個軟體就發達了那種為個人奮鬥的感覺。我感覺船舶界懂編程的人門可羅雀,船廠設計院都用通用的商業軟體,很雜,而且講道理很多地方處理得很差,真讓我挑刺兒全是毛病,我強烈感覺未來一定是專業軟體取代通用軟體,我如果可以開發出一個專業的數值波浪水池,只做二相表面流,而且還是漢語界面,應該會大受歡迎,不過沒人理解我,我就權當他們沒眼光不敢捨棄一切來賭一把了。最後說說畢業的事,其實我的畢業論文和我上面說的關係不大,是做破損船瞬態響應的快速演算法,剛開始還沒眉目,不過我感覺也是編軟體。我是在某一天突然發現我的一切夢想都繞不開編軟體,而且一次去北大清華的經歷讓我有些後悔曾經沒努力以及選了這個專業了,當時我被震驚了原來頂尖大學的大神真的在自己開發東西,和他們比,武漢理工真的是個拉基,不說學生有多智障了,估計教授水平都不如人家的博士,人家才是研究,我們純粹在生產拉基論文。於是我好想博士換個專業去讀計算力學啊,連上海交大的船海我都看不上了。還有兩年,我還來得及嗎?求各位前輩解答。(PS:我一直看不起國產工業軟體一片荒漠的現狀,我估計原因就是學編程的不懂理論,學理論的不懂編程,也沒人肯吃苦,再加上版權意識很差,就沒人做國產工業軟體了,既然這樣,那就我來干這個事情,立個小目標,先把船舶領域裡的FLUENT和starccm給擠出去,船廠那幫人整天裝比,真給他一個漢語界面的國產軟體,屁顛屁顛就去用了,目前的關鍵是沒有,沒辦法才去學商業軟體的,而且看他們加群學不會各種撕嚎的慘樣,我心裡堅定了干這事一定是有前途的)各位勿笑,反正我也沒別的事干,就當奉獻自己愛國了。歡迎交流!

最後的最後說一點,我的理論掌握得真的是比較不錯的。勢流理論和粘流理論的公式我都可以看懂,可以磕磕巴巴地推導,也理解物理機理和公式的目的。除此之外,我還對旋渦理論、湍流、圓柱繞流這些專業性的教材進行了自學,還看了法國人的空化機理。而且我舉一反三的能力也還可以,學過表面波(船行波),我自己就完整地想明白了空氣動力學中的激波問題,做高速艇項目時我可以聯想到高超音速的乘波體,而且我也愛發明,用馬格努斯效應自製了推進器,對科學充滿了興趣(因而人生也比較灰暗,性格可能也有缺陷),但我是真的想干一番事業出來,而不是那種找個事業單位上班,然後找個女人交配那種,我最崇拜學術和道德的完人牛頓,偶像是埃隆-馬斯克(除去他的ZZ觀,我都喜歡他),而且我不想去給別人幹活,我想為自己的興趣而不懈奮鬥。


為什麼要潑涼水?當年Weller寫OpenFOAM的時候,肯定也有不少人冷嘲熱諷。認定了,開心做就是了,管那麼多幹嘛!既然洋人搞得出來,為啥國人搞不出來?而且人家還是幾十年前做的,現在條件不比幾十年前好?如果都怕難怕失敗,那還活個什麼勁?你自己做不出來,樓主就做不出來么?你自己寫不出紅樓夢,還不讓曹雪芹寫紅樓夢?等到人家寫出來,你又靠人家吃飯了。多少人嘲笑馬斯克不自量力,失敗頻頻,等到人家真的火星移民了,看你們還有屁放……

樓主想整就整,人生能有幾年奔頭,不做點自己喜歡的事情,跟豬狗有什麼區別?如果只是迎合世俗,為錢為利,那還有什麼奔頭?!還有什麼意義?!

以我個人粗淺的CFD開發經驗,如果悟性極高又有大牛指點的話運氣也比較好的話,三五年之內開發個初具規模的簡化版FLUENT或者OpenFOAM是完全沒有問題的。你只需要開發求解器就行了,至於網格和後處理完全可以交給其他軟體來做,實際上OpenFOAM也是這樣子的(甚至導入網格的格式和輸出結果的格式也只需要指定一種即可)。

可以循序漸進的來,並不需要一蹴而就,那麼多的離散格式,你只用實現一兩個最常用最穩定的高精度的守恆型的就好了;那麼多的湍流模型,也只需要開發一兩個簡單易用的即可,標準k-e或k-omega就好;那麼多的壓力速度解耦方法,也只需要開發最常用的一兩個就好;求解Ax=b的方法,也只需要針對問題特性實現最高效的,並不一定要把書本上那些老掉牙的方法全部實現。選擇太多的話,反而讓人無所適從不知如何選擇。其實更多的商業應用,用戶並不希望去做太多設置,最好是直接就能算,快點出結果。

實際上,寫過代碼的人,都能體會到極大的成就感,這是商業軟體永遠無法帶給你的,這也就是CFD的十八層鄙視鏈吧。另外,商業軟體並不是萬能的,雖然能解決很多常見問題,但很多問題它根本無法處理,我舉個最簡單的例子,哪位大神能用ANSYS的workbench做出來旗幟在風中飄揚的流固耦合模擬來,我就服他,反正FLUENT的動網格方法在處理柔性旗幟大變形捲曲的時候我覺得根本就是一坨屎。

還有,如果哪天微軟禁了windows,如果哪天ANSYS禁售,怎麼辦?……難道要等到那時再去開發國產CFD軟體么?

那些說一個人開發不出來CFD的,中科院的李新亮大神你們知道么?

最後,祝樓主玩的開心,早日實現夢想,祝國產CFD軟體早日橫空出世,擠垮洋人商軟!!


首先題主值得鼓勵,我國CFD軟體一直被卡著脖子,實在是難受。

我國國產軟體和國外軟體相比沒有什麼競爭力,因為一個CFD軟體的發展和迭代需要的時間太長了,以前去過一個COMSOL的講座,工程師告訴我們一個看似簡單的耦合模塊他們花了6年才讓他們穩定下來,如果從頭做起永遠比他們落後幾十年。

比較糟糕的是國內環境不鼓勵開源,大家為了水paper都用現成的代碼改改input,高級一點的用商軟做二次開發。這樣也有壞處,演算法實現以及一些很tricky的東西你不知道是怎麼實現的,實際去編程就知道了,要考慮stability, converge的問題,還要考慮精度。拿我以前用DEALII(有限元庫)寫的一個多相流流固耦合模擬器做個例子吧,有限元不能保證局部質量守恆,所以要用Discontinued Garlerkin Method去離散壓力場,為了保證解的精度流體的速度場採用了Raviart-Thomas FEM,還用了人工粘度。雖然最後把本科畢設裡面東西做出來,但是拿去算一些複雜的case一下子就崩了。現在看看這些代碼就是屎山。

我前老闆就是tough2和tough+(美國伯克利實驗室開發的,是要付費的,價格還不便宜)的開發leader,他給我們上課給我們初始版本的代碼,剛開始我還覺得功能少用著麻煩,覺得開發了十幾年就做出來個這個東西?但是一些case人家就是能算過去,並且代碼非常有條理,修改某些狀態方程和控制過程也很方便,這點不服是不行的。前老闆也跟我們說過他們曾經為了解決一個收斂性問題想了半年,終於有天有個人冒出來了個idea他們才解決。所以這個東西還是很看經驗和持續投入的能力的。

這是需要長期投入才能看到有回報的項目,國內資本沒有這麼多耐心給你投錢等你發酵。

但其實個人覺得還是有兩個解決方案的:

  1. 做那些細分領域專用的CFD,一步一步發展壯大,曲線救國。
  2. 彎道超車,現在的CFD領域主要還是使用有限差分和有限元,可以考慮一下SPH(真的可以考慮考慮SPH),LBM(這個其實沒太有戲),MPM,這些方法都能克服傳統CFD的一些天生不足,但是缺點都是要求算力或者內存太高。目前我覺得基於FEM改進的MPM還是非常有前景的,前一段時間的胡淵明大神的taichi給我感覺挺驚艷的,這幾天研究研究如何能把taichi的計算內核用在工程計算上。(六月一號他們就有公開課,大家可以去聽)

胡淵鳴:給每一位計算機圖形學愛好者的兒童節禮物?

zhuanlan.zhihu.com圖標

願大家的付出都能有所回報。

相關:CFD的相關領域,reservoir simulation。

參考資料:

https://dealii.org/

https://tough.lbl.gov/software/tough-software/


不要重新造輪子……這個道理計算機專業的人大部分都明白,但題主好像還沒明白。做這個事情,對你有多大好處呢?有多大壞處呢?

有哪些計算流體力學(CFD)大牛的故事??

www.zhihu.com圖標

可能有些人會注意到,為什麼涉及到Henry Weller稱呼的時候,一般都是先生,而不是教授或者博士呢?

因為!他花了大量的時間把Fortran改成C++,因此博士論文沒寫完,博士沒畢業!所以大家都成為先生。。。真特么是富有個性的人。

要考慮到可能存在的風險。


很有想法騷年。搞CFD也有近十年了,曾今包括現在的我都還有搞國產CFD軟體的衝動。

不過理想很豐滿,現實很骨感。

開發一款通用的CFD軟體難嗎?其實我覺得難度並不大,現在網上有鋪天蓋地的CFD教程,各種開源代碼,而且CFD這麼多年的發展,基本的求解方法技術都已經很成熟了。難得是如何商業化,如何進行市場競爭。在STARCCM+和fluent如此強大的競爭對手面前,你開發的軟體能有什麼優勢跟他們競爭,漢語界面我覺得真的不值一提,我現在用軟體都不喜歡漢語界面啊。也許你能開發出來最後打價格戰取勝。

其實國內有很多自主開發的CFD代碼,包括國內高校很多課題組都用自己開發的代碼做課題研究,只是沒有商業化,像題主這種靠商業軟體來搞科研的確實有些low,發不了好文章吧。

關於專業軟體和通用軟體,我覺得專業軟體的最大優勢是軟體背後強大的工程經驗資料庫支撐,這個不是一個小作坊三五人小工作室就能完成的。需要大量的試驗來獲取模型中的基礎數據,相當燒錢的,你們船舶領域肯定也是一樣的。

澆了點冷水哈哈,騷年有想法有幹勁很不錯加油吧。看你自述理論功底應該還可以,但是開發軟體光有理論功底可差遠了。拋開流體理論,CFD的數值演算法,網格處理方法,結果後處理方法,軟體開發流程等等一堆活,一個人是干不過來的。好好把演算法學紮實,畢業後找個開發CFD軟體的公司積累經驗人脈。最後如果你足夠牛逼,拉一個團隊出來單幹,大事可成!

祝你成功!


一個程序能計算一種方程、一種工況的,屬於用於科研的專用計算代碼。這一點相信研究生們都可以做到。

能在同一程序框架下計算多種方程、多種工況的屬於能服務於若干工程項目的通用程序。如能做到這一點應該知道各個模塊的抽象和耦合、每個類或者函數都要考慮不同的方程和工況,要精心設計數據結構。其實已經和科學計算其實關係不大。

至於「工業CFD軟體」,在需要上述功能之後,考慮每種工況需要用不同理論和數值演算法去分析,一個「軟體」僅有龍格庫塔法可不行。說到這點顯式演算法和隱式演算法對於數據模型的框架又不一樣。達到這個要求每個類和函數需要精心設計和抽象,以便繼承派生。最重要一點是和GUI的關聯,選擇桌面框架qt、wx、winform...選擇三維圖形框架vtk、openCascade...

所以要做軟體會推點公式可不行,基本上「cfd軟體」和「cfd」本身關係已經不大了,就這樣。


推薦閱讀:
相关文章