zoukankan      html  css  js  c++  java
  • Fluent UDF【5】:第一个UDF

    这里以一个简单的初始化案例来描述UDF的使用过程。

    0 Fluent中的Patch

    Fluent中提供了全域初始化以及局部Patch功能。对于整体区域的全局初始化可以采用starndard及hybrid方法进行初始化,指定各种物理量的初始分布。而对于计算域中的局部区域初始化,则可以通过Patch功能来实现。
    在使用Patch方法时,需要实现对要进行Patch的区域进行标记。选择Mark/Adapt Cells→Region...可弹出区域定义对话框。

    可以在弹出的对话框中设置几何条件来Mark区域。

    然而在此对话框中可定义的形状类型只有三种:Quad、Circle或Cylinder,在3D模型中对应的是Hex、Sphere以及Cylinder。对于更复杂的模型似乎无能为力。此时可以借助UDF来解决问题。

    1 案例描述

    如下图所示的矩形区域为计算区域,其初始温度为300K。计算模型尺寸如图所示。
    几何模型
    图中红色部分为要进行初始化处理的椭圆区域,其初始温度为500K。

    2 网格

    网格如图所示。
    生成的网格

    3 编写UDF

    对于这种椭圆形区域的初始化,只能采用UDF来实现。利用DEFINE_INIT宏来实现这种区域的标记工作。
    本案例中椭圆方程为:

    [frac{(x-0.05)^2}{0.03^2}+frac{(x-0.03)^2}{0.015^2} =1 ]

    因此可编写UDF如下。
    程序代码

    4 编译UDF

    利用User Defined标签页下的Function→Compiled...,Fluent软件会弹出UDF编译对话框。
    编译UDF
    在弹出的对话框中利用Add...按钮添加UDF源文件,点击Build按钮进行编译,并点击按钮Load加载UDF。
    编译UDF
    本案例也可以采用解释的方式运行。

    5 Hook UDF

    UDF编译完成后,需要将UDF加载到Fluent中。这部分工作可以通过相应的GUI来实现。
    DEFINE_INIT宏需要在User Defined标签页下的Funcition Hooks...中进行加载。
    Hook UDF
    选择此按钮后打开UDF加载对话框。
    加载UDF

    5 查看结果

    在查看初始化结果之前,需要开启相应的模型。由于本案例初始化的是温度变量,所以必须首先开启能量方程。
    开启能量方程
    之后进行初始化。
    初始化
    初始化完毕后可以查看温度云图分布,如下图所示。
    初始化结果
    可以看到椭圆形区域初始温度设置为500K。
    按同样的道理,可以初始化任何形状的区域,只要这些区域可以用数学函数来表达。


    更多CFD资料可微信扫描下方二维码关注微信公众号。

    微信扫码关注公众号

  • 相关阅读:
    为什么JSP的内置对象不需要声明
    什么不能输?
    可采用两种方法得到一个EJB对象
    EJB
    J2EE之JPA
    Application、Activity Stack 和 Task的区别
    关于 android屏幕适配
    JSP 向 JavaScript 中传递数组
    Android 图片异步加载 加载网络图片
    Android 显示意图和隐式意图的区别
  • 原文地址:https://www.cnblogs.com/LSCAX/p/7004369.html
Copyright © 2011-2022 走看看