句首語:

以前自己寫的東西,當時ANSYS Workbench還不是很強大,所以自己使用 Fluent Journal 的形式實現一些自動化。最後,通過MATLAB來集成調用Fluent、ICEM等。在此重發一下,免得以後找不到了。

在利用Fluent計算相似算例時,如果可以使其自動讀取網格、設置模型、輸出圖片,講節省大量的時間,並可以充分利用晚上或者週末的時間使程序自動運行。

要是實現這個目的,你需要.jou或者.scm文件來記錄各項操作,簡單的說就是利用文檔寫下Fluent commands 使其順序執行。.jou就是fluent command window中的命令集合。.scm文件擁有更多的功能,比如執行if等條件語句,但是更為複雜,.jou可以被集成到.scm中。

想學習.jou寫法,請先查詢Fluent手冊中tui的有關操作,windows中batch文件的操做。一個自己的.jou算例,包括讀取網格,設定自動存儲間隔,處理網格,設置turbulence模型,設定材質,先用first order初始,在用second order獲得最終結果,輸出各種圖片。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;CONFIGURATIONS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;Auto-save every XX iterations
/file/auto-save/data-frequency/1000
/file/confirm-overwrite/no
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;TURBULENCE MODELLING
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;Mesh operation
/file/read-case/"D:jialunliuDesktopCFD_Tempfluent.msh"
/mesh/check
/mesh/quality
/mesh/reorder/reorder-domain
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;TURBULENCE MODELLING
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;Specify turbulence model.
/define/models/viscous/kw-sst/yes
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Define boundary conditions/FLUID
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Define the material
/define/materials/copy/fluid/water-liquid
;Define the fluid
/define/boundary-conditions/fluid
;(fluid)
;zone id/name [fluid]
fluid
;material-name [air]: Change current value? [no]
yes
;material-name [air]>
water-liquid
;Specify source terms? [no]
no
;Specify fixed values? [no]
no
;Frame Motion? [no]
no
;Use Profile for Reference Frame X-Origin of Rotation-Axis? [no]
no
;Reference Frame X-Origin of Rotation-Axis (m) [0]
0
;Use Profile for Reference Frame Y-Origin of Rotation-Axis? [no]
no
;Reference Frame Y-Origin of Rotation-Axis (m) [0]
0
;Mesh Motion? [no]
no
;Deactivated Thread [no]
no
;Laminar zone? [no]
no
;Porous zone? [no]
no
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Define boundary conditions/VELOCITY-INLET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
/define/boundary-conditions/velocity-inlet
;zone id/name [inlet]
inlet
;Velocity Specification Method: Magnitude and Direction [no]
yes
;Reference Frame: Absolute [yes]
yes
;Use Profile for Velocity Magnitude? [no]
no
;Velocity Magnitude (m/s) [0]
6.029
;Use Profile for Supersonic/Initial Gauge Pressure? [no]
no
;Supersonic/Initial Gauge Pressure (pascal) [0]
0
;Use Profile for X-Component of Flow Direction? [no]
no
;X-Component of Flow Direction [1]
0.996194698
;Use Profile for Y-Component of Flow Direction? [no]
no
;Y-Component of Flow Direction [0]
0.087155743
;Turbulent Specification Method: K and epsilon [no]
no
;Turbulent Specification Method: Intensity and Length Scale [no]
no
;Turbulent Specification Method: Intensity and Viscosity Ratio [no]
yes
;Turbulent Intensity (%) [5]
5
;Turbulent Viscosity Ratio [10]
10
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;CONVERGENCE CRITERIA
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;Set the convergence criteria.
/solve/monitors/residual convergence-criteria
;continuity residual convergence criterion [0.001]
1E-6
;x-velocity residual convergence criterion [0.001]
1E-6
;y-velocity residual convergence criterion [0.001]
1E-6
;k residual convergence criterion [0.001]
1E-6
;epsilon residual convergence criterion [0.001]
1E-6
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;MONITORS FOR INITIAL STAGE (WITHOUT DATA PLOTING)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
/solve/monitors/residual/window/1
;DRAG COEFFICIENT
/solve/monitors/force/set-drag-monitor
;monitor name [cd-1]
cd
;monitor drag coefficient? [no]
yes
;(9)
;zone id/name(1) [9]
rudder
;zone id/name(2) [()]
()
;print data ? [no]
yes
;write data? [no]
yes
;drag coeff. data file name? ["cd-1-history"]
"D:jialunliuDesktopCFD_TempRe_6E6_KWSST_AOA05_Cd.txt"
;plot data? [no]
no
;window id for plot? [2]
2
;plot per zone ? [no]
no
;x-component of drag vector [1]
0.996194698
;y-component of drag vector [0]
0.087155743
;
;LIFT COEFFICIENT
/solve/monitors/force/set-lift-monitor
;monitor name [cl-1]
cl
;monitor lift coefficient? [no]
yes
;zone id/name(1) [()]
rudder
;zone id/name(2) [()]
()
;print data ? [no]
yes
;write data? [no]
yes
;lift coeff. data file name? ["cl-1-history"]
"D:jialunliuDesktopCFD_TempRe_6E6_KWSST_AOA05_Cl.txt"
;plot data? [no]
no
;window id for plot? [3]
3
;plot per zone ? [no]
no
;x-component of lift vector [1]
-0.087155743
;y-component of lift vector [0]
0.996194698
;
;MOMENT COEFFICIENT
/solve/monitors/force/set-moment-monitor
;monitor name [cm-1]
cm
;monitor moment coefficient? [no]
yes
;zone id/name(1) [()]
rudder
;zone id/name(2) [()]
()
;print cm data ? [no]
yes
;write data? [no]
yes
;moment coeff. data file name? ["cm-1-history"]
"D:jialunliuDesktopCFD_TempRe_6E6_KWSST_AOA05_Cm.txt"
;plot data? [no]
no
;window id for plot? [4]
4
;plot per zone ? [no]
no
;x-component of moment center [1]
0.25
;y-component of moment center [0]
0
;x-component of moment axis [0]
0
;y-component of moment axis [0]
0
;z-component of moment axis [1]
1
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;REFFERENCE VALUES SETTING
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
/report/reference-values/compute/velocity-inlet
;(inlet)
;zone id/name [inlet]
inlet
/report/reference-values/zone
;(fluid)
;zone id/name [inlet]
fluid
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;INITIAL SOLUTION METHODS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;Set Pressure Velocity Coupling Scheme
;Pressure Velocity Coupling Scheme [20]
;; 20 for SIMPLE
;; 21 for SIMPLEC
;; 22 for PISO
;; 24 for Coupled
/solve/set/p-v-coupling/20
;
;Set the discretization schemes for pressure
;; 10 for Standard
;; 14 for PRESTO!
;; 11 for Linear
;; 12 for Second Order
;; 13 for Body Force Weighted
/solve/set/discretization-scheme/pressure/12
;
;Convective discretization scheme for Momentum
;; 0 for First Order Upwind
;; 1 for Second Order Upwind
;; 2 for Power Law
;; 4 for QUICK
;; 6 for Third-Order MUSCL
/solve/set/discretization-scheme/mom/1
;
;Convective discretization scheme for Turbulence Kinetic Energy
;; 0 for First Order Upwind
;; 1 for Second Order Upwind
;; 2 for Power Law
;; 4 for QUICK
;; 6 for Third-Order MUSCL
/solve/set/discretization-scheme/k/0
;
;Convective discretization scheme for Turbulence Dissipation Rate
;; 0 for First Order Upwind
;; 1 for Second Order Upwind
;; 2 for Power Law
;; 4 for QUICK
;; 6 for Third-Order MUSCL
/solve/set/discretization-scheme/omega/0
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;INITIALIZATION
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
/solve/initialize/compute-defaults/velocity-inlet/inlet
/solve/initialize/initialize-flow
;Initial iteration in first order
/solve/iterate/5
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;MONITORS FOR FINAL STAGE (WITH DATA PLOTING)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
/solve/monitors/residual/window/1
;DRAG COEFFICIENT
/solve/monitors/force/set-drag-monitor
;monitor name [cd-1]
cd
;monitor drag coefficient? [no]
yes
;(9)
;zone id/name(1) [9]
rudder
;zone id/name(2) [()]
()
;print data ? [no]
yes
;write data? [no]
yes
;drag coeff. data file name? ["cd-1-history"]
"D:jialunliuDesktopCFD_TempRe_6E6_KWSST_AOA05_Cd.txt"
;plot data? [no]
yes
;window id for plot? [2]
2
;plot per zone ? [no]
no
;x-component of drag vector [1]
0.996194698
;y-component of drag vector [0]
0.087155743
;
;LIFT COEFFICIENT
/solve/monitors/force/set-lift-monitor
;monitor name [cl-1]
cl
;monitor lift coefficient? [no]
yes
;zone id/name(1) [()]
rudder
;zone id/name(2) [()]
()
;print data ? [no]
yes
;write data? [no]
yes
;lift coeff. data file name? ["cl-1-history"]
"D:jialunliuDesktopCFD_TempRe_6E6_KWSST_AOA05_Cl.txt"
;plot data? [no]
yes
;window id for plot? [3]
3
;plot per zone ? [no]
no
;x-component of lift vector [1]
-0.087155743
;y-component of lift vector [0]
0.996194698
;
;MOMENT COEFFICIENT
/solve/monitors/force/set-moment-monitor
;monitor name [cm-1]
cm
;monitor moment coefficient? [no]
yes
;zone id/name(1) [()]
rudder
;zone id/name(2) [()]
()
;print cm data ? [no]
yes
;write data? [no]
yes
;moment coeff. data file name? ["cm-1-history"]
"D:jialunliuDesktopCFD_TempRe_6E6_KWSST_AOA05_Cm.txt"
;plot data? [no]
yes
;window id for plot? [4]
4
;plot per zone ? [no]
no
;x-component of moment center [1]
0.25
;y-component of moment center [0]
0
;x-component of moment axis [0]
0
;y-component of moment axis [0]
0
;z-component of moment axis [1]
1
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;FINAL ITERATION
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Convective discretization scheme for Turbulence Kinetic Energy
;; 0 for First Order Upwind
;; 1 for Second Order Upwind
;; 2 for Power Law
;; 4 for QUICK
;; 6 for Third-Order MUSCL
/solve/set/discretization-scheme/k/1
;
;Convective discretization scheme for Turbulence Dissipation Rate
;; 0 for First Order Upwind
;; 1 for Second Order Upwind
;; 2 for Power Law
;; 4 for QUICK
;; 6 for Third-Order MUSCL
/solve/set/discretization-scheme/omega/1
; Final iteration in second order
/solve/iterate/5
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;POST-PROCESSING
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;Picture setting
/display/set/picture/color-mode/color
/display/set/picture/driver/jpeg
/display/set/picture/x-resolution/960
/display/set/picture/y-resolution/720
/display/set/picture/dpi/300
/display/set/picture/landscape/yes
/display/set/contours/filled-contours/yes
/display/views/auto-scale
;
;Residual
/display/set-window/1
/display/save-picture/"D:jialunliuDesktopCFD_TempRe_6E6_KWSST_AOA05_Residual.jpg"
;Cd
/display/set-window/2
/display/save-picture/"D:jialunliuDesktopCFD_TempRe_6E6_KWSST_AOA05_Cd.jpg"
;Cl
/display/set-window/3
/display/save-picture/"D:jialunliuDesktopCFD_TempRe_6E6_KWSST_AOA05_Cl.jpg"
;Cm
/display/set-window/4
/display/save-picture/"D:jialunliuDesktopCFD_TempRe_6E6_KWSST_AOA05_Cm.jpg"
;Static pressure contour
/display/open-window/5
/display/contour/pressure
/display/views/read-views/"D:jialunliuDesktopCFD_Tempsta_pre_view.vw"
/display/views/restore-view/sta_pre
/display/set-window/5
/display/save-picture/"D:jialunliuDesktopCFD_TempRe_6E6_KWSST_AOA05_StaPreCon.jpg"
;Velocity contour
/display/open-window/6
/display/contour/velocity-magnitude
/display/views/read-views/"D:jialunliuDesktopCFD_Tempvel_mag_view.vw"
/display/views/restore-view/vel_mag
/display/set-window/6
/display/save-picture/"D:jialunliuDesktopCFD_TempRe_6E6_KWSST_AOA05_VelMagCon.jpg"
;Y-plus x-y plot
/display/open-window/7
/plot/solution/y-plus
;node values? [yes]
yes
;zone id/name(1) [()]
()
;surface id/name(1) [2]
rudder
;surface id/name(2) [()]
()
/display/set-window/7
/display/save-picture/"D:jialunliuDesktopCFD_TempRe_6E6_KWSST_AOA05_YPlusXY.jpg"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;POST-PROCESSING
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;Write the case and data
/file/write-case-data/"D:jialunliuDesktopCFD_TempRe_6E6_KWSST_AOA05"

