自己寫代碼還是採用開源代碼openfoam?
還有不到一年的時間做論文內容,目前實驗進展了一半多,數值模擬剛起步。在此之前,是自己使用fortran寫一些簡單幾何體的二維或者三維的非結構求解器,主要用於求解氣相爆轟問題。現在課題內容要求求解兩相爆轟,即要考慮湍流效應(目測用rans,不考慮燃燒和湍流相互作用),燃料液滴蒸發、破碎和碰撞等物理過程,PS:不具體去深入考慮每個物理過程,只是使用一些具有經驗性的源項或者模型去衡量。目前處在左右為難的境地,如果放棄Fortran使用開源openfoam,之前做的很多數值模擬工作可能就浪費了。但如果不放棄Fortran,在考慮湍流以及粒子運動等,計算量將有很大的提升,串列肯定不行。我目前完全不懂並行方面的知識,也就是說,如果再用Fortran自己寫代碼,還可能考慮加入並行模塊,一年時間好像不夠。所以,誠心請教各路大神,尋求一點兒建議。本人cfd基礎還過得去,只是C++真心不了解。
————————————————————————謝謝大家誠懇的建議,目前對問題有了進一步的認識,也和老闆進行了有效的溝通,準備在實驗部分進一步摸索。謝謝各位~
謝邀。
我覺得你這一年的工作量搞不好夠別人好幾年的工作。。
問題取決於已有fortran程序的可擴展性,你個人對計算方法的理解和coding能力。如果是我,一年之內可能實現不了那麼多(多相流,粒子追蹤,湍流,燃燒,並行化)。基於已有程序的好處就是,工作內容連續,一步步來,實現到哪裡就是哪裡。。。
OF的確有多相流,粒子追蹤,湍流,燃燒的模塊,但是蒸發什麼的好像沒。如果要解決複雜問題的話,學起來也很花時間。萬一到時候沒學會。。。
這種關係到畢業的大事,外人不好給建議,請與導師商議。
就個人長遠發展來看,如果要長期從事CFD行業,遲早都是要自己寫一邊solver的,出來混從是要還的。
首先你這些工作量加起來已經完全夠一篇博士論文了,組裡一個海龜哥們博士論文做的就是DDT的大渦模擬。根據你說的「我目前完全不懂並行方面的知識」、「C++真心不了解」,說明你現在並不具備一定的大規模並行CFD程序的開發能力。話又說回來,你既做實驗,又做CFD開發,肯定不行啊。。你要麼就把實驗做精,結合實驗結果揭示一些氣相爆轟波的物理機理,數值模擬只是驗證;要麼就專做CFD開發,把結果算得漂亮一點,輕實驗。博士課題得有重點和創新點,用我大老闆的話說:如果你什麼都想做,到最後什麼都做不好。
瀉藥。。我不是很懂openfoam所以只能憑感覺給點建議了。
可以試試在已有fortran代碼上用boxlib BoxLib 搭一個並行的結構化網格求解器。類似的並行網格庫還有ibamr,phdmesh,和libmesh,功能各有側重,但是好像不是每個都有fortran介面。建議用商業軟體
並行沒有那麼可怕,而且依你描述的計算量可能只需要OpenMP這類shared memory的方式就好(一台伺服器20個核之類的),其實很簡單。
另外,似乎你並不需要對物理過程做特別精細的描述,多相和燃燒的簡易模型應該都不難實現。我認為未必不能自己來。
更有可能的情況是你老闆覺得小夥子(小姑娘)能力不錯,讓TA幫我寫個求解器吧,以後還能傳給別人用。你要是實在搞不定,未必不讓你畢業的。建議把研究課題再細化,選一個小方向,深入的去做。確定好了,再決定是用自己的程序還是open foam 。
of確實解決不了燃料蒸發這種涉及相變的問題,試試fluent之類的商業軟體沒準兒會出奇效。
推薦閱讀:
※在top2直博兩年,好痛苦,特不喜歡科研,畢業後也肯定不會繼續科研的,該不該退學去做自己喜歡的事情?
※一直讀書讀到博士會不會覺得少了很多人生經歷呢?
※博士畢業有錢嗎?
※男博士找女朋友都這麼難了,女博士怎麼找男朋友?
※全家都是博士是種怎樣的體驗?