流固耦合經驗總結

流固耦合經驗總結



近來查看好多CFD分析的論壇,發現好多網友都在為流固耦合而頭大,且網上也沒有完整的、系統的案例可供參考,目前團隊也在做流固耦合的問題,即為流體輸送固體顆粒的過程的模擬,好不容易找到了完整的解決辦法,不敢獨享,特奉獻于此。 

 

首先在建模和條件設臵方面要按照這樣的設臵順序:

1) 選取流體單元,(打開keyopt4)選項),建立流體模型,注意此處挖去固體所占的空間,然后分區劃分流體場網格(好像在ls_dyna里面不要挖去固體所占空間),注意靠近挖去空間的部分網格應該細小些,還有若要采用remesh在計算中重劃網格,一定要使用三角形單元(所有流體場); 

2) 流體場模型建立完成后,首先要在流固耦合的邊界上施加流體耦合標簽FSI,然后在在流體場區域施加必要的邊界條件,諸如位移約束,速度、壓力等等。然后設臵求解流體場的時間步長、求解時間、流體屬性,打開ALE選項(瞬態分析)網格重畫屬性等等; 

3) 這樣的工作完成后,進入/prep7,加入固體單元,設臵固體材料屬性,在挖去的部分建立固體模型,劃分固體網格,在固體網格與流體場接觸的固體邊界上施加流體耦合標簽FSI,注意要和前面的number相同; 

4) 為固體實際必要的約束條件(看是固體推動流體還是流體推動固體);

5) 設臵固體求解的時間步長和求解結束時間,設臵流固耦合屬性,(看是固體推動流體還是流體推動固體),求解時間步長和求解時間,收斂準則,迭代次數等等;

6) 保存求解。 


總之,在流固耦合分析中,你最好要按著先流體后固體再耦合的屬性設臵順序,流固耦合標簽FSI要分別加在流固耦合邊界的流體邊界上和固體邊界上,加在的順序要按照上面所述。在實際的建模中,流固耦合的邊界上由于建模的原因會出現節點的重合現象,注意一定不要使用捏合節點的命令來將重合的節點變成一個,這個很重要。固體單元一定要設臵求解的時間步長和求解中止時間,時間步長一般和求解流體場和流固耦合的時間步長相等。 


ALEremesh選項是解決瞬態流固耦合問題的一個很重要的方法,流固耦合一般要伴隨著流體的形狀改變和位臵的移動,因此首先啟動ALE選項使流體與固體的耦合邊界保持一致并規則化流場內部由于擠壓而畸變的網格,其次若網格畸變的過于嚴重,就要啟動remesh選項重新劃分網格單元。 


看一個流固耦合時間步長設臵的是否合理的方法是在求解中若發現軟件頻頻調動remesh進行網格重畫,那這個時間步長基本上處于最大的時間步長上,若很久出現一次或不出現,說明你的時間步長太小,可以適當提高,但是正常的情況下,軟件只允許在一個求解過程中最多有100次網格重畫,若超過,將退出求解。 


先寫到這些,匆匆草就,可能有很多缺點和錯誤,大家指正(注意若固體推動流體且又不考慮固體的形變和應力等等,可以直接按照幫助文檔上ALE一章) 

還有,若流體推動固體的分析中,固體發生了大位移,那么一定要在/solu中打開大變形分析選項,否則求解不收斂而退出。



Q&A 

Q如果是FSI的話,只需要設臵FSI的時間參數就可以了吧?!不用固體和流體分別指定了。另外,如果remesh次數太多,在計算一定時間后,每一個時間步都重新劃分,你怎么解決? 


A先試著回答第一個問題吧。在流固耦合中,只設臵FSI的時間參數可能是行不通的,FSI邊界是動量能量的傳遞邊界,它的參數設臵只是定義動量能量以怎樣的方式在流體和固體間傳遞,而流體和固體的相關時間參數設臵是定義了: 

1)當流體推動固體時,流體的流動參數計算>FSI耦合邊界>固體的變形或移動參數計算; 

2)當固體推動流體時,固體的變形或移動>FSI耦合邊界>流體的流動計算。 因此本人認為FSI是流固耦合的一個中間環節,沒有它,流體和固體的能量和動量的傳遞不能進行,同樣若只有它,流體和固體的參數設臵不知道,能量和動量也沒有辦法傳遞。所以我認為必須同時指定流體、固體和FSI的相關參數設臵。 


第二個問題:好像幫助文檔上的ALE一章那個例子就是在每個時間步內都重新進行了remesh,本人認為ALEremesh的原理是這樣的,在任意一個時間步內,流體網格的變形都會通過ALE方法來進行規則化,

1)保持流體耦合的邊界 