在完成.jou以後可以用.scm來批量執行.jou文件。人工打開fluent之後,讀取.scm執行。.scm如下,包括5個.jou,當然如前所述,所有.jou的內容實際上都可以通過.scm來寫,用ti-menu-XXX的格式,但是個人認為過於複雜:

(ti-menu-load-string(format #f "/file/read-journal D:jialunliuDesktopCFD_TempRe_6E6_KWSST_AOA00.jou"))
(ti-menu-load-string(format #f "/file/read-journal D:jialunliuDesktopCFD_TempRe_6E6_KWSST_AOA05.jou"))
(ti-menu-load-string(format #f "/file/read-journal D:jialunliuDesktopCFD_TempRe_6E6_KWSST_AOA10.jou"))
(ti-menu-load-string(format #f "/file/read-journal D:jialunliuDesktopCFD_TempRe_6E6_KWSST_AOA15.jou"))
(ti-menu-load-string(format #f "/file/read-journal D:jialunliuDesktopCFD_TempRe_6E6_KWSST_AOA20.jou"))
(ti-menu-load-string(format #f "/file/read-journal D:jialunliuDesktopCFD_TempRe_6E6_KWSST_AOA25.jou"))

但是這種方式的問題在於依然需要人工參與,而且由於fluent並沒有重啟,會影響速度,並且輸出的圖片命名總會出問題,推薦使用windows批處理文件的形式,使用fluent的batch模式, .bat文件內容如下

call cd D:jialunliuDesktopCFD_Temp
call fluent 2ddp -wait -i Re_6E6_KWSST_AOA00.jou
call cd D:jialunliuDesktopCFD_Temp
call fluent 2ddp -wait -i Re_6E6_KWSST_AOA05.jou

這樣操作可以是fluent順序執行,沒一個case都會啟動,關閉fluent,減少冗餘,並且可以添加matlab的batch命令,直接處理fluent裏輸出的結果,那是後話。

需要特別注意的:

用.scm最後每個.jou結尾不能加exit,不然會退出,不會繼續執行,而使用batch文件的話一定要加

注意處理好fluent裏/display/open-window和/display/set-window的區別


推薦閱讀:
相關文章