udf编程
① fluent中udf编程提示出错 Error: received a fatal signal (Segmentation fault). Error Object: #f
1.先初始化,迭代一步后,再导入udf--问题依旧
2.先保存退出软件后,再重新打开--问题依旧
3.将4个udf分别拆开后,分别导入--没有出现问题
4.将其中的两个udf组合起来,导入--问题依旧(据此推断是udf的问题),下面是我的udf;将DEFINE_SOURCE(liq_src…)和DEFINE_SOURCE(vap_src…)这两个udf组合在一起,出现了开始的同样问题。请大神帮忙看下,问题出在哪?滴水之恩,涌泉相报,谢谢大神们!!!
附件截图是我引用udf的三个位置,附件文件是我的udf。
#include "udf.h"
#include "sg_mphase.h"
#define T_SAT 278
#define LAT_HT 2260000
DEFINE_SPECIFIC_HEAT(my_user_cp, T, Tref, h, yi)
{
real cp=1200.176+2164.7398*pow(0.35,1.16317)+0.0229*pow(T,1.306682)+0.3285*pow(0.35,1.16317)*pow(T,1.306682);
*h = cp*(T-Tref);
return cp;
}
DEFINE_SOURCE(liq_src, cell, pri_th, dS, eqn)//与下面组合后出现问题
{
Thread *mix_th,*sec_th;
real m_dot_l;
mix_th=THREAD_SUPER_THREAD(pri_th);
sec_th=THREAD_SUB_THREAD(mix_th,1);
if(C_T(cell,mix_th)>=T_SAT)
{
m_dot_l=-0.1*C_VOF(cell,pri_th)*C_R(cell,pri_th)*fabs(C_T(cell,mix_th)-T_SAT)/T_SAT;
dS[eqn]=-0.1*C_R(cell,pri_th)*fabs(C_T(cell,mix_th)-T_SAT)/T_SAT;
}
else
{
m_dot_l=0.1*C_VOF(cell,sec_th)*C_R(cell,sec_th)*fabs(T_SAT-C_T(cell,mix_th))/T_SAT;
dS[eqn]=0.0;
}
return m_dot_l;
}
DEFINE_SOURCE(vap_src,cell,sec_th,dS,eqn)//与上面组合后出现问题
{
Thread *mix_th,*pri_th;
real m_dot_v;
mix_th=THREAD_SUPER_THREAD(sec_th);
pri_th=THREAD_SUB_THREAD(mix_th,0);
if(C_T(cell, mix_th)>=T_SAT)
{
m_dot_v=0.1*C_VOF(cell,pri_th)*C_R(cell,pri_th)*fabs(C_T(cell,mix_th)-T_SAT)/T_SAT;
dS[eqn]=0.0;
}
else
{
m_dot_v=-0.1*C_VOF(cell,sec_th)*C_R(cell,sec_th)*fabs(T_SAT-C_T(cell,mix_th))/T_SAT;
dS[eqn]=-0.1*C_R(cell,sec_th)*fabs(C_T(cell,mix_th)-T_SAT)/T_SAT;
}
return m_dot_v;
}
DEFINE_SOURCE(enrg_src,cell,mix_th,dS,eqn)
{
Thread *pri_th,*sec_th;
real m_dot;
pri_th=THREAD_SUB_THREAD(mix_th,0);
sec_th=THREAD_SUB_THREAD(mix_th,1);
if(C_T(cell, mix_th)>=T_SAT)
{
m_dot=-0.1*C_VOF(cell,pri_th)*C_R(cell,pri_th)*fabs(C_T(cell,mix_th)-T_SAT)/T_SAT;
dS[eqn]=-0.1*C_VOF(cell,pri_th)*C_R(cell,pri_th)/T_SAT;
}
else
{
m_dot=0.1*C_VOF(cell,sec_th)*C_R(cell,sec_th)*fabs(T_SAT-C_T(cell,mix_th))/T_SAT;
dS[eqn]=-0.1*C_VOF(cell,sec_th)*C_R(cell,sec_th)/T_SAT;
}
return LAT_HT*m_dot;
}
② 关于udf编程,以下程序密度rho_l=C_R(c,t),这个C_R(c,t)能代表液相l的密度吗并没有定义啊,如何识别呢
C_R和C_VOF是fluent中预定义好的宏,就像C语言里提前写好的子程序一样,直接调用就行。c和t是加载UDF时对应的网格和相
③ Fluent热源设置:生热速率随温度变化,UDF怎么编写啊!!
#include "udf.h"。real T=C_T(c,t)这是fluent本身自带宏,用于获取数据储存胞元的温度值,关于pow(x,y)函数则是C++的语法结构,数学表达式是x^y。
基本用户定义函数是一类代码,对MYSQL服务器功能进行扩充,通过添加新函数,性质就象使用本地MYSQL函数abs()或concat().UDF是用C(或C++)写的。也许还可以用BASIC,C#或其它什么语言。
(3)udf编程扩展阅读:
FLUENT软件包含基于压力的分离求解器、基于密度的隐式求解器、基于密度的显式求解器,多求解器技术使FLUENT软件可以用来模拟从不可压缩到高超音速范围内的各种复杂流场。FLUENT软件包含非常丰富、经过工程确认的物理模型。
因而FLUENT能达到最佳的收敛速度和求解精度。灵活的非结构化网格和基于解的自适应网格技术及成熟的物理模型,可以模拟高超音速流场、传热与相变、化学反应与燃烧、多相流、旋转机械、动/变形网格、噪声、材料加工等复杂机理的流动问题。
④ 跪求大神指导。fluent udf编程 入口风速随高度不同变化的公式为 v=30*{(x/10)的0.16次方}
你好,我最近也在学习UDF,都是为了毕业(哭了)
我看了下你写的UDF,和我最近在看的一个UDF例子一样,就是公式改成了你所需要的。我觉得原本的例子就有问题,错误之处:“float x[3]”和“y = x[1];”很明显前后不一致了。。
根据我学习的其他UDF例子来看,x[?]中的?分别有着这样的对应:0是x方向,1是y方向(2可能就是z方向吧)。原本那个例子是x方向的速度v与y的坐标有关,也就是v(y)=。。。的公式。那udf中应当为float x[1].
你的公式是与x的坐标值有关,应当为
#include "udf.h"
DEFINE_PROFILE(x_velocity,thread,nv)
{
float x[0];
float x;
face_t f;
begin_f_loop(f, thread)
{
F_CENTROID(x,f,thread);
x= x[0];
F_PROFILE(f, thread, nv)
= 30.*pow(x/10.,0.16);
}
end_f_loop(f, thread)
}
这是我的理解,希望有真正的大神来看看是否正确,你也可是试试这个能不能用,再交流。
小木虫是一个好地方,建议你也在那里问问。
⑤ fluent入口速度用udf编程,分段函数怎么编
这个可以用udf编写 。
liukan12
#include "udf.h"
DEFINE_PROFILE(velocity1,t,i)/* 定义属性宏 三个参数 第一是名称 第二个是线程指针 第三个是变量标号 */
{
real x[ND_ND]; /* 存放2D或者3D位置参数 */
real y; /* y值为模型中的y坐标值 */
cell_t f; /* 创建网格体指针 */
begin_c_loop(f,t)/* 体线程t中所有网格体指针f的遍历循环 */
⑥ fluent怎么udf如何编程
用户自定义函数,或UDF,是用户自编的程序,它可以动态的连接到Fluent求解器上来提高求解器性能。用户自定义函数用C语言编写。使用DEFINE宏来定义。UDF中可使用标准C语言的库函数,也可使用Fluent Inc.提供的预定义宏,通过这些预定义宏,可以获得Fluent求解器得到的数据。
⑦ 求助FLUENT中UDF编程解决interface界面的数据传递
#include "udf.h"
#include "math.h"
DEFINE_PROFILE(inlet_x_velocity, thread, index)
{
real x[ND_ND];
real y,z;
face_t f;
begin_f_loop(f, thread)
{
F_CENTROID(x,f,thread);
// x=x[0];
y=x[1];
// z=x[2];
if(y<0.0181)
F_PROFILE(f, thread, index) =2.0994*log(y)+9.4438;
else
F_PROFILE(f, thread, index) =15;
}
end_f_loop(f, thread)
}
⑧ Fluent UDF添加源项编程
添加能量源项是比较简单的。define-boundary
conditions---在zone中选择添加源项的区域,点击set----选择
source
terms
选项(注意在该项前打钩)---其中energ中用来添加能量源项,可以添加常数项或udf编写的
⑨ 电场力作为动量源项进行UDF编程对吗
添加能量源项是比较简单的。Define-boundaryconditions---在zone中选择添加源项的区域,点击set----选择sourceterms选项(注意在该项前打钩)---其中energ中用来添加能量源项,可以添加常数项或udf编写的