Fluent Addon 程序解析
来源:互联网 发布:重新注册淘宝账号 编辑:程序博客网 时间:2024/06/06 00:41
Fluent 自带了几个 Addon 程序,通过命令可以加载。
/define/models> addon-modules
FLUENT Addon Modules:
0. none
1. MHD Model
2. Fiber Model
3. PEM Fuel Cell Model
4. SOFC Fuel Cell Model
5. Population Balance Model
Enter Module Number: [0]
那么怎么才能自己来编写 Addon 程序呢,先卖个关子,看看目前成果。
加载 Addon Module,显示了一行文字并换行,载入UDF文件。
Addon Module 的构成包括 UDF 和 Scheme 文件,其中 UDF 文件是必须的,Scheme 文件不是必须的。
但自带模块的 Scheme 文件都是经过编译的 FASL 文件。
经过努力,居然读懂了文件中数字对应的代码,不禁有些自得。
有机会的话,写一个完整的 Addon Module。
看看 scheme 代码和 FASL 代码的对应关系
首先是 scheme 代码,用于定义新 rp-var。
(define make-new-rpvar
(lambda (name default type)
(if (not (rp-var-object name))
(rp-var-define name default type #f)
)
(prf-update-all-rpvars)
)
)
翻译成 FASL 代码:(这里省略了文件开始部分)
123
137
1124
1138
139
1310
01125
1126
11311
138
0011312
138
139
1310
120
011313
0000
----------------------------------------------------------------------------------------------------------------------
其实,fluent 加载 UDF 时也会自动加载 FASL 文件,如果存在的话。所以 UDF 的目录结构就是问题的关键了。
----------------------------------------------------------------------------------------------------------------------
FASL 文件中,如果是 if 分支,必须同时实现条件为真和假时的代码,不然程序就会挂掉。
最近知道了 FLUENT 编译 fasl 代码的命令: (sf "/path/to/filename_without_ext")
给一个对比的例子:
原始代码
(define (hy-append-to-file fn s) (let ((port (open-file fn "a"))) (format port "~a\n" s) (close-output-port port) ))(define factorial (lambda (n) (let fact ((i n)) (if (= i 0) 1 (* i (fact (- i 1))) ) ) ))
sf 之后的代码:
(define lambda *unbound* begin set! if %= %* %- #f)(hy-append-to-file fn s port format close-output-port open-file factorial n fact i)12013011211131132011121113301123113413317"~a\n"13201135133000113613117"a"0000120 (define137 factorial1121 (lambda1138 (n011121 ) (let1139 ((fact))01123 (begin1124 (set!139 fact1121 1131001125112613101400141112713101139112813101410000001139138000129000
- Fluent Addon 程序解析
- 尝试反汇编 FLUENT ADDON 之 SOFC
- fluent define/models下没有addon-module的解法
- vim-addon
- addon概貌
- Fluent NHibernate
- Fluent NHibernate
- Fluent UI
- fluent study
- EF Code First 使用反射加载程序集中的Fluent API配置文件
- addon.bin 翻译成果
- Dorado7 Hibernate AddOn
- My Firefox Addon Collection
- 安装IDOUtils addon
- nodejs addon binding osg
- jQuery Timepicker Addon
- vim addon manager
- c++编写node的addon(3) --向addon传参
- Windows编程知识要点总结2-内核对象
- zoj 2551 判线段相交
- python中的静态方法和类方法
- 在返回的实体list中进行sum聚合函数
- 10 条最酷的 Linux 单行命令
- Fluent Addon 程序解析
- JAVA 哈希表类 HashTable
- 透明窗体子窗体显示
- 透明窗体大杂烩
- Safe, Simple Multithreading in Windows Forms, Part 1
- Head First 设计模式
- Android开发之计算器
- Safe, Simple Multithreading in Windows Forms, Part 2
- Safe, Simple Multithreading in Windows Forms, Part 3