24小时热门版块排行榜    

CyRhmU.jpeg
查看: 5821  |  回复: 9
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

iwangchunyu

新虫 (初入文坛)

[交流] UDF中如何编写体积分数的梯度已有6人参与

在气液两相流UDF中,需要编写气相和液相体积分数的梯度,应该用什么宏呢?
回复此楼

» 收录本帖的淘帖专辑推荐

传热传质 博士科研新路历程

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

459116191

新虫 (初入文坛)


小木虫: 金币+0.5, 给个红包,谢谢回帖
引用回帖:
4楼: Originally posted by chenjian5076 at 2013-12-16 21:20:05
这个函数在UDF帮助文件中叫做单元格函数,意思就是通过单元格的数值的差求得梯度,但是开始算的时候其实第一步是没有梯度的,所以这个地方会报错,具体的改进方法你可以看以下链接:http://www.cfd-online.com/For ...

你好,我看了链接,那个UDF能编译也能计算,但是提取出来的体积分数梯度始终都是零啊?烦请兄台指教!非常感激!
6楼2014-12-05 09:19:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 10 个回答

chenjian5076

木虫 (小有名气)

老和山少侠


小木虫: 金币+0.5, 给个红包,谢谢回帖
C_VOF_G(cell, thread_l)[0]
用这样一个函数就可以,但是开头要调用库函数#include "sg_mphase.h"
具体的可以参见UDF帮助文件
加油!
2楼2013-12-13 17:03:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

iwangchunyu

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by chenjian5076 at 2013-12-13 17:03:15
C_VOF_G(cell, thread_l)
用这样一个函数就可以,但是开头要调用库函数#include "sg_mphase.h"
具体的可以参见UDF帮助文件

我编了这样一段程序。解释的时候出现:line 15: invalid type for binary expression: float * array 2 of float.的错误。line 15

以下是程序:
#include "udf.h"  

#include "sg_mphase.h"  
#define T_SAT 319   
#define LAT_HT 2.392e6  

DEFINE_SOURCE(vap_src, cell, pri_th, dS, eqn)
{
Thread * mix_th, *sec_th;
real m_dot_v,q;
mix_th = THREAD_SUPER_THREAD(pri_th);
sec_th = THREAD_SUB_THREAD(mix_th, 1);
if(C_T(cell, mix_th)<=T_SAT)
{
q=-2*C_K_L(cell,pri_th)*C_T_G(cell,pri_th)*C_VOF(cell,pri_th); /*此行提示错误*/
m_dot_v=q/LAT_HT;  
dS[eqn] = -2*C_K_L(cell,pri_th)*C_T_G(cell,pri_th)/LAT_HT;
}
else
{
q=C_VOF_G(cell,sec_th);
m_dot_v=q/LAT_HT;
dS[eqn] = 0;
}
return m_dot_v;
}

DEFINE_SOURCE(liq_src, cell, sec_th, dS, eqn)
{
Thread *mix_th, *pri_th;  
  real m_dot_l,  q;
  mix_th = THREAD_SUPER_THREAD(sec_th);  
  pri_th = THREAD_SUB_THREAD(mix_th,0);
  if(C_T(cell, mix_th)<=T_SAT)  
{
q=2*C_K_L(cell,sec_th)*C_T_G(cell,sec_th)*C_VOF_G(cell,sec_th);
m_dot_l=q/LAT_HT;;
dS[eqn] =2*C_K_L(cell,pri_th)*C_T_G(cell,pri_th)/LAT_HT;
}
else
{
q=-2*C_K_L(cell,pri_th)*C_T_G(cell,pri_th)*C_VOF_G(cell,pri_th);
m_dot_l=q/LAT_HT;
dS[eqn]=0.;
}
return m_dot_l;
}

DEFINE_SOURCE(enrg_src, cell, mix_th, dS, eqn)
{
  Thread *pri_th, *sec_th;
  real m_dot, q;
  pri_th = THREAD_SUB_THREAD(mix_th, 0);
  sec_th = THREAD_SUB_THREAD(mix_th, 1);
  if(C_T(cell, mix_th)<=T_SAT)
{
q=2*C_K_L(cell,pri_th)*C_T_G(cell,pri_th)*C_VOF_G(cell,pri_th);;
dS[eqn] = 0.;
}
else
{
q=-2*C_K_L(cell,sec_th)*C_T_G(cell,sec_th)*C_VOF_G(cell,sec_th);
dS[eqn]=0.;
}
return q;  
}


我的udf编的不咋样。你帮我看看。我定义的是气液相变的源项。多谢啦
3楼2013-12-13 18:47:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chenjian5076

木虫 (小有名气)

老和山少侠


小木虫: 金币+0.5, 给个红包,谢谢回帖
引用回帖:
3楼: Originally posted by iwangchunyu at 2013-12-13 18:47:56
我编了这样一段程序。解释的时候出现:line 15: invalid type for binary expression: float * array 2 of float.的错误。line 15

以下是程序:
#include "udf.h"  

#include "sg_mphase.h& ...

这个函数在UDF帮助文件中叫做单元格函数,意思就是通过单元格的数值的差求得梯度,但是开始算的时候其实第一步是没有梯度的,所以这个地方会报错,具体的改进方法你可以看以下链接:http://www.cfd-online.com/Forums ... eulerian-model.html
加油!
4楼2013-12-16 21:20:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见