首页/文章/ 详情

Fluent UDF---引入

1年前浏览3591

 本文内容主要来源于Fluent官方文档。



    UDF文件的后缀名为.c或.cpp(例如:myudf.c)。一个源文件可以包含一个或多个UDF,可以定义多个源文件。

    UDF是使用Ansys Fluent提供的DEFINE宏定义的。每个UDF必须在源代码文件的开头包含UDF .h文件包含指令(#include " udf .h")。在解释或编译后,UDF将在Ansys Fluent对话框中变得可见和可选择,并可以通过在适当的对话框中选择函数名称来连接到求解器。



01

使用DEFINE Macros定义UDF


    DEFINE Macro的一般格式为:DEFINE_MACRONAME(udf_name, passed-in variables)。  
udf_name:UDF的名称,区分大小写,必须用小写字母指定。在对函数进行解释或编译后,该名称将在Ansys Fluent的下拉列表中可见并可选择。UDF的名称必须是唯一的,以避免与同名的Fluent内部函数冲突。
passed-in variables:Ansys Fluent求解器传递到函数中的变量。    
   

在以下情况下无法加载udf:未以UNC模式启动Ansys Fluent,且可能在远程机器上启动Host and Node进程。

当使用UDF时:

  1. DEFINE Macro的所有参数都需要放在源代码中的同一行中。将DEFINE语句分割为几行将导致编译错误。

  2. 宏(例如,DEFINE_PROFILE)和参数的第一个圆括号之间不能有空格,因为这会在Windows中导致错误。

  3. 不要在源代码的注释中包含DEFINE宏语句。这将导致编译错误。


02


网格术语


    大多数UDF从Ansys Fluent求解器访问数据。因为求解器数据是根据网格组件定义的,所以在编写UDF之前,需要预先学习一些基本的网格术语。

    网格被分解成控制体积或单元格。每个单元(cell)由一组节点(nodes)、一个单元中心(cell center)和绑定单元的面(faces)定义。Ansys Fluent使用内部数据结构来定义网格的域;为网格中的单元格、单元面和节点分配顺序;并在相邻细胞之间建立连接。

    thread是Ansys Fluent中的一种数据结构,用于存储关于边界或单元格区域的信息。cell thread是单元格的分组,face thread是面的分组。指向thread数据结构的指针通常传递给函数,并在Ansys Fluent中进行操作,以访问由每个thread表示的边界或单元格区域的信息。在边界条件对话框中在Ansys Fluent模型中定义的每个边界或单元格区域都有一个整数zone ID,该zone ID与该zone中包含的数据相关联。在Ansys Fluent的对话框中,看不见术语“thread”,因此在编写UDF时,可以将“zone”视为与“thread”数据结构相同。

    使用zone对cell和cell face进行分组,zone通常用于定义模型物理组件的区域(例如,入口、出口、壁、流体区域)。一个cell face可以结合一个或两个cell,这取决于它是边界面还是内部面。domain是Ansys Fluent中的一种数据结构,用于存储cell center、face thread和cell thread集合的信息。

  • node:网格点
  • node thread:一组网格点
  • edge:面(face)的边界
  • face:单元(cell)的边界
  • face thread:一组面
  • cell:单元,域(domain)被分解为cell
  • cell center:存储单元数据的位置
  • cell thread:一组单元
  • domain:节点、面和单元格thread的分组      

   

03


Fluent中的数据类型


    除了标准的C和C+语言数据类型,如real、int等,还有与求解器数据相关的Ansys fluent特定数据类型。这些数据类型表示网格的计算单元。使用这些数据类型定义的变量通常作为参数提供给DEFINE宏,以及访问Ansys Fluent求解器数据的其他特殊函数。

    一些比较常用的Ansys Fluent数据类型有:

  • Node:一种结构数据类型,用于存储与网格点相关的数据。

  • face_t:一种整数数据类型,用于标识facethread中的特定面。

  • cell_t:一种整数数据类型,用于标识cell thread中的特定单元格。

  • Thread:一种结构数据类型,用于存储它所表示的单元格组或面所共有的数据。在Thread数据类型中,有一个指针数组(存储),每个指针指向一个单元格数组或特定字段变量(如压力、速度或梯度)的面值。在该指针数组中,用于标识指向特定字段变量数组(单元格值或面值)的指针的索引类型为Svar。

  • Svar:用于标识Thread存储中的指针的索引。

  • Domain:一种结构数据类型,用于存储与网格中节点、面和单元格Thread集合相关的数据。

    在Ansys Fluent中使用UDF时,函数可以访问流体和边界区域中各个单元格或单元格面上的解变量。UDF需要传递适当的参数,例如Thread引用(即指向特定Thread的指针)和单元格或面ID,以便能够访问单个单元格或面。注意,面ID或单元格ID本身并不能唯一地标识面或单元格。总是需要thread指针和ID来标识面(或单元格)所属的thread。


来源:SimCoder
FluentUDF控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-02-02
最近编辑:1年前
签我的导演他姓张
本科 怕什么真理无穷进一寸有一寸欣喜
获赞 51粉丝 51文章 44课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