Matlab和Fluent联合仿真实现涡激振动
????????這里以簡單的二維圓柱渦激振動流固耦合為例,向大家介紹MATLAB與Fluent聯合仿真的基本過程。
我們都知道,以往利用Fluent模擬二維圓柱渦激振動是利用用戶自定義函數(User-defined-functions,UDFs)來實現,在UDFs中,針對每一個計算時間步長,采用Compute_Force_And_Momenthong宏來計算圓柱表面受到的流體力,這個流體力是由于尾渦交替脫落在圓柱表面產生的。知道圓柱受力之后,根據結構運動方程(如下式,二階常微分方程,右端項表示流體力),采用四階龍格庫塔法離散求解,得到圓柱的振動位移和速度,然后利用DEFINE_CG_MOTION宏實現網格運動。
????????通過上面對傳統UDFs實現渦激振動的流程可以看出,關鍵步驟有三點:1、獲取圓柱所受的流體力;2、龍格庫塔法求解結構運動方程;3、將得出的位移和速度更新圓柱體位置,實現網格運動。
????????利用MATLAB與Fluent聯合仿真,可以將上述的第2點在MATLAB中實現,發揮MATLAB求解方程的能力,而Fluent主要作用則是求解流體方程,得到流體力,實現步驟1和3。因此,在這一過程中,MATLAB就像是客戶端(CLient),FLuent就像是服務器(Sever,提供流體力),組成了CS模型。
- 環境配置
????????首先我們要準備一下開發環境,需要在MATLAB中安裝聯合仿真的工具箱文件(“ANSYS_aaS 1.1.9.mltbx”文件,獲取請在公眾號(掃描文章末尾的二維碼)內回復“MATLAB聯合仿真”)。
下載后,在MATLAB中按照上圖打開文件的方式找到該文件,選擇安裝即配置好了環境。
?
- 以服務器模式啟動Fluent
????????接下來就是以服務器的方式啟動Fluent。首先選定fluent的工作路徑,之后在該文件夾下會生成聯合仿真的秘鑰文件(aaS_FluentId.txt)。接著,在環境(Environment)選項卡中,輸入“FLUENT_AAS=1”,代表以服務器方式啟動Fluent。
按照上述方式啟動之后,在工作路徑中會出現以下三個文件。
?至此,Fluent啟動過程已經完成。
????????此外,還需要按照正常流程進行GUI設置,設置完成之后保存cas文件,之后便于在MATLAB中讀取cas文件。
- MATLAB連接Fluent
????????在Fluent的準備工作都完成之后,接下來就是編寫MATLAB代碼,連接Fluent運行程序。
orb=initialize_orb(); load_ansys_aas; FluetnPath = 'Your own fluent work path'; aaS_Path = char(FluetnPath+"aaS_FluentId.txt");ICoFluentUnit = actfluentserver(orb,aaS_Path); iFluentTuiInterpreter = ICoFluentUnit.getSchemeControllerInstance();ICoFluentUnit.loadCase('cylinder_2D.cas'); iFluentTuiInterpreter.doMenuCommand('/display/mesh');????????在上述代碼中,最關鍵的是第5、6兩行。其中ICoFluentUnit?接口提供了一組函數,這些函數在 ANSYS Fluent 中執行典型命令,用于求解 CFD 仿真案例。例如,可以用它來加載或保存案例和數據文件、設置計算迭代次數、啟動計算、獲取或設置定義的參數值等等。生成的iFluentTuiInterpreter對象可用于將 TUI 或方案命令發送到 Fluent 會話,以此來實現更高級的功能。
- MATLAB實現聯合仿真
????????完成連接之后,接下來就是發送計算命令以及獲取Fluent生成的流體力數據進行聯合仿真計算。主要代碼如下:
% 任務1、獲取流體力 fileId = fopen(FluetnPath+"force.txt", 'r'); [force, count] = fscanf(fileId, '%f') ; fclose(fileId); % 任務2、運動方程求解位移 [vel_n, dis_n] = calculate_y_motion(force(end), vel, dis); dis_history = [dis_history,dis_n];% 任務3、將位移傳遞到fluent中進行迭代求解 set_dis_commnd = strcat("(rpsetvar 'vel_n ", num2str(vel_n), ")."); iFluentTuiInterpreter.execScheme(set_dis_commnd)????????通過以上聯合仿真步驟,可以實現簡單的二維圓柱渦激振動。這種MATLAB和Fluent聯合仿真的方式,能夠為更為復雜的流固耦合問題提供計算方法和思路。
?掃描上述公眾號獲取“ANSYS_aaS 1.1.9.mltbx”文件
總結
以上是生活随笔為你收集整理的Matlab和Fluent联合仿真实现涡激振动的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: reactos操作系统实现(108)
- 下一篇: android 整合最新X5WebVie