24小时热门版块排行榜    

查看: 2231  |  回复: 11

steven_tan

新虫 (初入文坛)

[求助] 模拟波浪 已有1人参与

我现在在用边界造波法模拟波浪,但一直没做出正确的模拟,下面是我的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
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

死天

专家顾问 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
源项里面 if条件后的其他条件呢???
2楼2014-10-20 08:08:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

steven_tan

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by 死天 at 2014-10-20 08:08:26
源项里面 if条件后的其他条件呢???

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;
}
}
还有其他条件吗??编写源项我只知道这么多,您能告诉我还需要什么吗,拜谢
3楼2014-10-20 09:06:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

死天

专家顾问 (著名写手)

引用回帖:
3楼: Originally posted by steven_tan at 2014-10-20 09:06:27
if(x>=FL-LL&&x<=FL)
{
if(y>=0-AA&&y<=0)
{
xishu=8*(x-(FL-LL))/LL;
y_source=-C_V(c,t)*998.2*xishu;
dS=-998.2*xishu;
}
}
还有其他条件吗??编写源项我只知道 ...

那ELSE呢?IF只是满足这个条件的时候,那么其他条件呢?至少先个C的条件语句的书看看啊
4楼2014-10-20 09:14:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

steven_tan

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by 死天 at 2014-10-20 09:14:33
那ELSE呢?IF只是满足这个条件的时候,那么其他条件呢?至少先个C的条件语句的书看看啊...

if没有必要一定要跟else的吧,1、if{};2、if{}……else;3、if{}……else if;这些都可以的
我写这个UDF的意思就是满足if条件,就调用程序;不满足,就不调用程序
5楼2014-10-20 09:47:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

steven_tan

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by 死天 at 2014-10-20 09:14:33
那ELSE呢?IF只是满足这个条件的时候,那么其他条件呢?至少先个C的条件语句的书看看啊...

您那有没有可以用的源项文件,我这个虽然编译没有问题,但是感觉在FLUENT里没有起到应有的效果
6楼2014-10-20 09:56:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

死天

专家顾问 (著名写手)

引用回帖:
5楼: Originally posted by steven_tan at 2014-10-20 09:47:02
if没有必要一定要跟else的吧,1、if{};2、if{}……else;3、if{}……else if;这些都可以的
我写这个UDF的意思就是满足if条件,就调用程序;不满足,就不调用程序...

那不满足条件的返回值是什么?源项有2个返回值,source 和ds[eqn].少了一半
7楼2014-10-20 10:02:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

死天

专家顾问 (著名写手)

【答案】应助回帖

引用回帖:
6楼: Originally posted by steven_tan at 2014-10-20 09:56:49
您那有没有可以用的源项文件,我这个虽然编译没有问题,但是感觉在FLUENT里没有起到应有的效果...

看我楼上的发言,你自己的实验,你自己去分析各个条件。实验不一样,UDF能一样吗?
8楼2014-10-20 10:03:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

steven_tan

新虫 (初入文坛)

引用回帖:
8楼: Originally posted by 死天 at 2014-10-20 10:03:24
看我楼上的发言,你自己的实验,你自己去分析各个条件。实验不一样,UDF能一样吗?...

我不是专攻这个方向的,单纯就是做模拟,希望能做出来波形,我现在的情况是波形做不出,周围没人做这个,自己捣鼓很长时间了,也没解决问题,所以希望您能给一个正确的UDF文件,学习一下,拜托啦
9楼2014-10-20 10:26:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

死天

专家顾问 (著名写手)

引用回帖:
9楼: Originally posted by steven_tan at 2014-10-20 10:26:39
我不是专攻这个方向的,单纯就是做模拟,希望能做出来波形,我现在的情况是波形做不出,周围没人做这个,自己捣鼓很长时间了,也没解决问题,所以希望您能给一个正确的UDF文件,学习一下,拜托啦...

我也不是搞这个。我怎么会知道
10楼2014-10-20 11:01:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 steven_tan 的主题更新
信息提示
请填处理意见