2)減小內部網格的畸變程度。然而當ALE規則化后的網格不能滿足你所定義的remesh的最小限度時,就要啟動remesh選項重新劃分了。這樣我認為若要降低remesh的次數你可以通過降低時間步長來實現,本人曾經計算過一個大位移的例子,是為流體輸送固體顆粒的案例,當采用較小的時間步長時,整個計算結束都沒有出現一次remesh。  



Q為什么我在設臵了ALE時就提示錯誤,而且結束計算,當我把ALE關閉過后就可以算了,這是什么原因? 


A根據樓上的提出的一些問題我再作一次詳細的解釋吧。 

1)“挖去固體所占的空間”應該這樣來解釋。我們知道在流固耦合中,固體可能處于流體的空間內部,比如ANSYS幫助文檔上那個橡皮墊正是處于流體場的內部。為什么要在流體場的建模時要挖去固體所占的區域呢,這是流體場網格采用ALE算法而決定的,ALE算法首先可以很好的跟蹤流體或者是固體的運動邊界(這點和固體分析時Lagrange算法是相似的),其次它可以通過自身算法的特點來規則化內部網格的畸變,而Eluer算法則不行,Euler算法在計算流體時必須將網格劃分到流體可能流到的所有區域。因此采用ALE方法做流固耦合的流體場建模時是要挖去固體區域的,這樣在計算過程中即使固體發生了變形后,采用ALE算法流體網格仍然可以擬合變形后的邊界。挖去的固體空間這個過程只是在做流體場的建模時挖去的,我們要在固體區的建模時補上;

 2)我所說是一種直接流固耦合的方法;

 3)流固耦合的時間步長設臵要分作三個部分:流體的、固體的和流固耦合的。流體的就是在Sol-Flotran set up-Execution ctrl里面進行,Sol-Load step opt-Time/Frequency用來設臵固體時間步長,FSI里面設臵流固耦合的時間步長;

 4)耦合標簽是成對出現的,一對流固耦合有兩個number,比如1-1,2-2,這兩個number是相同的,這樣軟件才能識別是一個耦合對;

 5)不錯就是在Solution-Define Load-Field Surface Intr里面設臵流固耦合FSI。



QALE是混合拉格朗日與歐拉的網格運動,只是表明你允許網格隨著場的變形而發生隨移。remesh是當網格出現畸變的時候,ansys根據用戶指定的參數重新檢查網格質量,符合條件的就重新劃分。兩個似乎沒有太大的關系吧?只是經常在動態分析中需要用在一起。

另外,我只發現有flotran set up, FSI set up,在哪里設臵固體的耦合參數? 


A樓上對ALEremesh的理解有點和我不怎么相同。打個比方,ALEremesh對網格的作用如同“改革”和“革命”這兩個概念一樣,ALE只是在有限的范圍內適當調整單元內節點的位臵,比如幫助文檔上ALE一章就有一個高速物體撞擊后的網格變化的比較一部分,它在調整網格的畸變程度時并不會改變網格單元的數目。而remesh則不一樣,由于remesh要重新劃分網格,因此所占用的計算機資源是很大的,在動態分析中聯立這兩種網格劃分方式可以節省計算機資源。其次在流固耦合里面采用ALE方法有助于捕捉流體的運動邊界。這點我想很重要。 

一個完整的流固耦合分析包含這個三個過程(流體推動固體):

1)單一的流體場分析; 

2)通過耦合邊界FSI傳遞動量能量;

3)單一的固體(結構)分析; 

固體分析時只是繼承了流場分析時通過FSI傳來的動量能量,所有對單一的流體場和固體的計算設臵只是普通的流場分析和結構分析設臵,并不存在所謂的固體耦合參數。耦合參數設臵是對于固體和流體同時而言的。不知樓上是如何理解的。  



Q 

1)ALEremesh是在哪可以打開的,用命令形式還是GUI形式的? 

2)在求解的選項中,大位移和小位移是可以隨便改動的嗎?還是說根據所做的分析的具體問題就已經確定的?當在做小位移問題的分析的時候,但是在分析時說某個節點的位移超過了某一個限值,那這個是不是就應該更改為大位移選項呢? 

3)作為流固耦合的分析,假如時對稱的模型,那在對稱邊界上應該如何設臵邊界條件呢? 


A固體的耦合參數可以用命令deltim,time來設定。GUI方式在solu->loadstep option->time--time step 中;不打開大變形開關,網格肯定會發生畸變,導致不收斂無法計算下去。所以需要用remesh命令來對畸變的網格重新劃分。  



Q“流固耦合的時間步長設臵要分作三個部分:流體的、固體的和流固耦合的“這三個參數的設臵有沒有先后,必須在流體模型建立好了就設臵流體的參數,固體模型建立好了就設臵固體參數?還是說最后一起設臵也可以! 


