乐于分享
好东西不私藏

Ansys Fluent文档-UDF篇:模型特定的DEFINE宏(二)

Ansys Fluent文档-UDF篇:模型特定的DEFINE宏(二)

模型特定的DEFINE宏(6)DEFINE_CURVATURE_CORRECTION_CCURV

①描述

可以使用DEFINE_CURVATURE_CORRECTION_CCURV来指定自定义函数,以定义用于曲率修正项中的系数Ccurv,从而在特定流动需要时影响曲率修正的强度。

Ccurv系数应为正数,在用户自定

义函数的情况下,提供的值会自动限制为max(Ccurv,0)

②用法

DEFINE_CURVATURE_CORRECTION_CCURV (name,c,t)

nameUDF名称。

cell_t c:用于应用曲率校正系数Ccurv的单元格标识索引。

Thread *t:指向单元格线程的指针。

DEFINE_CURVATURE_CORRECTION_CCURV包含三个参数:namect。需要提供UDF的名称name,而ct是由Fluent求解器传递给UDF的变量。

③示例

在以下示例中,演示了分区方法:根据x坐标的不同,曲率修正系数Ccurv具有不同的取值。

include"udf.h"DEFINE_CURVATURE_CORRECTION_CCURV(user_curvcor_ccurv, c, t){  real curvature_correction_ccurv;  real xc[ND_ND];  C_CENTROID(xc,c,t);  if (xc[0] > 2.0)    curvature_correction_ccurv = 1.1; else    curvature_correction_ccurv = 1.0;  return curvature_correction_ccurv;}

7DEFINE_DIFFUSIVITY

①描述

可以使用DEFINE_DIFFUSIVITY来指定组分输运方程(例如质量扩散系数)或用户自定义标量(UDS)输运方程的扩散系数。

②用法

DEFINE_DIFFUSIVITY (name,c, t, i)

nameUDF名称。

cell_t c:单元格索引。

Thread *t:指向要应用扩散函数操作的单元格线程的指针。

int i:标识物种或用户定义标量的索引。

DEFINE_DIFFUSIVITY有四个参数:namecti。需要提供name,即UDF的名称。cti是由Fluent求解器传递给UDF的变量。

请注意,扩散性UDF是由Fluent在单元线程循环内部调用的。因此,UDF无需在线程中遍历单元,因为Fluent已在函数调用外部完成了这一操作。

③示例

以下名为mean_age_diffUDF函数,通过用户自定义标量计算空气平均滞留时间的扩散率。请注意,空气平均滞留时间的计算不需要执行能量、辐射或物种传输的计算。需要在模型的所有入口和出口设置uds-0 =0.0。该函数可作为解释型或编译型UDF执行。

