国产精品日韩一区二区三区-国产精品日日摸夜夜添夜夜添1-国产精品入口免费视频-国产精品三级-亚洲国产欧美另类-亚洲国产欧美日韩

Fluent UDF【16】:通用宏[1]【轉發】

2017-07-05  by:CAE仿真在線  來源:互聯網

有人留言說UDF專題好多內容是翻譯自幫助文檔,事實的確是這樣的。UDF本沒有太多需要介紹的內容,各位學習UDF的朋友們要養成查UDF文檔的好習慣,沒事兒多看看C語言,多動手練習。編程技能還是要靠不斷地練習和總結,程序代碼也要靠不斷地修改和優化。

從本期開始,UDF專題進入攻堅階段。本期介紹UDF中的通用宏。

Fluent UDF提供了一些通用宏,用于控制Fluent在使用過程中的一些行為,一些比較常用的通用宏包括:

  • DEFINE_ADJUST:用于操縱變量

  • DEFINE_DELTAT:用于調整時間步長

  • DEFINE_EXECUTE_AT_END:在迭代完成后執行操作

  • DEFINE_EXECUTE_AT_EXIT:在Fluent關閉時執行操作

  • DEFINE_EXECUTE_FROM_GUI:實現在用戶自定義界面中執行操作

  • DEFINE_EXECUTE_ON_LOADING:加載UDF時執行一些操作

  • DEFINE_EXECUTE_AFTER_CASE/DATA:讀取Case文件后執行操作

  • DEFINE_INIT:初始化

  • DEFINE_ON_DEMAND:異步執行一些操作

  • DEFINE_REPORT_DEFINITION_FN:為用戶定義的報告返回值

  • DEFINE_RW_FILE:讀寫文件

  • DEFINE_RW_HDF_FILE:讀寫HDF文件

1

DEFINE_ADJUST

可以利用DEFINE_ADJUST宏調整或控制一些不作為調用參數的變量。例如用戶可以使用DEFINE_ADJUST修改流動參數(如速度、壓力等),也可以計算某些標量在全域的積分量,甚至可以基于計算結果調整邊界條件。DEFINE_ADJUST宏在每一個迭代步被執行,并且在每一個迭代中傳輸方程求解之前被調用。

  • 宏形式:DEFINE_ADJUST(name , d)

  • 宏參數:symbol name, Domain *d

  • 返回值:無返回值

  • 調用形式:解釋或編譯

下面是一個簡單的案例,其利用DEFINE_ADJUST宏在每一步迭代過程中計算區域內的湍流耗散率,計算結果顯示在console中。

#include "udf.h" DEFINE_ADJUST(my_adjust,d) { Thread *t; /* Integrate dissipation. */ real sum_diss=0.; cell_t c; thread_loop_c(t,d) { begin_c_loop(c,t) { sum_diss += C_D(c,t)* C_VOLUME(c,t); } end_c_loop(c,t) } printf("總耗散率: %g\n", sum_diss); }

DEFINE_ADJUST宏編譯或解釋后,可以通過User Defined標簽頁下的Function Hooks…工具按鈕來加載。如下圖所示。

Fluent UDF【16】:通用宏[1]【轉發】fluent培訓的效果圖片1

選擇此工具按鈕后彈出UDF加載對話框,如下圖所示。

Fluent UDF【16】:通用宏[1]【轉發】fluent培訓的效果圖片2

選擇Adjust后的Edit…按鈕,彈出Adjust Functions對話框,如下圖所示,選擇列表框中的宏,選擇Add按鈕將其從左側列表框中加載至右側列表框,點擊OK按鈕確認操作并關閉對話框。

Fluent UDF【16】:通用宏[1]【轉發】fluent培訓的效果圖片3

這樣,DEFINE_ADJUST宏就被被掛載到Fluent中,在每一次迭代時都會調用。

2

DEFINE_DELTAT

DEFINE_DELTAT宏主要用于在瞬態求解過程中控制時間步長。需要注意的是:此宏只能用于Time Stepping Method為Adaptive時。若為默認的Fixed,則會出錯。如下圖所示。

Fluent UDF【16】:通用宏[1]【轉發】fluent培訓的效果圖片4

  • 宏形式:DEFINE_DELTAT(name , d)

  • 宏參數:symbol name, Domain *d

  • 返回值:real

  • 調用形式:解釋或編譯

如下例程為調整時間步長,當計算時間小于0.5s時,采用時間步長0.1s,其他時刻時間步長采用0.2。

#include "udf.h" DEFINE_DELTAT(mydeltat,d) { real time_step; real flow_time = CURRENT_TIME; if (flow_time < 0.5) time_step = 0.1; else time_step = 0.2; return time_step; }

解釋或編譯UDF后,此宏的加載方式為:

  • 選擇Run Calculation樹形節點后,選擇Time Stepping MethodAdaptive。

  • 點選按鈕Settings…,如下圖所示。

Fluent UDF【16】:通用宏[1]【轉發】fluent培訓課程圖片5

  • 在彈出的設置對話框中,設置User-Defined Time Step為所編譯的UDF,如下圖所示。點擊OK按鈕掛載宏。

Fluent UDF【16】:通用宏[1]【轉發】fluent培訓課程圖片6

3

DEFINE_ON_DEMAND

