|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
非定常的单相流自定义源项函数出现问题,求助,非常感谢。
问题:求解壁面受力(X方向),根据受力求解加速度(X方向),和下一个t时刻的速度(X方向),并根据此(速度)定义源项。
执行中出现的问题:udf执行过程中感觉if语句并没有执行,因为if中的printf一直没有输出信息
udf代码#include "udf.h"
#include "unsteady.h"
#include"mem.h"
#include"stdio.h"
#define M 72 /*定义物体质量*/
static int last_ts=-1; /*声明静态变量(上个时间步的值)*/
static real vs=0.5*1.852; /*声明静态变量(初始速度)*/
DEFINE_SOURCE(x_source,c,t,dS,eqn)
{
real dens;
real gradu; /*declare gradu as gradient of x speed*/
real sm; /*declare source*/
int currtime;
real ac=0;
currtime=N_TIME; /*curr_ts赋值为现在时间步*/
if(last_ts!=currtime) /*如果时间步变化,执行*/
{
real area[3]={0,0,0};
int wall_id=8; /*边界的id*/
real dist_t=0; /*时间步长变量声明*/
face_t f;
real force; /*壁面x方向力变量声明*/
Thread *wall;
Domain *domain;
domain=Get_Domain(1); /*获得计算域的指针*/
dens=999.0;
wall=Lookup_Thread(domain,wall_id); /*获得壁面thread指针*/
last_ts=currtime;
force=0;
begin_f_loop(f,wall) /*在壁面的面元遍历*/
{
F_AREA(area,f,wall); /*获得面元的面积向量赋值给数组area*/
force+=F_P(f,wall)*area[0]; /*壁面受力(x方向)的积分*/
}
end_f_loop(f,wall)
ac=(force-6.2)/M; /*计算加速度*/
dist_t=CURRENT_TIMESTEP; /*上个时间步长*/
vs=vs+ac*dist_t; /*计算本时刻的新速度*/
printf("acc=%d\n",ac);
}
gradu=C_U_G(c,t)[0]; /**/
sm=dens*gradu*vs; /*根据速度计算源项*/
dS[eqn]=0;
return sm; /*源项返回*/
}
[ 本帖最后由 jiangtao167 于 2011-4-10 13:36 编辑 ] |
|