fluent批量处理——连续计算以及批量后处理

浏览:63189 评论:3 收藏:3
上一次,已经提到了采用journal文件进行计算前的模型参数设置,想必大家觉得很过瘾吧!根据本人自身经历来说的话,面对每次上千的工况,采用此种方法还是减少了很大的工作量。
本次,将继续介绍journal的另外一些别的用途:连续计算以及批量后处理。
1、连续计算
上千的工况case文件写好了,那就得计算,想想按照以往肯定是投一个计算,等着时间差不多了,或者计算完了再接着投计算,但是很多时候会遇到计算结束的时候是在晚上或者是在节假日,这时的话,如果第二天不来计算机房的话,那么宝贵的时间就浪费了,来机房的话,为了几个计算又显得不太值得。因此,本节将再次利用 fluent中的journal文件实现连续计算。
开始的步骤见帖子” http://forums.caenet.cn/showtopic-532623.aspx“
以下是投计算的journal文件:
(cx-gui-do cx-activate-item "MenuBar*ReadSubMenu*Case & Data...")
(cx-gui-do cx-activate-item "Warning*OK")
(cx-gui-do cx-set-text-entry "Select File*Text" "fluent1.cas")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-activate-item "MenuBar*InitializeSubMenu*Initialize...")
(cx-gui-do cx-set-list-selections "Solution Initialization*DropDownList1(Compute From)" '( 6))
(cx-gui-do cx-activate-item "Solution Initialization*DropDownList1(Compute From)")
(cx-gui-do cx-activate-item "Solution Initialization*PanelButtons*PushButton1(OK)")
(cx-gui-do cx-activate-item "Solution Initialization*PanelButtons*PushButton2(Cancel)")
(cx-gui-do cx-activate-item "MenuBar*SolveMenu*Iterate...")
(cx-gui-do cx-set-integer-entry "Iterate*Table1*Frame2(Iteration)*Table2(Iteration)*IntegerEntry1(Number of Iterations)" 3000)
(cx-gui-do cx-activate-item "MenuBar*SolveMenu*Iterate...")
(cx-gui-do cx-activate-item "Iterate*PanelButtons*PushButton1(OK)")
(cx-gui-do cx-activate-item "MenuBar*WriteSubMenu*Case & Data...")
(cx-gui-do cx-set-text-entry "Select File*Text" "fluent1.cas ")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-activate-item "Warning*OK")
(cx-gui-do cx-activate-item "MenuBar*ReadSubMenu*Case & Data...")
(cx-gui-do cx-activate-item "Warning*OK")
(cx-gui-do cx-set-text-entry "Select File*Text" "fluent2.cas")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-activate-item "MenuBar*InitializeSubMenu*Initialize...")
(cx-gui-do cx-set-list-selections "Solution Initialization*DropDownList1(Compute From)" '( 6))
(cx-gui-do cx-activate-item "Solution Initialization*DropDownList1(Compute From)")
(cx-gui-do cx-activate-item "Solution Initialization*PanelButtons*PushButton1(OK)")
(cx-gui-do cx-activate-item "Solution Initialization*PanelButtons*PushButton2(Cancel)")
(cx-gui-do cx-activate-item "MenuBar*SolveMenu*Iterate...")
(cx-gui-do cx-set-integer-entry "Iterate*Table1*Frame2(Iteration)*Table2(Iteration)*IntegerEntry1(Number of Iterations)" 3000)
(cx-gui-do cx-activate-item "MenuBar*SolveMenu*Iterate...")
(cx-gui-do cx-activate-item "Iterate*PanelButtons*PushButton1(OK)")
(cx-gui-do cx-activate-item "MenuBar*WriteSubMenu*Case & Data...")
(cx-gui-do cx-set-text-entry "Select File*Text" "fluent2.cas ")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-activate-item "Warning*OK")
OK,不管你有多少个计算工况,统统按照这样编写就OK。不要要注意的是,确保你设置的步数”Iterate“下,计算结果能够收敛,这个很重要。
一个美好的夜晚或者周末就这样被你很好的利用起来了!觉得不错吧!
2、批量后处理
其实,思路还是和上面一样,所以直接上GUI代码:
(cx-gui-do cx-activate-item "MenuBar*ReadSubMenu*Case & Data...")
(cx-gui-do cx-set-text-entry "Select File*Text" "fluent.cas")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-activate-item "MenuBar*ReportMenu*Forces...")
(cx-gui-do cx-set-toggle-button "Force Reports*Frame1*Frame1(Options)*ToggleBox1(Options)*Forces" #f)
(cx-gui-do cx-activate-item "Force Reports*Frame1*Frame1(Options)*ToggleBox1(Options)*Forces")
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry1(X)" '( 1))
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry2(Y)" '( 0))
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry3(Z)" '( 0))
(cx-gui-do cx-set-list-selections "Force Reports*Frame2*List2(Wall Zones)" '())
(cx-gui-do cx-activate-item "Force Reports*Frame2*List2(Wall Zones)")
(cx-gui-do cx-activate-item "Force Reports*Frame2*PushButton3(DeselectAll)")
(cx-gui-do cx-set-list-selections "Force Reports*Frame2*List2(Wall Zones)" '( 1 2 3 5))
(cx-gui-do cx-activate-item "Force Reports*Frame2*List2(Wall Zones)")
(cx-gui-do cx-activate-item "Force Reports*PanelButtons*PushButton1(Write)")
(cx-gui-do cx-set-text-entry "Select File*Text" "fluent.txt")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry1(X)" '( 0))
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry2(Y)" '( 1))
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry3(Z)" '( 0))
(cx-gui-do cx-activate-item "Force Reports*PanelButtons*PushButton1(Write)")
(cx-gui-do cx-set-text-entry "Select File*Text" "fluent.txt")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-activate-item "Question*OK")
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry1(X)" '( 0))
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry2(Y)" '( 0))
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry3(Z)" '( 1))
(cx-gui-do cx-activate-item "Force Reports*PanelButtons*PushButton1(Write)")
(cx-gui-do cx-set-text-entry "Select File*Text" "fluent.txt")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-activate-item "Question*OK")
(cx-gui-do cx-set-toggle-button "Force Reports*Frame1*Frame1(Options)*ToggleBox1(Options)*Moments" #f)
(cx-gui-do cx-activate-item "Force Reports*Frame1*Frame1(Options)*ToggleBox1(Options)*Moments")
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry1(X)" '( 0))
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry2(Y)" '( -2))
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry3(Z)" '( 0))
(cx-gui-do cx-activate-item "Force Reports*PanelButtons*PushButton1(Write)")
(cx-gui-do cx-set-text-entry "Select File*Text" "fluent.txt")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-activate-item "Question*OK")
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry1(X)" '( 0))
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry2(Y)" '( -1))
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry3(Z)" '( 0))
(cx-gui-do cx-activate-item "Force Reports*PanelButtons*PushButton1(Write)")
(cx-gui-do cx-set-text-entry "Select File*Text" "fluent.txt")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-activate-item "Question*OK")
后面的接着同样的方式写就是了,很方便的。
其中”(cx-gui-do cx-set-text-entry "Select File*Text" "fluent.txt")“这一步的后缀名,你也可以设置成别的,不过最好是txt。
本次,将继续介绍journal的另外一些别的用途:连续计算以及批量后处理。
1、连续计算
上千的工况case文件写好了,那就得计算,想想按照以往肯定是投一个计算,等着时间差不多了,或者计算完了再接着投计算,但是很多时候会遇到计算结束的时候是在晚上或者是在节假日,这时的话,如果第二天不来计算机房的话,那么宝贵的时间就浪费了,来机房的话,为了几个计算又显得不太值得。因此,本节将再次利用 fluent中的journal文件实现连续计算。
开始的步骤见帖子” http://forums.caenet.cn/showtopic-532623.aspx“
以下是投计算的journal文件:
(cx-gui-do cx-activate-item "MenuBar*ReadSubMenu*Case & Data...")
(cx-gui-do cx-activate-item "Warning*OK")
(cx-gui-do cx-set-text-entry "Select File*Text" "fluent1.cas")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-activate-item "MenuBar*InitializeSubMenu*Initialize...")
(cx-gui-do cx-set-list-selections "Solution Initialization*DropDownList1(Compute From)" '( 6))
(cx-gui-do cx-activate-item "Solution Initialization*DropDownList1(Compute From)")
(cx-gui-do cx-activate-item "Solution Initialization*PanelButtons*PushButton1(OK)")
(cx-gui-do cx-activate-item "Solution Initialization*PanelButtons*PushButton2(Cancel)")
(cx-gui-do cx-activate-item "MenuBar*SolveMenu*Iterate...")
(cx-gui-do cx-set-integer-entry "Iterate*Table1*Frame2(Iteration)*Table2(Iteration)*IntegerEntry1(Number of Iterations)" 3000)
(cx-gui-do cx-activate-item "MenuBar*SolveMenu*Iterate...")
(cx-gui-do cx-activate-item "Iterate*PanelButtons*PushButton1(OK)")
(cx-gui-do cx-activate-item "MenuBar*WriteSubMenu*Case & Data...")
(cx-gui-do cx-set-text-entry "Select File*Text" "fluent1.cas ")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-activate-item "Warning*OK")
(cx-gui-do cx-activate-item "MenuBar*ReadSubMenu*Case & Data...")
(cx-gui-do cx-activate-item "Warning*OK")
(cx-gui-do cx-set-text-entry "Select File*Text" "fluent2.cas")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-activate-item "MenuBar*InitializeSubMenu*Initialize...")
(cx-gui-do cx-set-list-selections "Solution Initialization*DropDownList1(Compute From)" '( 6))
(cx-gui-do cx-activate-item "Solution Initialization*DropDownList1(Compute From)")
(cx-gui-do cx-activate-item "Solution Initialization*PanelButtons*PushButton1(OK)")
(cx-gui-do cx-activate-item "Solution Initialization*PanelButtons*PushButton2(Cancel)")
(cx-gui-do cx-activate-item "MenuBar*SolveMenu*Iterate...")
(cx-gui-do cx-set-integer-entry "Iterate*Table1*Frame2(Iteration)*Table2(Iteration)*IntegerEntry1(Number of Iterations)" 3000)
(cx-gui-do cx-activate-item "MenuBar*SolveMenu*Iterate...")
(cx-gui-do cx-activate-item "Iterate*PanelButtons*PushButton1(OK)")
(cx-gui-do cx-activate-item "MenuBar*WriteSubMenu*Case & Data...")
(cx-gui-do cx-set-text-entry "Select File*Text" "fluent2.cas ")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-activate-item "Warning*OK")
OK,不管你有多少个计算工况,统统按照这样编写就OK。不要要注意的是,确保你设置的步数”Iterate“下,计算结果能够收敛,这个很重要。
一个美好的夜晚或者周末就这样被你很好的利用起来了!觉得不错吧!
2、批量后处理
其实,思路还是和上面一样,所以直接上GUI代码:
(cx-gui-do cx-activate-item "MenuBar*ReadSubMenu*Case & Data...")
(cx-gui-do cx-set-text-entry "Select File*Text" "fluent.cas")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-activate-item "MenuBar*ReportMenu*Forces...")
(cx-gui-do cx-set-toggle-button "Force Reports*Frame1*Frame1(Options)*ToggleBox1(Options)*Forces" #f)
(cx-gui-do cx-activate-item "Force Reports*Frame1*Frame1(Options)*ToggleBox1(Options)*Forces")
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry1(X)" '( 1))
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry2(Y)" '( 0))
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry3(Z)" '( 0))
(cx-gui-do cx-set-list-selections "Force Reports*Frame2*List2(Wall Zones)" '())
(cx-gui-do cx-activate-item "Force Reports*Frame2*List2(Wall Zones)")
(cx-gui-do cx-activate-item "Force Reports*Frame2*PushButton3(DeselectAll)")
(cx-gui-do cx-set-list-selections "Force Reports*Frame2*List2(Wall Zones)" '( 1 2 3 5))
(cx-gui-do cx-activate-item "Force Reports*Frame2*List2(Wall Zones)")
(cx-gui-do cx-activate-item "Force Reports*PanelButtons*PushButton1(Write)")
(cx-gui-do cx-set-text-entry "Select File*Text" "fluent.txt")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry1(X)" '( 0))
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry2(Y)" '( 1))
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry3(Z)" '( 0))
(cx-gui-do cx-activate-item "Force Reports*PanelButtons*PushButton1(Write)")
(cx-gui-do cx-set-text-entry "Select File*Text" "fluent.txt")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-activate-item "Question*OK")
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry1(X)" '( 0))
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry2(Y)" '( 0))
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry3(Z)" '( 1))
(cx-gui-do cx-activate-item "Force Reports*PanelButtons*PushButton1(Write)")
(cx-gui-do cx-set-text-entry "Select File*Text" "fluent.txt")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-activate-item "Question*OK")
(cx-gui-do cx-set-toggle-button "Force Reports*Frame1*Frame1(Options)*ToggleBox1(Options)*Moments" #f)
(cx-gui-do cx-activate-item "Force Reports*Frame1*Frame1(Options)*ToggleBox1(Options)*Moments")
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry1(X)" '( 0))
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry2(Y)" '( -2))
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry3(Z)" '( 0))
(cx-gui-do cx-activate-item "Force Reports*PanelButtons*PushButton1(Write)")
(cx-gui-do cx-set-text-entry "Select File*Text" "fluent.txt")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-activate-item "Question*OK")
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry1(X)" '( 0))
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry2(Y)" '( -1))
(cx-gui-do cx-set-real-entry-list "Force Reports*Frame1*Frame2*Frame1(Vector)*RealEntry3(Z)" '( 0))
(cx-gui-do cx-activate-item "Force Reports*PanelButtons*PushButton1(Write)")
(cx-gui-do cx-set-text-entry "Select File*Text" "fluent.txt")
(cx-gui-do cx-activate-item "Select File*OK")
(cx-gui-do cx-activate-item "Question*OK")
后面的接着同样的方式写就是了,很方便的。
其中”(cx-gui-do cx-set-text-entry "Select File*Text" "fluent.txt")“这一步的后缀名,你也可以设置成别的,不过最好是txt。

技术邻APP
工程师必备
工程师必备
- 项目客服
- 培训客服
- 平台客服
TOP

3
3