教ChatGPT编写Fluent UDF

昨天有 道 友说可以尝试使用ChatGPT写 Fluent UDF,然后我就试了一下。
为了不为难机器人,这里挑了一个最简单的。比如经常使用UDF定义随空间变化的边界条件,如定义一个入口速度与y坐标成函数关系的边界条件:

先把家伙事儿都准备好(板凳和ChatGPT),然后开干。

首先我提出自己的需求。

Fluent UDF是Fluent中利用C语言自定义其功能的工具。请编写一段Fluent UDF程序代码,定义入口边界速度为$$v = 2*y+3$$

这里担心ChatGPT不知道啥是Fluent UDF,所以事先说明了一下,后面让其编写UDF。公式可以用$$括起来,这样ChatGPT能够将其识别为公式。

ChatGPT输出为:

教ChatGPT编写Fluent UDF的图1

代码中存在很多的问题。不过ChatGPT居然知道先包含头文件udf.h,也知道需要调用UDF宏DEFINE_PROFILE,而且将入口速度还给命名为inlet_velocity,不止如此,DEFINE_PROFILE宏包含有3个参数也都写对了。不过下面的实现代码就惨不忍睹了。

下面人工对其第一次纠错。

上面的程序存在错误。完成此程序代码,需要首先利用F_CENTROID得到 坐标,然后利用F_PROFILE宏得到速度表达式。另外边界赋值需要放在循环中,此时应该使用begin_f_loop进行循环。重新修改上面的程序。

第一次纠错后的输出如下所示。

教ChatGPT编写Fluent UDF的图2

看起来似乎好多了,程序的基本框架没问题了,不过F_CENTROID宏参数写错了,而且获取y坐标的方式也错了。

人工对其第二次纠错。

上面的程序大部分内容是正确的,但是依然存在错误。F_CENTROID宏有三个参数,第一个参数是数组。修改一下上面的程序。

第二次纠错后ChatGPT的输出如下所示。

教ChatGPT编写Fluent UDF的图3

还是有错误,需要进行第三次纠错。

F_CENTROID宏的定义有错误。应该先定义一个数组,然后利用该数组作为F_CENTROID宏的第一个参数。此数组的第2个元素为 坐标。修改上面的程序。

第三次纠错后ChatGPT的输出为:

教ChatGPT编写Fluent UDF的图4

这次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缺乏训练,导致所有的代码一行注释都没有。


这里说一说自己的感觉:

  1. ChatGPT的确挺好玩儿的,不过想要真正的用于提高生产力,目前似乎还无法脱离人的参与。
  2. 在专业领域应用ChatGPT其实还是有门槛的,对使用者的专业素养有要求,否则输出的结果好坏无从判断。
  3. 问题输入的形式(输入数据)对输出质量有直接影响。
  4. 目前尚不清楚ChatGPT会不会持续学习(训练的数据不知道是否会被保留),不过在同一个会话中似乎是可以的。就比如上面的训练完成后,再编写类似的UDF,成功率非常高,不过如果退出会话再创建新的会话,则一切还得从头开始。

昨天有人留言说我们使用ChatGPT是帮助米帝训练AI然后被用来打我们自己,但我想不明白的是,如果真是这样的话,这么好的武器米帝为啥不用呢(明显ChatGPT不对咱们提供服务的)。个人观点,只要是能提高生产力的工具且米帝不让咱们使用的,那就一定是好工具,要大用特用。假如以后证实用户使用的确会帮助ChatGPT进行训练,我觉得筒子们不妨尝试着将ChatGPT训练成共产主义接班人。

不过还是期待国内的科技巨头早日能够推出自己的产品。


(完)


文章来源:CDF之道

ChatGPTfluentFLUENT UDF

教ChatGPT编写Fluent UDF的评论0条

    暂无评论

    教ChatGPT编写Fluent UDF的相关案例教程

    1. 简介 今天我们接着说Fluent UDF功能,我们经常使用的UDF宏主要有以下几种: DEFINE_PROFILE: 定义模型边界 DEFINE_ADJUST: 用于协调计算过程中物理量 DEFINE_INIT: 初始化宏,用于自定义初始化 DEFINE_PROPERTY: 定义材料物性 上述的几种宏基本上无论使用什么物理模型都会用到,还有部分宏是在特定的模型下才会使用,如使用DPM模型时用
    前面我们所讲述的Fluent的相关知识只是很少很少的一部分,但是今天我们还是开始一部分新的知识。之所以这样做,是因为今天所讲述的知识在大家以后的学习中用途很广泛,同时这部分知识需要大家提前学习一些基础知识。 图1.UDF用户手册 UDF介绍:所谓UDF-用户自定义函数(User-defined functions),学习过编程语言的同学对此应该并不陌生,无论是C语言、JAVA还是Python,自定
    Fluent UDF 许多学习了一段时间Fluent的朋友们会开始接触到一个叫UDF的东东,这个东东的全称叫User Define Function,翻译成中文可以是“用户自定义功能”或“用户自定义函数”。 许多想入门UDF的朋友在学习UDF前面临的第一个问题应该是UDF环境变量设置的问题,这个问题可能已经成为新手入门UDF的一个门槛了。UDF环境变量设置现在网上百度也能搜到一些教程,这里我不操作
    5.1.表达式简介 Fluent表达式语言是一种基于Python的解释声明性语言,使您能够:指定关于时间、迭代次数、位置和解变量的复杂边界条件和源术语。根据时间或迭代指定各种模型和求解器设置。可替代UDF输入变量 5.1.1表达式语法 表达式是一个字符串,表示值、变量、运算符和函数调用的组合,当用适当的变量值计算时,它返回一个值。例如: 表达式的计算结果可以是实数、布尔值、实数域或布尔值域。例如,
    最近ChatGPT可以说是太火了! 简单介绍一下,ChatGPT是最近火起来的AI聊天机器人,不仅能够智能回复,还能基于大数据库,按照要求撰写文案,甚至还可以编代码、做图…… 功能强大,让人忍不住猜想:我的工作是不是要被AI取代了? 仿真工程师会不会被AI替代呢?我们特意问了下ChatGPT,它是这样回答的: 确实,仿真需要工程师设计仿真模型、评估仿真结果的准确性以及对结果进行解释,AI不可能完全
    影响力
    粉丝
    内容
    获赞
    收藏
      项目客服
      培训客服
      0 3