FLUENT-UDF日记-1-DEFINE_ADJUST

15 篇文章 46 订阅


在家闲着也是闲着,开学无望,不如大胆的立个flag,从今天开始,每天学习一个UDF,大家一起进步吧!

chapter-1 UDF概述

1.1网格基本知识

网格组成

  • node 节点
    node thread 一组节点
    edge 一个面(三维)的边界
    face 面单元(二维或三维)的边界
    face thread 一组面
    cell 控制体
    cell center 控制体中心
    cell threads 一组单元格
    domain 一组节点、面和控制体

  • node 存储与网格点相关的数据的结构数据类型
    face_t 整数数据类型,用于标识面线程中的特定面
    cell_t 整数数据类型,用于标识face thread中的特定单元格
    Thread 结构数据类型,用于存储它所表示的一组单元格或面所共有的数据

chapter-2 定义宏

2.1. 概述

DEFINE宏的定义包含在udf.h头文件中
确保宏和参数的第一个括号之间没有空格
对于宏定义,名称应为小写,输入参数是从fluent求解器传递到函数的变量。

2.2通用定义宏

2.2.1 DEFINE_ADJUST

功能:DEFINE_ADJUST可用于调整或修改不作为参数传递的ANSYS FLUENT变量。例如,可以使用DEFINE_ADJUST修改流量变量(例如,速度、压力)和计算积分。还可以使用它对域上的标量进行积分,并根据结果调整边界条件。

example-1

该UDF对整个域上的湍流耗散进行积分。然后在控制台中显示此值。UDF在每次迭代中调用一次。

#include "udf.h"
 DEFINE_ADJUST(my_adjust,d)
 {
    Thread *t;
    real sum_diss=0.;
    cell_t c;
    thread_loop_c(t,d)/*在domain中遍历thread*/
    {
     begin_c_loop(c,t)/*在thread中遍历cell*/
     sum_diss += C_D(c,t)*C_VOLUME(c,t);/*C_D是湍动能耗散率,C_VOLUME获取cell的体积,在udf中积分即为求和*/
     end_c_loop(c,t)
    }
    printf("Volume integral of turbulent dissipation: %g\n", sum_diss);
 } 
example-2

该UDF将用户定义标量指定为另一个用户定义标量的梯度的函数。该函数在每个迭代中调用一次

#include "udf.h"
 DEFINE_ADJUST(adjust_fcn,d)
 {
    Thread *t;
    cell_t c;
    real K_EL = 1.0;
   
    if (! Data_Valid_P())
      return;
    thread_loop_c(t,d)
      {
      if (FLUID_THREAD_P(t))/*检查单元是否在流体域*/
        {
         begin_c_loop_all(c,t)/*串行时,begin_c_loop_all和begin_c_loop是相同的;并行时,host 节点两者相同,node 节点两者不一样*/
            {
            C_UDSI(c,t,1) +=K_EL*NV_MAG2(C_UDSI_G(c,t,0))*C_VOLUME(c,t);/*C_UDSI是自定义标量,NV_MAG2计算平方和,C_UDSI_G取梯度*/
            }
         end_c_loop_all(c,t)
        }
      }
 }
  • 11
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于湿工况冷凝,可以通过Fluent UDF编写自定义函数来实现。首先,需要在Fluent中启用UDF功能。具体步骤如下: 1. 打开Fluent,选择“Define/User-defined Functions”菜单。 2. 在“User-defined Functions”窗口中,选择“Compiled UDFs”标签页。 3. 点击“Load”按钮,加载编译好的UDF库文件。 4. 在Fluent中使用自定义函数。 接下来,我们可以编写UDF代码来实现湿工况冷凝的计算。下面是一个示例代码,用于计算冷凝器的冷凝量: #include "udf.h" DEFINE_ADJUST(adjust_temp, domain) { real rho, cp, hfg, Tsat, Tdew, Twall, Tfilm, q, A, h; /* 获取冷凝器表面温度 */ Twall = C_T(c,t); /* 获取饱和压力和温度 */ Psat_T(Tsat, pcrit, Tcrit); Tdew = Tsat - 5.0; /* 计算膜温度 */ Tfilm = Twall + 0.5 * (Tdew - Twall); /* 计算水膜厚度 */ h = 0.0005 * pow(Re, 0.8) * pow(Pr, 0.4) * pow((mu_l / mu_g), 0.1) * pow((rho_l / rho_g), 0.5) * pow((rho_l * (rho_l - rho_g) * g * Dh), -0.25); /* 计算冷凝量 */ rho = C_R(c, t); cp = C_CP(c, t); hfg = HFG(Tsat); q = hfg * (Twall - Tdew) * A * h / (1.0 + 0.68 * (Tfilm - Twall)); /* 将冷凝量保存到当前时间步的文件中 */ fprintf(fp, "%g\n", q); /* 将冷凝量设置为零,防止Fluent计算过程中修改 */ C_UDMI(c, t, 0) = q; } 在以上代码中,我们通过获取表面温度、饱和压力和温度、水膜厚度等参数,来计算冷凝量。最后,我们将冷凝量保存到当前时间步的文件中,并将其设置为零,以防止Fluent计算过程中修改。 需要注意的是,以上代码仅供参考,具体实现方法需要根据实际情况进行调整。同时,需要在Fluent中正确设置模拟参数,以保证UDF能够正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值