24小时热门版块排行榜    

CyRhmU.jpeg
查看: 858  |  回复: 7
【悬赏金币】回答本帖问题,作者薛学良将赠送您 500 个金币

薛学良

铁杆木虫 (正式写手)

[求助] UDS边界条件赋值问题(流体内部域)

请问:
(1)流体域为:域1+域2+域3,流体左进右出;
(2)UDS求解域设置为在域2(Solution Zones里选定);
(3)问题所在:交界面A(或交界面B),怎样设置才能实现在上述流体求解满足的情况下,可以实现UDS在[交界面A或B]可以正常的进行边界条件的赋值?是要由内部面Interior做相应设置更改为Interface?还是其他方法?

UDS边界条件赋值问题(流体内部域)
微信图片_20220826083420 - 副本.png@wuming524
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gyctju

金虫 (正式写手)

intrior或者interface上一般不能赋边界值,因为他们不是“边界”。可以考虑将交界面a b单独命名,类型设置为interior, 然后结合lookup thread宏和F_C0/F_C1宏,在交界面的上游或下游给出边界值

发自小木虫Android客户端
2楼2022-08-28 15:39:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

薛学良

铁杆木虫 (正式写手)

引用回帖:
2楼: Originally posted by gyctju at 2022-08-28 15:39:42
intrior或者interface上一般不能赋边界值,因为他们不是“边界”。可以考虑将交界面a b单独命名,类型设置为interior, 然后结合lookup thread宏和F_C0/F_C1宏,在交界面的上游或下游给出边界值
...

多谢回复;我最开始在DM或者Meshing中将交界面A的左右两面分别命名,报说重复命名的错误;
3楼2022-08-28 16:55:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

薛学良

铁杆木虫 (正式写手)

引用回帖:
2楼: Originally posted by gyctju at 2022-08-28 15:39:42
intrior或者interface上一般不能赋边界值,因为他们不是“边界”。可以考虑将交界面a b单独命名,类型设置为interior, 然后结合lookup thread宏和F_C0/F_C1宏,在交界面的上游或下游给出边界值
...

后来通过Adjust宏在近交界面A的第一层网格处C0,或者尝试直接在交界面A上赋值(thread = Lookup_Thread(domain,ID_face_middle_left);F_UDSI(f,thread,0) = 101325.;报错,应该是因为F_UDSI只能适用于wall或者流动边界);但都得不到UDS只在域2求解的效果(扩散项+源项,交界面A给定边界条件)

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 微信图片_20220828165642.png
  • 2022-08-28 17:04:25, 24.43 K
4楼2022-08-28 17:04:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

薛学良

铁杆木虫 (正式写手)

引用回帖:
4楼: Originally posted by 薛学良 at 2022-08-28 17:04:45
后来通过Adjust宏在近交界面A的第一层网格处C0,或者尝试直接在交界面A上赋值(thread = Lookup_Thread(domain,ID_face_middle_left);F_UDSI(f,thread,0) = 101325.;报错,应该是因为F_UDSI只能适用于wall或者流动 ...

#include "udf.h"



#define ID_face_middle__left 7



DEFINE_ADJUST(adjust_uds_boundary_u,domain)
{
#if !RP_HOST
      Thread *thread = Lookup_Thread(domain,ID_face_middle_left),*t0,*t1;
      cell_t c, c0, c1;                                                                                                                                                            
      face_t f;

      begin_f_loop(f,thread)
      {
      c0=F_C0(f,thread);
      t0=THREAD_T0(thread);
      c1=F_C1(f,thread);
      t1=THREAD_T1(thread);

      C_UDSI(c0,t0,0) = 101325.;
      /*F_UDSI(f,t0,0) = 101325.;*/
      /*F_UDSI(f,thread,0) = 101325.;*/
      }
      end_f_loop(f,thread)
#endif
}



DEFINE_SOURCE(source,c,t,dS,eqn)
{
#if !RP_HOST
  real con, source;
  source = 10;
  return source;
#endif
}
5楼2022-08-28 17:06:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

薛学良

铁杆木虫 (正式写手)

引用回帖:
2楼: Originally posted by gyctju at 2022-08-28 15:39:42
intrior或者interface上一般不能赋边界值,因为他们不是“边界”。可以考虑将交界面a b单独命名,类型设置为interior, 然后结合lookup thread宏和F_C0/F_C1宏,在交界面的上游或下游给出边界值
...

我的UDS只定义在域2内,在交界面A处只有C_UDSI(c0,t0,0),没有C_UDSI(c1,t1,0);后来将交界面A由interior更改为Interface,交界处A出现新的wall,可以做UDS的边界条件的一些更改,但没起任何反应。
        
      更改Interface的一些设置:
要么情况(1):流体无法贯穿交界面A,交界面A被当成壁面了,UDS可在域2进行求解;
要么情况(2):流体可贯穿域1+域2+域3,但在交界面A由interior转化成interface后新生成的wall上赋的UDS边界条件不起作用,UDS没有在域2内进行求解;
还有个情况(3):流体既没有贯穿加界面A,UDS也没在域2内进行求解成;
另外:域2实际上算是一个多孔介质吧
6楼2022-08-28 17:15:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gyctju

金虫 (正式写手)

之前测试过 ,begin_f_loop不能在内部边界上使用,还有一种方法是把欲添加边界的位置做成只有一层网格cell zone 然后将边界条件转化为源项

发自小木虫Android客户端

» 本帖已获得的红花(最新10朵)

7楼2022-08-28 22:48:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

薛学良

铁杆木虫 (正式写手)

送红花一朵
引用回帖:
7楼: Originally posted by gyctju at 2022-08-28 22:48:34
之前测试过 ,begin_f_loop不能在内部边界上使用,还有一种方法是把欲添加边界的位置做成只有一层网格cell zone 然后将边界条件转化为源项

您好,我今早试了下给交界面A单独一层网格,则UDS的求解域2变为此单层网格+原域2的剩余部分。然后在这层单层网格上给其源项赋常数定值101325,试了下,整个域2的UDS数值分布基本在e-n次方~0.0000几左右吧
8楼2022-08-29 09:33:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 薛学良 的主题更新
不应助 确定回帖应助 (注意:应助才可能被奖励,但不允许灌水,必须填写15个字符以上)
信息提示
请填处理意见