Fluent二次开发基础培训_第1页
Fluent二次开发基础培训_第2页
Fluent二次开发基础培训_第3页
Fluent二次开发基础培训_第4页
Fluent二次开发基础培训_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、A Pera Global Company 2008 PERA ChinaFluent二次开发教程二次开发教程安世亚太科技(北京)有限公司A Pera Global Company 2008 PERA China主要内容主要内容 Scheme简介 Scheme的基本语法 Fluent中使用Scheme 示例代码解析A Pera Global Company 2008 PERA Chinafluent的脚本语言的脚本语言-scheme Scheme语言是LISP语言的一个方言(或说成变种),它诞生于1975年的MIT,有着近三十年的历史 Scheme是一个小巧而又强大的语言,作为一个多用途的编程

2、语言,它可以作为脚本语言使用,也可以作为应用软件的扩展语言来使用1.Scheme简介A Pera Global Company 2008 PERA Chinafluent的脚本语言的脚本语言-scheme 关于scheme语言的语法,请参见 http:/ http:/ /home/dorai/t-y-scheme/t-y-scheme-Z-H-1.html 用scheme开发fluent涉及到fluent的内部变量和系统函数,参见:Mirko Javurek, Linz 写的写的Scheme Programing in FLUENT 5 & 6

3、注意:fluent并未发布过官方的scheme手册,此手册为德国fluent的工程师根据应用总结,大量fluent的内部变量和函数是未知的。 1.Scheme简介A Pera Global Company 2008 PERA Chinascheme的变量的变量 scheme语言定义全局变量 scheme变量定义不分类型例:(define x 1) 给x赋值为1 (define x) 定义变量x,未赋值 scheme语言定义局部变量(let (变量1 值)(变量2 值) (语句1)(语句2)变量1、变量2只作用于后面括号内的语句 但是,scheme的基础变量在fluent的用户界面(cortex

4、)和内核里是不能用来传递数据的,因此,fluent有rp变量和cx变量两种类型的fluent变量,cx变量应用不多,在二次开发中,用rp变量就可以了,rp变量也可以在udf中使用。2.Scheme的基本语法A Pera Global Company 2008 PERA Chinafluent的的rp变量变量 脚本中定义rp变量(integer, real, string, list)例:(rp-var-define x 1 integer #f) 定义rp变量x为整型,值为1 (rpsetvar x 7) 给x赋值7 fluent的rp变量不是基础类型,因此不能直接计算和赋值,需要获取它的真正

5、值,如下:(rpgetvar x)注意当使用rp变量时,变量前的是必须要有的2.Scheme的基本语法A Pera Global Company 2008 PERA Chinascheme的函数定义的函数定义 lambda 匿名函数(lambda(参数1 参数2) 语句1 语句2 ) define (define(函数名 参数1 参数2) 语句1 语句2)2.Scheme的基本语法A Pera Global Company 2008 PERA Chinafluent启动加载启动加载scheme scheme文件扩展名为scm。 在启动命令后面,加上参数-i,加scheme文件。 例如: D:F

6、luent.Incntbinntx86fluent.exe 3d -r6.3.26 -i d:try_m.scm3.Fluent中使用SchemeA Pera Global Company 2008 PERA Chinafluent启动加载启动加载scheme3.Fluent中使用SchemeA Pera Global Company 2008 PERA Chinafluent的主要控件的主要控件 Fluent的窗口都是通过菜单栏来触发,模板也一样。(工具栏菜单)menu(工具栏下拉菜单)menu触发窗口panel(窗口)panel(按钮)button(按钮)button (panel-but

7、ton)(fluent主窗口)3.Fluent中使用SchemeA Pera Global Company 2008 PERA Chinafluent的控件介绍的控件介绍(浮点型输入)real-entry(布局用的表格)table(整型输入)integer-entry(多选框输入)symbol-list(窗口)panel(下拉菜单输入输入)drop-down-list3.Fluent中使用SchemeA Pera Global Company 2008 PERA ChinaA Pera Global Company 2008 PERA Chinafluent TUI命令命令fluent自动执行

8、的基础:scheme程序中执行TUI命令在fluent窗口中,回车就能显示出下一级可进行的操作命令,基本和界面操作一致,略有不同3.Fluent中使用SchemeA Pera Global Company 2008 PERA Chinafluent TUI命令命令l在在scheme中的执行中的执行 TUI命令命令 例:例:(ti-menu-load-string(format #f display/open-window n)(ti-menu-load-string(format #f grid/scale a a a (rpgetvar scale_factor/x) (rpgetvar s

9、cale_factor/y) (rpgetvar scale_factor/z)这决定了凡是tui可以执行的操作,scheme程序都可以完成红色的表示TUI命令命令中可以插入变量:a表示有一个变量插入,格式由程序自动控制绿色的表示TUI命令中插入的变量3.Fluent中使用SchemeA Pera Global Company 2008 PERA Chinafluent scheme模板程序模板程序一般有四部分A. 定义rp变量B. 定义窗口及内部控件函数C. 定义菜单D. 定义执行函数(也可放入窗口中,但会使代码比杂乱)4.代码解析A Pera Global Company 2008 PER

10、A Chinascheme程序的执行程序的执行在fluent读入scheme程序的时候,没有入口函数,所有函数都被定义,但函数中的代码都不执行,函数内代码只有在被调用的时候才会执行。只执行不在函数内的语句。例如(define gui-my-input panel (语句1) ) 只是定义了gui-my-input panel这个函数,里面的(语句1)并不执行A.定义rp变量(不是函数)B.定义窗口及内部控件函数C.定义菜单(不是函数)D.定义执行函数(也可放入窗口中,但会使代码比杂乱)fluent载入scheme脚本的时候真正执行的代码4.代码解析A Pera Global Company 2

11、008 PERA Chinascheme程序的执行程序的执行- 定义定义rp变量变量;定义定义rp变量的函数,为了方便定义rp变量(define (set-new-var s v t) (if(not(rp-var-object s) (rp-var-define s v t #f) ) );定义所需rp变量(for-each (lambda(var)(apply set-new-var var) ( (scale-unit () list) (scale_factor 0 real) (pinlet-surface () list) (pinlet-gauge-total-pressure

12、6000000 real) (pinlet-initial-gauge-pressure 5950000 real) (pinlet-total-temperature 3500 real) (poutlet-surface () list) (poutlet-gauge-pressure 101325 real) (x-axis 1 real) (y-axis 0 real) (z-axis 0 real) (initial-flag #t boolean) (scale-flag #t boolean) (iterate-number 1000 integer) (courant-numb

13、er 2 real) (return-list () list) (return-value 0 real) (inlet-mass-flow 0 real) (outlet-mass-flow 0 real) (net-mass-flow 0 real) ) )定义类型为real(小数),初值为0的三个方向的缩放比例定义类型为boolean(布尔)的变量,初值为真,来判断是否已经初始化,是否已经完成缩放操作定义类型为list(列表,类似数组),初值为空的变量,以获取报告流量输出的相关数据将上面定义的定义rp变量的函数用在以下列表中4.代码解析A Pera Global Company 200

14、8 PERA Chinascheme程序的执行程序的执行 - 定义窗口及内部控件定义窗口及内部控件(define gui-my-input-panel (let (panel) . ) (define (update-cb . args) . ) (define (apply-cb . args) . ) (lambda () (if (not panel) (let ( . ) . ) ) (cx-show-panel panel) ) ) )定义载入 窗口的函数gui-my-input-panel2.2定义窗口加载的各控件的初始值2.3按下窗口ok按钮后,将窗口各控件获取的值提交给rp变量

15、2.4创建窗口和其中的控件2.1定义窗口加载的各控件名称和私有变量以下以“参数设置”窗口的代码为例讲解4.代码解析A Pera Global Company 2008 PERA Chinascheme程序的执行程序的执行 - 定义窗口及内部控件定义窗口及内部控件 - B B1 1定义窗口加载的各控件名称和私有变量定义窗口加载的各控件名称和私有变量(let(panel) (scale-unit-entry) (note-entry) (pinlet-surface-group) (pinlet-surfaces-entry) (pinlet-gauge-total-pressure-entry)

16、 (pinlet-initial-gauge-pressure-entry) (pinlet-total-temperature-entry) (poutlet-surface-group) (poutlet-surfaces-entry) (poutlet-gauge-pressure-entry) (periodic-surface-group) (periodic-surfaces-entry) (rot-axis-entry) (blank-entry) (iterate-number-entry) (courant-number-entry) (info-button) )4.代码解

17、析A Pera Global Company 2008 PERA China (define(update-cb . args) (cx-set-list-items scale-unit-entry (mm m) (set! pinlet-surface-group (append (list-tail (inquire-surface-group-names) 1) (list-head (inquire-surface-group-names) 1) ) ; put inlet first (cx-set-symbol-list-items pinlet-surfaces-entry p

18、inlet-surface-group ) (cx-set-symbol-list-selections pinlet-surfaces-entry (list (car pinlet-surface-group) (cx-set-real-entry pinlet-gauge-total-pressure-entry (rpgetvar pinlet-gauge-total-pressure) ) (cx-set-real-entry pinlet-initial-gauge-pressure-entry (rpgetvar pinlet-initial-gauge-pressure) )

19、(cx-set-real-entry pinlet-total-temperature-entry (rpgetvar pinlet-total-temperature) ) (set! poutlet-surface-group (append (list-tail (inquire-surface-group-names) 3) (list-head (inquire-surface-group-names) 3) ) (cx-set-symbol-list-items poutlet-surfaces-entry poutlet-surface-group ) (cx-set-symbo

20、l-list-selections poutlet-surfaces-entry (list (car poutlet-surface-group) (cx-set-real-entry poutlet-gauge-pressure-entry (rpgetvar poutlet-gauge-pressure) ) (set! periodic-surface-group (append (list-tail (inquire-surface-group-names) 2) (list-head (inquire-surface-group-names) 2) ) (cx-set-symbol

21、-list-items periodic-surfaces-entry periodic-surface-group ) (cx-set-symbol-list-selections periodic-surfaces-entry (list (car periodic-surface-group) (cx-set-list-items rot-axis-entry (x y z) (cx-set-integer-entry iterate-number-entry (rpgetvar iterate-number) ) (cx-set-real-entry courant-number-en

22、try (rpgetvar courant-number) ) )4.代码解析scheme程序的执行程序的执行- 定义窗口及内部控件定义窗口及内部控件- B2定义窗口加载的各控件的初始值A Pera Global Company 2008 PERA Chinafluent内部设置real变量输入控件对象例如: (cx-set-real-entry pinlet-gauge-total-pressure-entry (rpgetvar pinlet-gauge-total-pressure) )此段代码用cx-set-real-entry这个fluent内部对象,创建了一个名为pinlet-ga

23、uge-total-pressure-entry的对象实例,把rp变量pinlet-gauge-total-pressure的值赋给它作为控件内容的初值fluent控件名(局部变量)获取 rp变量scale_factor/x的值4.代码解析scheme程序的执行程序的执行- 定义窗口及内部控件定义窗口及内部控件- B2定义窗口加载的各控件的初始值A Pera Global Company 2008 PERA China ;定义参数设置窗口提交内容函数,设置参数值(define(apply-cb . args) (rpsetvar scale-unit (cx-show-list-selecti

24、ons scale-unit-entry) (rpsetvar pinlet-surfaces (cx-show-list-selections pinlet-surfaces-entry) (rpsetvar pinlet-gauge-total-pressure (cx-show-real-entry pinlet-gauge-total-pressure-entry) (rpsetvar pinlet-initial-gauge-pressure (cx-show-real-entry pinlet-initial-gauge-pressure-entry) (rpsetvar pinl

25、et-total-temperature (cx-show-real-entry pinlet-total-temperature-entry) (rpsetvar poutlet-surfaces (cx-show-list-selections poutlet-surfaces-entry) (rpsetvar poutlet-gauge-pressure (cx-show-real-entry poutlet-gauge-pressure-entry) (rpsetvar periodic-surfaces (cx-show-list-selections periodic-surfac

26、es-entry) (rpsetvar rot-axis (cx-show-list-selections rot-axis-entry) (rpsetvar iterate-number (cx-show-integer-entry iterate-number-entry) (rpsetvar courant-number (cx-show-real-entry courant-number-entry) (set-solve-model) )4.代码解析scheme程序的执行程序的执行- 定义窗口及内部控件定义窗口及内部控件- B3窗口内控件提交功能的触发A Pera Global Co

27、mpany 2008 PERA Chinal (rpsetvar scale-unit (cx-show-list-selections scale-unit-entry) 将名为scale-unit-entry的控件的值, 用rpsetvar方法,赋给rp变量scale-unit l (set-solve-model)按下ok按钮后,要执行的命令函数fluent用户界面获取下拉菜单输入值的方法4.代码解析scheme程序的执行程序的执行- 定义窗口及内部控件定义窗口及内部控件- B3窗口内控件提交功能的触发A Pera Global Company 2008 PERA ChinaB.定义窗口

28、及内部控件定义窗口及内部控件-B4窗口和控件的创建窗口和控件的创建;定义建立参数设置窗口函数 (lambda () ;定义窗口布局表单变量 (let(table)(table1)(table11)(table22)(table2)(table222)(table221)(scale-box)(let-box)(inlet-box)(outlet-box)(x-box)(iterate-box) (set! panel(cx-create-panel 参数设置 apply-cb update-cb) (set! table(cx-create-table panel border #t belo

29、w 0 right-of 0) (set! table1 (cx-create-table table border #f row 0 col 0) (set! table11 (cx-create-table table1 border #f row 0 col 0) (set! scale-box (cx-create-table table11 网格缩放 border #t row 0 col 0) (set! scale-unit-entry (cx-create-drop-down-list scale-box 选择网格创建所用单位 row 0 col 0) (set! note-e

30、ntry (cx-create-text table11 每启动一次fluent,缩放n只起一次作用 row 1 col 0) (set! table2(cx-create-table table border #f row 0 col 1) (set! inlet-box (cx-create-table table2 设置压强入口参数 border #t row 0 col 0) (set! pinlet-surfaces-entry (cx-create-symbol-list inlet-box 选择压强入口面 visible-lines 6 multiple-selections #

31、t row 0 col 0) (set! pinlet-gauge-total-pressure-entry (cx-create-real-entry inlet-box 入口总压(Pa) row 1 col 0) (set! pinlet-initial-gauge-pressure-entry (cx-create-real-entry inlet-box 入口初始表压(Pa) row 2 col 0) (set! pinlet-total-temperature-entry (cx-create-real-entry inlet-box 入口总温(K) row 3 col 0) (se

32、t! table22(cx-create-table table2 border #f row 0 col 1) (set! table222(cx-create-table table22 border #f row 0 col 0) 。 (set! iterate-box (cx-create-table table22 求解设置 border #t row 2 col 0) (set! blank-entry (cx-create-text iterate-box row 0 col 0) (set! iterate-number-entry (cx-create-integer-ent

33、ry iterate-box 迭代次数 row 0 col 1) (set! courant-number-entry (cx-create-real-entry iterate-box Courant 数 row 0 col 2) ) ; 显示窗口 (cx-show-panel panel) ) ) )定义局部变量:布局表单4.代码解析A Pera Global Company 2008 PERA China用cx-create-panel方法建立窗口控件名为panel标题为“参数设置”按下ok按钮后执行函数为 apply-cb载入时,初始化窗口控件值函数为update-cb (set! p

34、anel (cx-create-panel 参数设置 apply-cb update-cb) (set! table (cx-create-table panel border #t below 0 right-of 0)用cx-create-table方法建立布局表单标题为空从属于panel窗口名为table位置为窗口中间显示边框4.代码解析scheme程序的执行程序的执行- 定义窗口及内部控件定义窗口及内部控件- B4窗口和控件的创建A Pera Global Company 2008 PERA China4.代码解析 (set! scale-unit-entry (cx-create-d

35、rop-down-list scale-box 选择网格创建所用单位 row 0 col 0) (cx-show-panel panel)用cx-show-panel方法显示panel窗口用cx-create-drop-down-list方法建立下拉菜单输入框名为scale-unit-entry 位于scalebox表单中 标题为“选择网格创建所用单位”在表单中,位于第1行,第列scheme程序的执行程序的执行- 定义窗口及内部控件定义窗口及内部控件- B4窗口和控件的创建A Pera Global Company 2008 PERA China;在工具栏上建立菜单面板(let (menu (cx-add-menu 仿真向导模板 #U ) (cx-add-item menu 参数设置 #U #f cx-client? gui-my-input-panel)(cx-add-item menu 参数设置说明 #O #f cx-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论