FLUENT-UDF日记-1-DEFINE_ADJUST

day 1

  • chapter-1 UDF概述
    • 1.1网格基本知识
  • chapter-2 定义宏
    • 2.1. 概述
    • 2.2通用定义宏
      • 2.2.1 DEFINE_ADJUST
        • example-1
        • example-2

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

chapter-1 UDF概述

1.1网格基本知识

FLUENT-UDF日记-1-DEFINE_ADJUST_第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)
        }
      }
 }

你可能感兴趣的:(udf,fluent,visual,studio,数据结构)