Fluent UDF中调用变量的梯度及其注意点

Fluent UDF中有时候需要调用变量的梯度,例如温度梯度,压力梯度,VOF梯度等等,一般是在C_T,C_P,C_VOF后面加上“_G”来获取,例如C_T_G,C_VOF_G。看似简单,实际上里面有比较多的“坑”,现以如下实例来提请各位看官注意。

         首先,我们利用VC++ UDF Studio插件(https://vcudfstudio.github.io)启动Fluent,然后再点击Fluent中的“启动Visual Studio”菜单,这样我们就可以在Visual Studio中输入源码并编译UDF了。

在Visual Studio项目中的udf_source.cpp文件中输入如下源码。

#include "udf.h"
#include "SuperUdfExtension.h" //VC++ UDF Studio自带的扩展库头文件,具体参考该软件中的编程手册
#pragma comment(lib, "SuperUdfExtension.lib")  //VC++ UDF Studio自带的扩展库的lib文件 

int GetZoneIdByName(CString zoneName); //函数声明

DEFINE_ADJUST(show_gradient, domain)
{
  face_t f;
  real T_gradient[ND_ND];
  int theInletID = GetZoneIdByName("inlet"); //根据边界名字获取其ID,如果返回-1表示找不到
  if (-1 == theInletID)
  {
	  Message("Cannot find the boundary name 'inlet'. Please modify!\n");
	  return;
  }

  Thread * wall_thread = Lookup_Thread(domain, theInletID); //根据inlet的ID获得其Thread
  Thread *fluid_thread = THREAD_T0(wall_thread); //获得和边界face邻接的cell的thread

  begin_f_loop(f, wall_thread) //对inlet的面进行循环
  {
	  cell_t c0 = F_C0(f, wall_thread); //获得和inlet面邻接的cell
	  NV_V(T_gradient, =, C_T_G(c0, fluid_thread)); //将温度梯度赋值给T_gradient
	  Message("c=%d, Temperature X gradient is %g\n", c0, T_gradient[0]);   //打印x方向的梯度
  }
  end_f_loop(f, wall_threa
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值