教ChatGPT編寫Fluent UDF
先把家伙事兒都準備好(板凳和ChatGPT),然后開干。
首先我提出自己的需求。
Fluent UDF是Fluent中利用C語言自定義其功能的工具。請編寫一段Fluent UDF程序代碼,定義入口邊界速度為
”$$v = 2*y+3$$。
這里擔心ChatGPT不知道啥是Fluent UDF,所以事先說明了一下,后面讓其編寫UDF。公式可以用$$括起來,這樣ChatGPT能夠將其識別為公式。
ChatGPT輸出為:
代碼中存在很多的問題。不過ChatGPT居然知道先包含頭文件udf.h,也知道需要調用UDF宏DEFINE_PROFILE,而且將入口速度還給命名為inlet_velocity,不止如此,DEFINE_PROFILE宏包含有3個參數也都寫對了。不過下面的實現代碼就慘不忍睹了。
下面人工對其第一次糾錯。
上面的程序存在錯誤。完成此程序代碼,需要首先利用F_CENTROID得到 坐標,然后利用F_PROFILE宏得到速度表達式。另外邊界賦值需要放在循環中,此時應該使用begin_f_loop進行循環。重新修改上面的程序。
”
第一次糾錯后的輸出如下所示。
看起來似乎好多了,程序的基本框架沒問題了,不過F_CENTROID宏參數寫錯了,而且獲取y坐標的方式也錯了。
人工對其第二次糾錯。
上面的程序大部分內容是正確的,但是依然存在錯誤。F_CENTROID宏有三個參數,第一個參數是數組。修改一下上面的程序。
”
第二次糾錯后ChatGPT的輸出如下所示。
還是有錯誤,需要進行第三次糾錯。
F_CENTROID宏的定義有錯誤。應該先定義一個數組,然后利用該數組作為F_CENTROID宏的第一個參數。此數組的第2個元素為 坐標。修改上面的程序。
”
第三次糾錯后ChatGPT的輸出為:
這次ChatGPT自信滿滿地說自己的輸出內容都是正確的。
這段代碼的確可以正確地編譯并運行。
ChatGPT輸出的代碼如下:
#include "udf.h"
DEFINE_PROFILE(inlet_velocity,t,i)
{
real y, v;
face_t f;
real x[ND_ND];
begin_f_loop(f,t)
{
F_CENTROID(x,f,t);
y = x[1];
v = 2*y + 3;
F_PROFILE(f,t,i) = v;
}
end_f_loop(f,t)
}
不過可能是ChatGPT對Fluent UDF缺乏訓練,導致所有的代碼一行注釋都沒有。
這里說一說自己的感覺:
-
ChatGPT的確挺好玩兒的,不過想要真正的用于提高生產力,目前似乎還無法脫離人的參與。 -
在專業領域應用ChatGPT其實還是有門檻的,對使用者的專業素養有要求,否則輸出的結果好壞無從判斷。 -
問題輸入的形式(輸入數據)對輸出質量有直接影響。 -
目前尚不清楚ChatGPT會不會持續學習(訓練的數據不知道是否會被保留),不過在同一個會話中似乎是可以的。就比如上面的訓練完成后,再編寫類似的UDF,成功率非常高,不過如果退出會話再創建新的會話,則一切還得從頭開始。
昨天有人留言說我們使用ChatGPT是幫助米帝訓練AI然后被用來打我們自己,但我想不明白的是,如果真是這樣的話,這么好的武器米帝為啥不用呢(明顯ChatGPT不對咱們提供服務的)。個人觀點,只要是能提高生產力的工具且米帝不讓咱們使用的,那就一定是好工具,要大用特用。假如以后證實用戶使用的確會幫助ChatGPT進行訓練,我覺得筒子們不妨嘗試著將ChatGPT訓練成共產主義接班人。
不過還是期待國內的科技巨頭早日能夠推出自己的產品。
(完)
文章來源:CDF之道
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















