吾生有涯 学海无涯
析模有界 知识无界

【Fluent GUI】01:YPlus与雷诺数

湖北的天气真是热啊,汗流浃背用程序代码来降温。

最近在关注Fluent的界面开发,猛补了一把Scheme语言。是时候展示一下学习成果了。这不,在酷暑中做了个太阳能手电筒:利用Fluent计算YPlus。

1

Y+计算

Y+计算通常是根据Y+值估算第一层网格高度。实现效果如下图所示。

Y+计算采用PointWise官方网页提供的计算方法。见网址 http://www.pointwise.com/yplus/ 。该方法基于 Frank M. White's Fluid Mechanics 5th edition, page 467中关于平板边界层理论计算。 
具体计算方法为: 
先计算雷诺数:


通过雷诺数计算摩擦系数:

计算壁面剪切力:

计算:

得到第一层网格高度:

2

程序代码

创建sheme代码,如下所示。代码很不简洁,是因为考虑到与UDF的接口。这里计算过于简单,并没有使用UDF。

(可以滑屏查看完整代码)

;RP Variable Create Function
(define (make-new-rpvar name default type)
 (if (not (rp-var-object name))
     (rp-var-define name default type #f)))

;RP Variable Declarations
(make-new-rpvar 'myudf/velocity 1.0 'real) ;freestream velocity
(make-new-rpvar 'myudf/density 1.0 'real);density
(make-new-rpvar 'myudf/mu 1.0 'real) ;mu
(make-new-rpvar 'myudf/length 1.0 'real) ; Length
(make-new-rpvar 'myudf/yplus 1.0 'real) ; yplus
(make-new-rpvar 'myudf/deltas 0.0 'real) ;/deltaS    
(make-new-rpvar 'myudf/re 0.0 'real) ;Re

;Dialog Box Definition
(define gui-dialog-box
 ;Let Statement, Local Variable Declarations
 (let ((dialog-box #f)
   (table)
       (myudf/box1)
       (myudf/box2)
       (myudf/velocity)
       (myudf/density)
       (myudf/mu)
       (myudf/length)
       (myudf/yplus)
       (myudf/deltas)
       (myudf/re)
      )
     
      ;Update-CB Function, Invoked When Dialog Box Is Opened
      (define (update-cb . args)
           (cx-set-real-entry myudf/velocity 1.0)
           (cx-set-real-entry myudf/density 1.0)
           (cx-set-real-entry myudf/mu 1.0)
           (cx-set-real-entry myudf/length 1.0)
           (cx-set-real-entry myudf/yplus 1.0)
           (cx-set-real-entry myudf/deltas 0.0)
           (cx-set-real-entry myudf/re 0.0)
      )
     
      ;Apply-CB Function, Invoked When "OK" Button Is Clicked
      (define (apply-cb . args)
         (Cal)
      )  

     ;定义函数计算雷诺数与第一层网格高度
     (define (Cal)
       (rpsetvar 'myudf/velocity (cx-show-real-entry myudf/velocity))
       (rpsetvar 'myudf/density (cx-show-real-entry myudf/density))
       (rpsetvar 'myudf/mu (cx-show-real-entry myudf/mu))
       (rpsetvar 'myudf/length (cx-show-real-entry myudf/length))
       (rpsetvar 'myudf/yplus (cx-show-real-entry myudf/yplus))
       (rpsetvar 'myudf/deltas (cx-show-real-entry myudf/deltas))
       (rpsetvar 'myudf/re (cx-show-real-entry myudf/re))

       (define re (rpgetvar 'myudf/re))
       (define density (rpgetvar 'myudf/density))
       (define mu (rpgetvar 'myudf/mu))
       (define length (rpgetvar 'myudf/length))
       (define yplus (rpgetvar 'myudf/yplus))
       (define deltas (rpgetvar 'myudf/deltas))
       (define velocity (rpgetvar 'myudf/velocity))
       (define cf)
       (define tau)
       (define u_fric)

       (set! re (* density (* velocity (/ length mu))))
       (set! cf (/ 0.026 (expt re (/ 1 7))))
       (set! tau (* cf (* density (* velocity (/ velocity 2)))))
       (set! u_fric (sqrt (/ tau density)))
       (set! deltas (* yplus (/ mu (* u_fric density))))

       (cx-set-real-entry myudf/deltas deltas)
       (cx-set-real-entry myudf/re re)
     )
     
      ;Button-CB Function, Invoked When "Test Button" Is Clicked
      (define (button-cb . args)
         (cal)
      )      
      ;Args Function, Used For Interface Setup, Required For Apply-CB, Update-CB, and Button-CB Sections
           
      (lambda args
        (if (not dialog-box)
          (let ()
            (set! dialog-box (cx-create-panel "Turbulent Calculator" apply-cb update-cb))
            (set! table (cx-create-table dialog-box "" 'border #f 'below 0 'right-of 0))  
                         
            (set! myudf/box1 (cx-create-table table "Data Inputs" 'row 0))
            (set! myudf/velocity (cx-create-real-entry myudf/box1 "Velocity[m/s]:" 'row 0))
            (set! myudf/density (cx-create-real-entry myudf/box1 "Density[kg/m3]:" 'row 1))
            (set! myudf/mu (cx-create-real-entry myudf/box1 "Viscosity[Pa.s]:" 'row 2))
            (set! myudf/length (cx-create-real-entry myudf/box1 "Length[m]:" 'row 3))
            (set! myudf/yplus (cx-create-real-entry myudf/box1 "YPlus:" 'row 4))
            (cx-create-button table "Calculate" 'activate-callback button-cb 'row 1)
            (set! myudf/box2 (cx-create-table table "Data Output" 'row 2))
            (set! myudf/deltas (cx-create-real-entry myudf/box2 "DeltaS[m]" 'row 0))
            (set! myudf/re (cx-create-real-entry myudf/box2 "Re:" 'row 1))  
          ) ;End Of Let Statement
        ) ;End Of If Statement        
        ;Call To Open Dialog Box
        (cx-show-panel dialog-box)
      ) ;End Of Args Function
 ) ;End Of Let Statement
) ;End Of GUI-Dialog-Box Definition

(gui-dialog-box)

代码使用方法:

  • 新建文本文件(如yplus.txt),修改文件名及扩展名为yplus.scm

  • Fluent中利用菜单File → Read → Scheme…加载文件yplus.scm即可开启对话框

程序有待改进,比如自动提取设置的边界和网格信息进行计算,此功能后面有时间再说。对于Scheme语言完全陌生的话,可看这本书《计算机程序的构造和解释》,可以找得到PDF版本。

本篇文章来源于微信公众号: CFD之道

赞(2) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《【Fluent GUI】01:YPlus与雷诺数》
文章链接:https://www.topcfd.cn/5964/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册