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