include"udf.h"DEFINE_DIFFUSIVITY(mean_age_diff, c, t, i){    // 返回计算得到的扩散系数    // 公式:ρ × 2.88e-05 + μ_eff / 0.7    // 其中:    // 1. C_R(c,t) 返回单元(c,t)的密度(kg/m³)    // 2. 2.88e-05 是常数,可能是某种分子扩散系数或经验系数    // 3. C_MU_EFF(c,t) 返回单元(c,t)的有效粘度(kg/(m·s))    // 4. 除以0.7 是湍流施密特数(turbulent Schmidt number)的倒数    //    施密特数 Sc_t = 0.7 是湍流输运中常用的经验值    return C_R(c,t) * 2.88e-05 + C_MU_EFF(c,t) / 0.7;}

8DEFINE_DOM_DIFFUSE_REFLECTIVITY

①描述

可以使用DEFINE_DOM_DIFFUSE_REFLECTIVITY来修改Fluent基于折射率值在半透明漫反射壁面处计算的界面反射率。在执行过程中,Fluent会为每个半透明壁面以及每个波段(对于非灰离散坐标(DO)模型)调用DEFINE_DOM_DIFFUSE_REFLECTIVITY函数。因此,该函数可用于修改界面处的漫反射率和漫透射率值。

②用法

DEFINE_DOM_DIFFUSE_REFLECTIVITY(name,t,nb,n_a,n_b,diff_ref_a,diff_tran_a,diff_ref_b,diff_tran_b)

请注意,DEFINE宏的所有参数都必须放在源代码的同一行。将DEFINE语句拆分成多行会导致编译错误。

nameUDF名称。

Thread *t:指向要应用离散方向扩散函数的线程的指针。

int nb:波段编号(非灰色离散坐标(DO)模型所需)。

real n_a:介质a的折射率。

real n_b:介质b的折射率。

real *diff_ref_a:界面朝向介质a的漫反射率。

real *diff_tran_a:界面上朝向介质a的扩散透射率。

real *diff_ref_b:面向介质b的界面的漫反射率。

real *diff_tran_b:界面上朝向介质b的扩散透射率。

DEFINE_DOM_DIFFUSE_REFLECTIVITY包含九个参数:nametnbn_an_bdiff_ref_adiff_tran_adiff_ref_bdiff_tran_b。需要提供UDF的名称name,而tnbn_an_bdiff_ref_adiff_tran_adiff_ref_bdiff_tran_b是由Fluent求解器传递给UDF的变量。

③示例

以下名为user_dom_diff_reflUDF用于修改介质ab分界面两侧的漫反射率和透射率值。该UDF会被所有半透明壁面调用,并输出a侧和b侧的漫反射率与透射率数值。

#include"udf.h" DEFINE_DOM_DIFFUSE_REFLECTIVITY(user_dom_diff_refl,t,nband,n_a,n_b,diff_ref_a,diff_tran_a,diff_ref_b,diff_tran_b) {   // 输出介质a侧的漫反射和漫透射系数当前值到控制台    // %f: 浮点数格式    // *diff_ref_a: 解引用指针,获取漫反射系数的值    // *diff_tran_a: 解引用指针,获取漫透射系数的值    printf("diff_ref_a = %f diff_tran_a = %f \n", *diff_ref_a, *diff_tran_a);    // 输出介质b侧的漫反射和漫透射系数当前值到控制台    printf("diff_ref_b = %f diff_tran_b = %f \n", *diff_ref_b, *diff_tran_b); } 

9DEFINE_DOM_SOURCE

①描述

可以使用DEFINE_DOM_SOURCE来修改辐射传输方程中的发射项以及离散坐标(DO)模型中的散射项。

②用法

DEFINE_DOM_SOURCE (name, c, t, ni, nb, emission, in_scattering,abs_coeff, scat_coeff)

nameUDF名称。

cell_t c:单元格索引。

Thread *t:指向单元线程的指针。

int ni:立体角表示的方向。

int nb:波段编号(非灰色离散坐标(DO)模型所需)。

real *emission:辐射传输方程中的辐射项指针。

real *in_scattering:辐射传输方程中散射项的指针。

real *abs_coeff:指向吸收系数的指针。

real *scat_coeff:散射系数的指针。

DEFINE_DOM_SOURCE包含九个参数,需要定义UDF名称name,其他参数由Fluent求解器传递给UDF的变量。DEFINE_DOM_SOURCEFluent为每个单元调用。

③示例

在下面名为domUDF中,对辐射传输方程中的发射项进行了修改。该UDF会对所有单元格调用,并将发射项增加5%

include"udf.h"// 定义离散坐标法(DOM)辐射模型的源项函数// dom: 函数名(表示DOM辐射源项)// c: 单元索引(cell index)// t: 线程指针(thread pointer),指向当前单元所在的网格区域// ni: 离散方向索引(discrete direction index),表示当前求解的辐射方向// nb: 波段索引(band index),当使用多波段辐射模型时,表示当前波段编号// emission: 指向辐射发射项的指针(输入输出参数,可修改) - 单位:W/m³// in_scattering: 指向辐射入射散射项的指针(输入输出参数,可修改) - 单位:W/m³// abs_coeff: 指向吸收系数的指针(输入参数,不建议修改) - 单位:1/m// scat_coeff: 指向散射系数的指针(输入参数,不建议修改) - 单位:1/m// 函数无返回值(void)DEFINE_DOM_SOURCE(dom, c, t, ni, nb, emission, in_scattering, abs_coeff, scat_coeff){   /* increased the emission by 5% */  // 注释:将辐射发射增加5%   // 修改辐射发射项:将当前发射值乘以1.05(增加5%)   // *emission: 解引用指针,获取当前的辐射发射值   // *= 1.05: 将原值乘以1.05后赋值回去   *emission *= 1.05;}

10DEFINE_DOM_SPECULAR_REFLECTIVITY

①描述

可以使用DEFINE_DOM_SPECULAR_REFLECTIVITY来修改半透明镜面反射壁的界面反射率。当反射率受标准边界条件无法满足的其他条件影响时,可能需要使用此功能。在Fluent执行过程中,系统会为半透明壁面的每个面、每个方向调用相同的UDF

②用法

DEFINE_DOM_SPECULAR_REFLECTIVITY (name,f,t,nband,n_a,n_b,ray_direction, en, internal_reflection,specular_reflectivity,specular_transmissivity)

注意:DEFINE宏的所有参数都必须放在源代码的同一行。将DEFINE语句拆分成多行会导致编译错误。

nameUDF名称。

face_t f:面索引。

Thread *t:指向要应用镜面反射函数的面线程。

int nband:波段数(非灰离散坐标(DO)模型需要)。

real n_a:介质a的折射率。

real n_b:介质b的折射率。

real ray_direction:方向向量(s

real en:界面法向量(n

int internal_reflection:用于标记发生全内反射代码的变量。

real *specular_reflectivity:给定方向的镜面反射率s

real *specular_transmissivity:给定方向的镜面透射率s

DEFINE_DOM_SPECULAR_REFLECTIVITY包含十一个参数,需要定义UDF的名称ftnbandn_an_bray_directioneninternal_reflectionspecular_reflectivityspecular_transmissivity则是由Fluent求解器传递给UDF的变量。

③示例

在名为user_dom_spec_reflUDF中,针对给定射线方向s在面f上的镜面反射率和透射率数值会被修改。

# include "udf.h" DEFINE_REPORT_DEFINITION_FN(volume_flow_rate_inlet){  real inlet_velocity = Get_Input_Parameter("vel_in");  real inlet_area = 0.015607214;  real volumeFlow = inlet_velocity*inlet_area;  return volumeFlow;}

参考资料:Ansys Fluent UDF Manual》 2023R1

CFD理论基础合集(持续更新中):

Ansys Fluent帮助文档-UDF篇:用户自定义函数概述(UDFs)(一)

Ansys Fluent帮助文档-UDF篇:用户自定义函数概述(UDFs)(二)

Ansys Fluent帮助文档-UDF篇:通用DEFINE宏(一)

Ansys Fluent帮助文档-UDF篇:通用DEFINE宏(二)

Ansys Fluent帮助文档-UDF篇:通用DEFINE宏(三)

Ansys Fluent帮助文档-UDF篇:模型特定的DEFINE宏(一)

特别感谢您的阅读、点赞、转发、推荐!

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » Ansys Fluent文档-UDF篇:模型特定的DEFINE宏(二)

评论 抢沙发

3 + 6 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