先把家伙事儿都准备好(板凳和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训练成共产主义接班人。
不过还是期待国内的科技巨头早日能够推出自己的产品。
(完)
本篇文章来源于微信公众号: CFD之道
评论前必须登录!
注册