FLUETN模拟木块水中漂浮
浏览:54107 回答:4
本人想模拟小木块漂浮在水面上,然后在波浪中的浮动情况。模型如下所示:
小木块的运动利用6DOF实现,
#include "udf.h"
DEFINE_SDOF_PROPERTIES(box, prop, dt, time, dtime)
{
prop[SDOF_MASS] = 1.000000;
prop[SDOF_IZZ] = 0.166666;
}
波浪利用UDF来实现:
#include "udf.h"
#include "math.h"
real a=0.2;/*二分之一波高*/
real k=2.0*3.1415925/5; /*波数*/ /*分母为波长*/
real w=3.511; /*圆频率w*w=kg*/
real h=2.5;/*水深*/
DEFINE_PROFILE(x_velocity,thread,index)
{
real x[ND_ND];
real y;
face_t f;
real t;
real u;
t=RP_Get_Real("flow-time");
begin_f_loop(f,thread)
{
F_CENTROID(x,f,thread);
y = x[1];
if(y<(a*cos(w*t)))
u=a*w*cosh(k*(y+h))*cos(-w*t)/sinh(k*h)+0.1;
else
u =0.0;
F_PROFILE(f,thread,index)=u;
}
end_f_loop(f,thread)
}
DEFINE_PROFILE(y_velocity,thread,index)
{
real x[ND_ND];
real y;
face_t f;
real t;
real v;
t=RP_Get_Real("flow-time");
begin_f_loop(f,thread)
{
F_CENTROID(x,f,thread);
y = x[1];
if(y<(a*cos(w*t)))
v=a*w*sinh(k*(y+h))*sin(-w*t)/sinh(k*h);
else v=0.0;
F_PROFILE(f,thread,index)=v;
}
end_f_loop(f,thread)
}
DEFINE_PROFILE(voffactor,thread,index)
{
real x[ND_ND];
real y;
face_t f;
real t;
t=RP_Get_Real("flow-time");
begin_f_loop(f,thread)
{
F_CENTROID(x,f,thread);
y = x[1];
if(y<(a*cos(w*t)))
F_PROFILE(f,thread,index) = 1.0;
else F_PROFILE(f,thread,index) = 0.0;
}
end_f_loop(f,thread)
}
可是在 FLUENT 计算时,出现了问题,刚没算几步,网格就出现下面的问题
请问这是怎么回事?如何解决?谢谢各位。

#include "udf.h"
DEFINE_SDOF_PROPERTIES(box, prop, dt, time, dtime)
{
prop[SDOF_MASS] = 1.000000;
prop[SDOF_IZZ] = 0.166666;
}
波浪利用UDF来实现:
#include "udf.h"
#include "math.h"
real a=0.2;/*二分之一波高*/
real k=2.0*3.1415925/5; /*波数*/ /*分母为波长*/
real w=3.511; /*圆频率w*w=kg*/
real h=2.5;/*水深*/
DEFINE_PROFILE(x_velocity,thread,index)
{
real x[ND_ND];
real y;
face_t f;
real t;
real u;
t=RP_Get_Real("flow-time");
begin_f_loop(f,thread)
{
F_CENTROID(x,f,thread);
y = x[1];
if(y<(a*cos(w*t)))
u=a*w*cosh(k*(y+h))*cos(-w*t)/sinh(k*h)+0.1;
else
u =0.0;
F_PROFILE(f,thread,index)=u;
}
end_f_loop(f,thread)
}
DEFINE_PROFILE(y_velocity,thread,index)
{
real x[ND_ND];
real y;
face_t f;
real t;
real v;
t=RP_Get_Real("flow-time");
begin_f_loop(f,thread)
{
F_CENTROID(x,f,thread);
y = x[1];
if(y<(a*cos(w*t)))
v=a*w*sinh(k*(y+h))*sin(-w*t)/sinh(k*h);
else v=0.0;
F_PROFILE(f,thread,index)=v;
}
end_f_loop(f,thread)
}
DEFINE_PROFILE(voffactor,thread,index)
{
real x[ND_ND];
real y;
face_t f;
real t;
t=RP_Get_Real("flow-time");
begin_f_loop(f,thread)
{
F_CENTROID(x,f,thread);
y = x[1];
if(y<(a*cos(w*t)))
F_PROFILE(f,thread,index) = 1.0;
else F_PROFILE(f,thread,index) = 0.0;
}
end_f_loop(f,thread)
}
可是在 FLUENT 计算时,出现了问题,刚没算几步,网格就出现下面的问题

请问这是怎么回事?如何解决?谢谢各位。
您好,请问解决了吗