我想在Ansys Fluent中读取10个案例文件,对于每个案例文件,有10个数据文件需要读取。 Ansys Fluent使用Scheme编程语言。我必须设法在这里(Evaluating a floating point variable in Scheme language)和这里(How to increase counter in a do-loop within Scheme language?)获得代码中的个别问题的答案,但在收集个别答案时,我意识到我需要一个新的代码用于通过计数器读取数据文件做环。以下是包含来自其他问题的解决方案的代码:
(do ((i 10 (+ i 1))
(j 5 (+ j 1)))
((>= i 20) 'my-return-value)
(ti-menu-load-string
(format #f "/file/read-case \"C:/DataProcessing/Case~a-time~a-sec/test/Case~a-time~a-sec.cas\"" i j i j))
(do ((datafilenum 5.100 (+ datafilenum 0.100)))
((>= datafilenum 6.000))
(ti-menu-load-string (format #f "/file/read-data \"C:/DataProcessing/Case~a-time~a-sec/test/Case~a-time~a-sec-~.3f.dat\"" i j i j datafilenum))
(ti-menu-load-string (format #f "/plot plot n \"C:/DataProcessing/Case~a-time~a-sec/test/water-vof/column-water-vof-at-~.3fs.txt\" y n n water vof y 0 1 0 16 ()" i j datafilenum))))
我想在这里实现的是:阅读案例文件
Case10-time5-sec.cas
然后它读取10个数据文件并绘制答案
Case10-time5-sec-5.100.dat
Case10-time5-sec-5.200.dat
...
Case10-time5-sec-6.000.dat
下一循环:
Case11-time6-sec.cas
阅读10个数据文件并绘制答案
Case11-time6-sec-6.100.dat
Case11-time6-sec-6.200.dat
...
Case11-time6-sec-7.000.dat
下一循环......
那么,如何在datafilenum
,5.100
,6.100
等中将7.100
开头的7.100
更改为j
,当j.100
在上部循环中更改值时,类似于column-water-vof-at-~.3fs.txt
并将此值附加到导出的文本文件6.000
。当然,改变,7.000
到8.000
,j+1.000
......,像j
?这让我非常困惑,因为我使用了试验和错误来实现它!
如何获得号码。如果6.1
是6并且您想要1/10
,则使用标准数学运算将(define j 6)
(+ j 1/10)
; ==> 61/10 (aka 6.1 exact)
添加到它。
format
函数SRFI-48 Intermediate Format Strings不是标准的,因此存在许多竞争实现。在61/10
你可以这样做让6.100
显示为(format #f "~0,3F" (+ j 1/10))
; ==> "6.100"
:
(do ((i 10 (+ i 1))
(j 5 (+ j 1)))
((>= i 20))
(ti-menu-load-string
(format #f "/file/read-case \"C:/DataProcessing/Case~a-time~a-sec/test/Case~a-time~a-sec.cas\"" i j i j))
(do ((datafilenum (+ j 1/10) (+ datafilenum 1/10)))
((>= datafilenum (+ j 1)))
(ti-menu-load-string (format #f "/file/read-data \"C:/DataProcessing/Case~a-time~a-sec/test/Case~a-time~a-sec-~0,3F.dat\"" i j i j datafilenum))
(ti-menu-load-string (format #f "/plot plot n \"C:/DataProcessing/Case~a-time~a-sec/test/water-vof/column-water-vof-at-~0,3Fs.txt\" y n n water vof y 0 1 0 16 ()" i j datafilenum))))
所以把它们放在一起:
format
如果这不起作用,您需要编辑您正在使用的实现。例如。球拍有(require srfi/48)
不同,但它也支持SRFI-48所以我用qazxswpoi测试了这个。我更喜欢使用SRFI而不是实现版本,因为以后移植到不同的实现或修订版RNRS会更容易。