内容纲要
Fluent UDF中,经常可用使用RP宏获取求解器中的一些信息。最常见的如RP_Get_Real("flow-time")
得到当前的时间。然而文档中并未明确列出其支持的字符串列表,导致RP宏使用起来不怎么方便。
这里可以通过在TUI窗口输入下面的命令将所有支持的字符串列举出来:
(cx-send '(for-each (lambda (v) (pp v)) rp-variables))
命令会返回一个超长的列表,部分结果如下所示。
(sg-swirl? #f boolean #f #f)
(rp-seg? #t boolean #f #t)
(rf-energy? #f boolean #f #f)
(rp-inviscid? #f boolean #f #f)
(rp-lam? #f boolean #f #f)
(adapt/method 2 integer () 2)
(workflow/type "" string #f "")
(solver/state () list #f ())
(workflow/state () list #f ())
(femcore/structure/stress/interpolation 0 integer #f 0)
(femcore/structure/coordinate/interpolation 3 integer #f 3)
(femcore/structure/displacement/interpolation 3 integer #f 3)
(femcore/use? #f boolean #f #f)
(point-creation-tolerance 0.0001 real #f 0.0001)
(virtualboundary/diag-level 0 integer #f 0)
(virtualboundary/bndint () list #f ())
(virtualboundary/geom () list #f ())
(virtualboundary/geomids () integer-list #f ())
(sponge/verbosity 0 integer #f 0)
(sponge/map () list #f ())
(expr/evaluate-also-in-host? #f boolean #f #f)
(expr/enable-caching? #t boolean #f #t)
(register-reports () list #f ())
(inline-expressions () list #f ())
(named-expressions () list #f ())
(inert/h-c-ratio 2.25 real #f 2.25)
(inert/amg-stabilization 0 integer #f 0)
(inert/default 0 real #f 0)
(inert/patch 0 real #f 0)
(inert/amg-method 0 integer #f 0)
(inert/cycle-type 0 integer #f 0)
(inert/amg-beta 0.7 real #f 0.7)
(inert/amg-alpha 0.1 real #f 0.1)
(inert/scheme 1 integer #f 1)
(inert/relax 1 real #f 1)
(inert/solve? #t boolean #f #t)
(inert/off? #t boolean #f #t)
(premix/les-peters-sct-factor 0.7 real #f 0.7)
(premix/ewald-exponent-q 0.66 real #f 0.66)
(premix/peters-coeff-cs 2 real #f 2)
(premix/peters-coeff-b3 1 real #f 1)
(premix/peters-coeff-b1 2 real #f 2)
(premix/blint-coeff-bl2 0.7 real #f 0.7)
(premix-g-var/max-iter 5 integer #f 5)
(premix-g-var/residual-tolerance 0.0001 real #f 0.0001)
(premix-g-var/iter-tolerance 0.05 real #f 0.05)
(premix-g-var/amg-stabilization 0 integer #f 0)
(premix-g-var/amg-method 0 integer #f 0)
(premix-g-var/cycle-type 0 integer #f 0)
(premix-g-var/amg-beta 0.7 real #f 0.7)
...
后面还有非常多~
这玩意儿怎么看?举个例子。
如上面列表中的(inert/relax 1 real #f 1)
,其中innert/relex
为字符串的名称,1
为当前值,real
为其类型,后面的不用管,猜测应该是其上下限什么的。那么在UDF中要获取此参数,可以使用下面的程序:
r = RP_Get_Real("inert/relax");
在UDF中使用这些变量,需要注意其类型,对于整形数据,需要使用RP_Get_Integer
,布尔类型的数据使用RP_Get_Boolean
,字符串类型的数据使用RP_Get_String
。相应的如果要设置这些变量,可以使用RP_Set_Real
等。
TUI中访问这些变量,可以使用rpgetval
及rpsetval
来实现。
如上面的变量可以在TUI中这么访问:
(%rpgetval 'inert/relax)
返回结果如下图所示。
具体可参见Fluent UDF手册3.6节。
(本文结束)
本篇文章来源于微信公众号: CFD之道
评论前必须登录!
注册