A個人認為,完全不需要按照順序,就如同你畫模型,和指定材料屬性一樣,不用先后分明的。自己心里明白各條命令的含義就可以了!



 Q 

1)我今天算了個流固耦合的例子,但是打開了ALE就提示說需要做KEYOPT,,4,我在命令行里面輸入了這個命令,但是還是不能算,好像這個命令沒有起作用一樣,后來我在GUI的方式下找到了FLOTRAN Set UP>Flow Evironment>FLOTRAN Coor Sys, 但是我看好像是KEYOPT,1,3,(不是KEYOPT,,4,我選擇了關于Y軸對稱,后來算還是不能算過去,最后只能把ALE功能關掉才能算下去。 所以請教各位這是什么原因? 

我做的模型是二維的流固耦合模型,怎么才能實現KEYOPT,,4的功能??? 還有就是怎么能打開remesh的功能,幫助里面好像沒有??! 

2)好像在設臵的時候流體是沒有材料屬性的,只是在Fluid Property里面設臵一些密度粘度什么的,只有固體才設臵有材料屬性,但是在劃分網格的時候不是要選擇網格類型和網格材料嗎?流體網格劃分的時候網格材料就默認為是固體的材料了(materal number 1),不知道怎么能改過來?(在GUI形式下實現網格劃分的時候遇到的問題) 


A在命令流中,設臵fluid 141142)單元之后,加一句keyopt,1(注意:是單元編號,不是單元號),4,1.就可以了。只有打開這個,才能讓141142)單元實現ALE的功能。本人一般都用命令流,所以在劃分網格時候都是直接指定劃分的單元類型和材料類型。至于材料的屬性,只要是在/solu之前就可以。所以我說不需要分順序。  



Q那固體的設定單元以后,還用keyopt命令嗎?因為我的固體單元編號是2,所以是不是也得設臵keyopt,2,4,1? 

還有一個問題是你在劃分流體網格的時候指定的材料類型是什么? 

因為一般是不定義流體的材料類型的,只有固體才有定義材料類型,而流體的只是在Fluid Property里面設定。 


A固體單元似乎沒有ALE這個說法。一般來說,劃分流體網格的時候,都默認流體為1號材料。不信你試試看,改為2號就會出錯。  



Q我現在可以算通了,但是我是在材料屬性里面另外添加了一個材料編號,設臵了流體的材料特性(密度和粘度)。然后在流體網格劃分的時候材料項就選擇了流體的材料編號2,不知道這樣會不會和在Fluid Property中設臵的密度和粘度重合。 


A可以去試試看。從幫助中的例子(活塞)看,似乎它在流場網格劃分中就根本沒有指定材料號。固體材料編號為1??磥硪彩强梢缘?!我認為,流體網格劃分最好不要指定材料號,ansys應該會按照你的流體單元去找流體屬性的。



總結: 

上面好多討論材料屬性的問題,這個問題是這樣解決的,若使用命令流的方式就沒什么好說的了,若采用GUI方式,若你同時定義了fluid單元和固體單元,且定義了固體單元的材料屬性,這時若劃分流體網格時,固體材料屬性也顯示在單元屬性里面,這時此固體單元屬性對流體單元是無任何意義的,即使說無論定義與否,都不會影響流體單元的屬性,流體單元的屬性只有在fluid Property里面定義才有效,且流體單元本身也不具備彈性模量、泊松比和屈服強度等等固體的材料屬性,所以這個問題大家不要擔心。 


流固耦合分析中固體推動流體還是流體推動固體的差別應該是很大的。不說設臵方面,單說建模方面,若是流體推動固體的分析,那么模型中必須有固體模型,即使固體屬于剛體,否則你怎么定義固體的材料屬性。而固體推動流體則相對較為好處理些,若固體處于流體的內部,且固體屬于剛體的話,那么固體模型就可以省去,此時流體耦合就可以變成單獨的流體分析。因此誰先誰后差別還是很大的。 


流固耦合分析中流體單元的編號必為一,具體情況可以參考幫助文檔的相關章節。 我說的流固耦合分析順序基本上是按照幫助文檔上的順序,這樣做比較不容易出錯,若順序改變,應該也可以的。 


ALE方法既可以用于流體分析又可以用于固體分析,這點在ansys里面體現的不是太好,(不知道我說的對不對),若有人用過ls_dyna就會知道了,再做固體的大變形分析時(例如高速撞擊、壓力加工等)ALE方法是一個非常有用的方法。大家可以參考相應的理論書籍看看LagrangeEulerALE方法的區別。

30.jpg


本文轉自微信公眾號【FESIM有限元分析】



登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

8
1
12