fluent针对欧拉模型材料粘度模型udf的问题

浏览:91917 回答:2
先说下模型,气液固三相欧拉模型,其中我的固体相可以看做是液体,主相为空气,次相第一个为粘结剂,另一个为粉末。非稳态的,速度入口,压力出口。
因为材料属性中粘结剂和粉末的粘度随时间时刻发生变化,并且都是关于混合相的温度和速度的一个函数,通过提取混合相的温度和速度来对固体和液体的粘度进行计算。
问题:主要是关于指针的选取,不是很清楚。
我把两段程序贴出来,麻烦有哪位帮忙看看,所编的程序能否表达意思,谢谢。

第一个是粘结剂,第二个是粉末的:
#include "udf.h"
#include <math.h>
DEFINE_PROPERTY(binder_viscosity,cell,thread)
{
real viscosity_0,viscosity,binder_viscosity,rate,temperture;
real dudx,dudy,dudz,dvdx,dvdy,dvdz,dwdx,dwdy,dwdz;
Thread *mixture_thread;
Thread *thread_gas;
Thread *thread_binder;
Thread *thread_powder;
thread_gas = THREAD_SUB_THREAD(mixture_thread, 2);
thread_binder = THREAD_SUB_THREAD(mixture_thread, 3);
thread_powder = THREAD_SUB_THREAD(mixture_thread, 4);

temperture = C_T(cell,mixture_thread);
dudx=C_DUDX(cell,mixture_thread);
dudy=C_DUDY(cell,mixture_thread);
dudz=C_DUDZ(cell,mixture_thread);
dvdx=C_DVDX(cell,mixture_thread);
dvdy=C_DVDY(cell,mixture_thread);
dvdz=C_DVDZ(cell,mixture_thread);
dwdx=C_DWDX(cell,mixture_thread);
dwdy=C_DWDY(cell,mixture_thread);
dwdz=C_DWDZ(cell,mixture_thread);
rate =sqrt(0.5*(4*dudx*dudx+2*(dudy+dvdx)*(dudy+dvdx)+2*(dudz+dwdx)*

(dudz+dwdx)+4*dvdy*dvdy+2*(dvdz+dwdy)*(dvdz+dwdy)+4*dwdz*dwdz));
viscosity_0 = 9.539e-03*exp(5683/temperture);
viscosity = viscosity_0/(1+4.648e-04*pow(viscosity_0*rate,0.6717));
binder_viscosity = 0.93 * viscosity;
return binder_viscosity;
}
#include "udf.h"
#include <math.h>
DEFINE_PROPERTY(powder_viscosity,cell,thread)
{
real viscosity_0,viscosity,powder_viscosity,rate,temperture;
real dudx,dudy,dudz,dvdx,dvdy,dvdz,dwdx,dwdy,dwdz;
Thread *mixture_thread;
Thread *thread_gas;
Thread *thread_binder;
Thread *thread_powder;
thread_gas = THREAD_SUB_THREAD(mixture_thread, 2);
thread_binder = THREAD_SUB_THREAD(mixture_thread, 3);
thread_powder = THREAD_SUB_THREAD(mixture_thread, 4);

temperture = C_T(cell,mixture_thread);
dudx=C_DUDX(cell,mixture_thread);
dudy=C_DUDY(cell,mixture_thread);
dudz=C_DUDZ(cell,mixture_thread);
dvdx=C_DVDX(cell,mixture_thread);
dvdy=C_DVDY(cell,mixture_thread);
dvdz=C_DVDZ(cell,mixture_thread);
dwdx=C_DWDX(cell,mixture_thread);
dwdy=C_DWDY(cell,mixture_thread);
dwdz=C_DWDZ(cell,mixture_thread);
rate =sqrt(0.5*(4*dudx*dudx+2*(dudy+dvdx)*(dudy+dvdx)+2*(dudz+dwdx)*

(dudz+dwdx)+4*dvdy*dvdy+2*(dvdz+dwdy)*(dvdz+dwdy)+4*dwdz*dwdz));
viscosity_0 = 9.539e-03*exp(5683/temperture);
viscosity = viscosity_0/(1+4.648e-04*pow(viscosity_0*rate,0.6717));
powder_viscosity = 1.33 * viscosity;
return powder_viscosity;
}
导入fluent,编译成功了,但是在后来初始化的过程出现了问题。

邀请回答 我来回答

全部回答

(2)
默认 最新
shijian2012
我把程序又改了下:
#include "udf.h"
#include <math.h>
DEFINE_PROPERTY(powder_viscosity,cell,thread)
{
int phase_domain_index;
cell_t c;
Thread *c_thread; /*定义单元线索*/
Domain *subdomain; /*定义单相子区域*/
Domain *mixture_domain; /*定义混合相区域*/
real viscosity_0,viscosity_1,powder_viscosity,rate,temperture;
real dudz,dvdz;
temperture = C_T(cell,thread); /*提取混合相单元的温度*/
dudz=C_DUDZ(cell,thread);
dvdz=C_DVDZ(cell,thread);
rate =sqrt(dudz*dudz+dvdz*dvdz); /*定义剪切速率*/
viscosity_0 = 9.539e-03*exp(5683/temperture); /*粘度0*/
viscosity_1 = viscosity_0/(1+4.648e-04*pow(viscosity_0*rate,0.6717)); /*粘度1*/
sub_domain_loop(subdomain,mixture_domain,phase_domain_index)
{

if(DOMAIN_ID(subdomain)==3) /* 访问第二相--粉末区域 */
thread_loop_c(c_thread,subdomain)
{

begin_c_loop_all(c,c_thread)
{
powder_viscosity = 0.93 * viscosity_1;
return powder_viscosity; /*返回到粉末的粘度*/
}
end_c_loop_all(c,c_thread)
}
}
}
DEFINE_PROPERTY(binder_viscosity,cell,thread)
{
int phase_domain_index;
下面做对应改变。
调试没有问题,逻辑问题?麻烦版主帮忙看看,谢谢啊
2012年9月24日
评论 点赞
shijian2012
求版主大神 帮忙看看啊,谢谢
2012年9月23日
评论 点赞

没解决?试试专家一对一服务

换一批
    App下载
    技术邻APP
    工程师必备
    • 项目客服
    • 培训客服
    • 平台客服

    TOP