找回密码
 注册
查看: 5918|回复: 15

Pro98:Fluent 中scheme语言的用法。

[复制链接]
发表于 2011-4-27 09:39:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
进入fluent后,在TUI中输入下面这两条命令可以打开

(cx-gui-do cx-activate-item "MenuBar*ReadSubMenu*Case & Data...")
(cx-gui-do cx-set-text-entry "Select File*Text" “exercise-1-00001.cas”)
可以打开exercise-1-00001.cas 和与之相应的dat文件。

我在想如果可以把文件名中的“00001”用一个变量“t”代替,用于上述第二条命令中,那么我就可以用一个编个循环依次打开多个cas文件。
但是如果我这样输入:
(cx-gui-do cx-set-text-entry "Select File*Text" “exercise-1-t.cas”)
fluent提示我去找“exercise-1-t”这个文件,显然是由于文件名被双引号标记而使变量t的值没有被传入这个命令。

我的问题是:怎么在fluent scheme里的双引号标记的内容中使用变量。比如打开cas文件命令:
(cx-gui-do cx-set-text-entry "Select File*Text" “filename”)
 楼主| 发表于 2011-4-27 19:17:19 | 显示全部楼层
不能沉,自己顶。。。
发表于 2011-4-28 01:29:59 | 显示全部楼层

回复 1# zdong_hn 的帖子

闯荡CFD江湖多年,早已收山。一时手痒,回上一贴。

在Fluent中连续读入多个文件,可采用下面的命令:
(do ((x 1 (+ x 1)) ) ((> x 9))
(ti-menu-load-string
(format #f "/file/rcd  dongcfd-~03d " x))
)

可以依次读入dongcfd-001.cas dongcfd-001.dat
                        dongcfd-002.cas dongcfd-002.dat
                        dongcfd-003.cas dongcfd-003.dat
.......
                       dongcfd-009.cas dongcfd-009.dat
如要想读99999999个文件,同理!
发表于 2011-4-28 08:14:42 | 显示全部楼层

回复 3# dongcfd 的帖子

楼上的才是真正scheme语言,楼主的只是fluent自己生成的jou文件。
 楼主| 发表于 2011-4-28 21:09:18 | 显示全部楼层

回复 3# dongcfd 的帖子

多谢这位仁兄。听说fluent要改用python作为脚本语言。不知道是福还是祸。网上关于fluent scheme的资料太少了,不知道您这些功夫从何而来。佩服啊。
这小小的一段代码,够我研究半天的了。所以要学的东西真的是太多太多了。

[ 本帖最后由 zdong_hn 于 2011-4-28 21:11 编辑 ]
 楼主| 发表于 2011-4-28 21:10:44 | 显示全部楼层

回复 4# 2005011lcj 的帖子

兄台能否告知fluent里日志文件里的代码,是什么语言写成的否?
发表于 2011-4-29 00:04:23 | 显示全部楼层

回复 6# zdong_hn 的帖子

均是Scheme
发表于 2011-4-29 08:41:34 | 显示全部楼层
3楼贴出的代码很象AutoCAD的Lisp代码,难道Fluent也想改造为表处理语言。
可后来Autodesk还给ACAD加上了C++的类库ObjectARX。莫非Fluent也想在C库上加Lisp库,不一定有优势啊,三维CAD软件现在势头很猛,Pro/E、SolidWorks等等,似乎要超越ACAD了,以前我们基于ACAD做三维工厂设计系统,现在看来困难极大。
发表于 2011-4-29 12:53:24 | 显示全部楼层
Scheme是在lisp之上发展起来的,
发表于 2011-4-29 13:54:34 | 显示全部楼层

回复 8# uesoft 的帖子

fluent从早期版本rampant开始一直是采用是Scheme,不存在后来改写一说。正如 古人初识西方人,感叹"他们也长了一副人样!",hehe^_^
发表于 2011-4-29 17:43:20 | 显示全部楼层
哦,是不是udf用c,报表就用Scheme
 楼主| 发表于 2011-4-29 20:43:24 | 显示全部楼层

回复 11# uesoft 的帖子

在udf中c 和scheme可以混合编程。
 楼主| 发表于 2011-4-29 21:11:19 | 显示全部楼层

回复 3# dongcfd 的帖子

投桃报李,在用dongcfd兄的代码的时候,遇到了不少问题,现将成功的步骤弄上来,与有需要的人分享:

1,新建一个filename.scm,文件,用记事本打开。

2,在文件中输入以下内容:

(define y) “定义变量y
(do ((y 2 (+ y 1))) ((> y 301)) ‘’利用do过程实现循环,循环变量为y,初始值是2,每次加1,当y大于301时循环终止,
(ti-menu-load-string
   (format #f "file /rcd moving100m-train--1-~05d " y)) ‘’ti-menu-load-string命令相当有用,在scm文件中利用它实现fluent中菜单命令,format语句,跟c语言中的printf功能同,这条语句也很重要,实现了向双引号内传递变量的功能。~05d 表示一个五位“数”,低位为y,不足五位在高位用0补齐,常用。
(ti-menu-load-string "report/surface-integrals/area-weighted-avg (12 13) temperature yes temperature.srp yes") ‘’此语句输出id为12 13的面上的面平均静温到temperature.srp 文件。这些个语句怎么用,格式怎样,需要自己摸索。
(ti-menu-load-string "report/surface-integrals/area-weighted-avg (12 13) pressure yes pressure.srp yes")‘’同上
(ti-menu-load-string "report/surface-integrals/area-weighted-avg (12 13) velocity-magnitude yes velocity.srp yes")‘同上
)’‘此括号为do过程的结束括号。

3,打开fluent,设置好工作目录,把刚才的filename.scm,文件放入工作目录内。

4,在TUI内按回车键后输入:(load ”filenam.scm“)

则会循环打开300个cas和dat文件,打开dat文件后,输出面12 13上的静温,静压和速度大小。

完。再一次谢谢dongcfd兄,还有,我发现直接复制命令进去后老是会出错,scheme对空格很敏感。
发表于 2011-9-4 13:35:52 | 显示全部楼层
lz 的 scheme 还是简单了点

加上文件 I/O 和 计算的话,就是全自动啦

读case/data 有专门的 procedure,比如 (read-case-data fn)
发表于 2011-9-4 17:01:02 | 显示全部楼层
高手,还不知道这功能
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表