我现在在用边界造波法模拟波浪,但一直没做出正确的模拟,下面是我的UDF文件,麻烦大神看看哪里不正确,我的模型长L0=100m,水深H=1.5m,水面以上H0-H=1.5m,坐标原点在自由界面处
#include "udf.h"
real AA=0.3; /*波高*/
real TT=2.0; /*周期*/
real LL=6.2; /*波长*/
real FL=100; /*水槽长度*/
real kk=2.0*3.1415925/6.2;
real ww=2.0*3.1415925/2.0;
real h=1.5; /*水深*/
// x direction velocity //
DEFINE_PROFILE(x_velocity,thread,index)
{
real x[ND_ND];
real xx;
real y;
face_t f;
real u = 0;
real t = RP_Get_Real("flow-time" ;
begin_f_loop(f,thread)
{
F_CENTROID(x,f,thread);
xx = x[0];
y = x[1];
if(y<(AA*cos(kk*xx-ww*t)))
u=3.14*2.0*AA*cosh(kk*y)*cos(kk*xx-ww*t)/TT/sin(kk*h);
else u = 0.0;
F_PROFILE(f,thread,index) = u;
}
end_f_loop(f,thread)
}
// y direction velocity //
DEFINE_PROFILE(y_velocity,thread,index)
{
real x[ND_ND];
real xx;
real y;
face_t f;
real v = 0;
real t = RP_Get_Real("flow-time" ;
begin_f_loop(f,thread)
{
F_CENTROID(x,f,thread);
xx = x[0];
y = x[1];
if(y<(AA*cos(kk*xx-ww*t)))
v=3.14*2.0*AA*sinh(kk*y)*sin(kk*xx-ww*t)/TT/sinh(kk*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 xx;
real y;
face_t f;
real t = RP_Get_Real("flow-time" ;
begin_f_loop(f,thread)
{
F_CENTROID(x,f,thread);
xx=x[0];
y = x[1];
if(y<(AA*cos(kk*xx-ww*t)))
F_PROFILE(f,thread,index) = 1.0;
else F_PROFILE(f,thread,index) = 0.0;
}
end_f_loop(f,thread)
}
// 消波x direction momentum //
DEFINE_SOURCE(x_mom_source,c,t,dS,eqn)
{
real x[ND_ND];
real x_source;
real y;
real chan;
real xishu;
real time=RP_Get_Real("flow-time" ;
y=x[1];
C_CENTROID(x,c,t);
if(x[0]>=FL-LL&&x[0]<=FL)
{
if(y>=0-AA&&y<=0)
{
xishu=8*(x[0]-(FL-LL))/LL;
x_source=-C_U(c,t)*998.2*xishu;
dS[eqn]=-998.2*xishu;
}
}
return x_source;
}
// y direction momentum //
DEFINE_SOURCE(y_mom_source,c,t,dS,eqn)
{
real x[ND_ND];
real y_source;
real y;
real chan;
real xishu;
real time=RP_Get_Real("flow-time" ;
y=x[1];
C_CENTROID(x,c,t);
if(x[0]>=FL-LL&&x[0]<=FL)
{
if(y>=0-AA&&y<=0)
{
xishu=8*(x[0]-(FL-LL))/LL;
y_source=-C_V(c,t)*998.2*xishu;
dS[eqn]=-998.2*xishu;
}
}
return y_source;
}
DEFINE_PROFILE(out_pressure,thread,position)
{
real x[ND_ND];
real y;
face_t f;
begin_f_loop(f,thread)
{
F_CENTROID(x,f,thread);
y=x[1];
if(y<=0)
F_PROFILE(f,thread,position)=998.2*9.81*(-y);
else
F_PROFILE(f,thread,position)=0;
}
end_f_loop(f,thread)
}
//出口体积分数//
DEFINE_PROFILE(outlet_voffactorc,thread,position)
{
real x[ND_ND];
real y;
face_t f;
begin_f_loop(f,thread)
{
F_CENTROID(x,f,thread);
y=x[1];
if(y<=0)
F_PROFILE(f,thread,position)=1;
else
F_PROFILE(f,thread,position)=0;
}
end_f_loop(f,thread)
}
![模拟波浪]()
模型.png |