Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File io 如何使用Scheme文件i/o修改一组Ansys Fluent变量? 问题_File Io_Scheme - Fatal编程技术网

File io 如何使用Scheme文件i/o修改一组Ansys Fluent变量? 问题

File io 如何使用Scheme文件i/o修改一组Ansys Fluent变量? 问题,file-io,scheme,File Io,Scheme,我的同事和我一直在尝试使用一些方案代码,这些代码将从TSV文件中获取输入,并将这些值分配给已经在Ansys软件中定义的变量 档案 TSV文件的组织方式如下: 1 0.7 0.8 0.7 1.0 0.5 [...] 2 0.9 0.9 0.3 0.5 0.5 [...] 3 0.5 0.8 0.3 0.3 0.7 [...] 4 0.6 0.2 1.0 0.5 0.5 [...] 5 0.9 0.0 0.0 0.8 0.3 [

我的同事和我一直在尝试使用一些方案代码,这些代码将从TSV文件中获取输入,并将这些值分配给已经在Ansys软件中定义的变量


档案 TSV文件的组织方式如下:

1   0.7  0.8  0.7  1.0  0.5  [...]
2   0.9  0.9  0.3  0.5  0.5  [...]
3   0.5  0.8  0.3  0.3  0.7  [...]
4   0.6  0.2  1.0  0.5  0.5  [...]
5   0.9  0.0  0.0  0.8  0.3  [...]
6   0.5  0.6  0.3  0.4  1.0  [...]

[ ... ]

1998  0.5  0.0  0.2  0.9  0.0  [...]
1999  0.8  0.2  0.2  0.7  0.2  [...]
2000  0.7  0.2  0.8  0.4  0.5  [...]
第一列是流动时间,在该流动时间,需要将该特定输入集分配给软件中的变量;其他96列表示需要设置的96个变量


我目前掌握的方案代码如下:

;Set variables
(define (setFunc)
    (lambda(row-position outflow-number flow-wt-1)
        (let outflow-string ((string-append("def bc outflow " outflow-number " ~a"))) 
            (if (< row-position 180)
                (ti-menu-load-string (format #f (outflow-string) flow-wt-1))
                (ti-menu-load-string (format #f (outflow-string) 0.0))
            )
        )
    )
)

;Read a file to a list of chars
(define (file->char_list)
    (call-with-input-file "doorstates.txt"
        (lambda(input-port)
            (let loop ((x (read-char input-port)))
                (if (not (eof-object? x))
                    (#t (begin (cons x (loop (read-char input-port)))))
                )
            )
        )
    )
)

;Main
(begin
    (let inFile ((apply string (file->char_list)))
        (let inFileList ((string-split (inFile #\newline)))
            (let index ((0))
                ; Row position = flow-time - 1
                (define rowPosition ((- flow-time 1)))
                (let loop ((index))
                    (cond ((>= index (length inFileList)) 
                            '()
                        )
                        ((= (- index (* (/ index 97) 97)) 0)
                            (+ index 1)
                            (loop (index))
                        )
                        ((= (/ index 97) rowPosition)
                            ; Column position = index - (rowPosition * rowLength)
                            (define colPosition ((- index (* rowPosition 97))))
                            (setFunc (rowPosition colPosition list-ref inFileList index))
                            (+ index 1)
                            (loop (index))
                        )
                        (else
                            (+ index 1)
                            (loop (index))
                        )
                    )
                )
            )
        )
    )
)
我读过的所有资料都说,未绑定变量最有可能的原因是在非函数(如文字)的参数周围加了额外的括号;但我所看到的每件事都有双括号围绕let参数


重点
我从来没有与方案或任何其他LISP的变化之前,被放在这个项目,所以如果有任何错误或常见的做法,我错过了,请让我知道。此外,如果上述方案代码是完全垃圾,没有做我需要它做的,请让我知道,并建议下一步

您误解了错误消息。您的
begin
缺少右括号。因此,在以
(begin…
)开头的“列表”中会遇到文件结尾。此外,您正在错误地使用
let
。您需要将使用变量的代码括起来,例如:

(let ((a 1))
  (+ a 7))

我建议使用能够理解s表达式的编辑器。

您误解了错误消息。您的
开始
缺少右括号。因此,文件结尾出现在以
开始的“列表”中(开始…
。此外,您正在错误地使用
let
。您需要将使用变量的代码括起来,例如:

(let ((a 1))
  (+ a 7))

我建议使用能够理解s表达式的编辑器。

谢谢Michael!我遇到了另一个错误。请查看上面的编辑,如果您有时间,请进行权衡!您仍然在错误地使用
let
。特别是,
(让我们填充((apply string…
试图定义一个命名循环,在此过程中重新定义了
apply
。谢谢Michael!我遇到了另一个错误。请查看上面的编辑,如果有时间请过问!您仍在错误地使用
let
。特别是,
(let infle((应用字符串…
是一种尝试定义命名循环的方法,在过程中重新定义
apply