此宏由用戶手動調用執行,而非Fluent自動調用。

  • 宏形式:DEFINE_ON_DEMAND(name )

  • 宏參數:symbol name

  • 返回值:沒有任何返回值

  • 調用形式:解釋或編譯

此宏的參數中并無任何Fluent傳入的數據,因此如果是獲取計算域中的數據,則需要利用Get_Domain先獲取對應區域的Domain結構。

例如下面的實例計算了一個溫度函數:

Fluent UDF【16】:通用宏[1]【轉發】fluent培訓課程圖片7

并將值賦給UDM。

#include "udf.h" DEFINE_ON_DEMAND(on_demand_calc) { Domain *d; real tavg = 0.; real tmax = 0.; real tmin = 0.; real temp,volume,vol_tot; Thread *t; cell_t c; d = Get_Domain(1); thread_loop_c(t,d) { begin_c_loop(c,t) { volume = C_VOLUME(c,t); temp = C_T(c,t); if (temp < tmin || tmin == 0.) tmin = temp; if (temp > tmax || tmax == 0.) tmax = temp; vol_tot += volume; tavg += temp*volume; } end_c_loop(c,t) tavg /= vol_tot; begin_c_loop(c,t) { temp = C_T(c,t); C_UDMI(c,t,0) = (temp-tmin)/(tmax-tmin); } end_c_loop(c,t) } }

此宏編譯或解釋后,可通過User Defined標簽頁下按鈕Execute on Demand…加載,如下圖所示。

Fluent UDF【16】:通用宏[1]【轉發】fluent分析案例圖片8

加載UDF后如下圖所示。

Fluent UDF【16】:通用宏[1]【轉發】fluent分析案例圖片9

4

DEFINE_RW_FILE

利用DEFINE_RW_FILE宏可以向case或data文件寫入信息,或者從case和data文件中讀取信息。

  • 宏形式:DEFINE_RW_FILE(name,fp )

  • 宏參數:symbol name, FILE fp

  • 返回值:沒有任何返回值

  • 調用形式:解釋或編譯

在宏中可以利用fscanf函數讀取文件中的信息,也可以利用fprintf函數向文件寫入信息。如下例程可以向data文件中寫入DEFINE_ADJUST宏調用的次數,同時從data文件中讀取調用的次數。

#include "udf.h" int kount = 0; /* define global variable kount */ DEFINE_ADJUST(demo_calc,d) { kount++; printf("kount = %d\n",kount); } DEFINE_RW_FILE(writer,fp) { printf("Writing UDF data to data file...\n"); fprintf(fp,"%d",kount); /* write out kount to data file */ } DEFINE_RW_FILE(reader,fp) { printf("Reading UDF data from data file...\n"); fscanf(fp,"%d",&kount); /* read kount from data file */ }

此宏的加載與DEFINE_ADJUST宏相同,也在User-Defined Function Hooks對話框中。

Fluent UDF【16】:通用宏[1]【轉發】fluent分析案例圖片10

下期結合案例具體講這四個宏的用法。

Fluent UDF【16】:通用宏[1]【轉發】fluent分析案例圖片11

Fluent UDF【16】:通用宏[1]【轉發】fluent圖片12

困了~


轉自公眾號:胡坤 CFD仿真之道

開放分享:優質有限元技術文章,助你自學成才

相關標簽搜索:Fluent UDF【16】:通用宏[1]【轉發】 Fluent培訓 Fluent流體培訓 Fluent軟件培訓 fluent技術教程 fluent在線視頻教程 fluent資料下載 fluent分析理論 fluent化學反應 fluent軟件下載 UDF編程代做 Fluent、CFX流體分析 HFSS電磁分析 

編輯
在線報名:
  • 客服在線請直接聯系我們的客服,您也可以通過下面的方式進行在線報名,我們會及時給您回復電話,謝謝!
驗證碼

全國服務熱線

1358-032-9919

廣州公司:
廣州市環市中路306號金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓QQ咨詢:點擊咨詢 點擊咨詢
項目QQ咨詢:點擊咨詢
email:kf@1cae.com




主站蜘蛛池模板: 人人揉揉 | 久久国产精品只做精品 | 99精品一区二区免费视频 | 美国xxx69| 男女一进一出无遮挡黄 | 日日操操操 | 免费久久精品视频 | 午夜亚洲精品 | 天天弄天天操 | 国产自产在线 | 国产美女一级高清免费观看 | 最新99国产成人精品视频免费 | 欧美高清在线不卡免费观看 | 国产精品高清久久久久久久 | 日本a∨在线观看 | 日本www在线播放 | 欧美福利大片 | 欧美日韩在线免费观看 | 日韩aaa| 日毛片| 日韩久久精品 | 亚洲免费a | 久久国产欧美日韩精品 | 夜夜夜操 | 69视频网站 | 国产黄色大片网站 | jizz中文字幕 | 国产日韩欧美亚洲综合在线 | 99re热这里只有精品视频 | 精品中文字幕制服中文 | 久久这里只有精品视频99 | 青青久精品观看视频最新 | 欧美色视频网 | 亚洲产国偷v产偷v自拍自拍 | 亚洲精品免费在线视频 | 青青青久 | 久久一本精品 | youjizz欧美巨大 | 青春草在线视频免费 | 黄色链接入口 | 久久精品视频16 |