我正在尝试编写AVL (Athena Vortex Lattice)中的一系列曲目,这是一个用于设计机翼和其他升力曲面的涡旋格子代码。
我将二进制文件存储在〜/ bin /中。通常,您在终端中运行AVL,然后输入命令。典型的命令是:
其中,加载.avl输入文件,进入操作菜单,将攻角设置为5度,执行计算,将力打印到输出文件,退出操作菜单,退出程序。 / p>
我正在尝试使用以下代码使用子进程模块从python脚本运行AVL:
import subprocess as sp
avl = sp.Popen(['~/bin/avl3.35'],
stdin=sp.PIPE,stdout=None,
stderr=None,
universal_newlines=True)
avl.communicate('LOAD ~/file/avlexamplefile.avl')
这几乎可行。 AVL加载,第一个命令被执行,但后来我得到以下错误,并且不会接受任何进一步的命令。
AVL c> forrtl: severe (24): end-of-file during read, unit -4, file stdin
Image PC Routine Line Source
avl3.35 000000010A00F43B Unknown Unknown Unknown
avl3.35 000000010A00DBFE Unknown Unknown Unknown
avl3.35 0000000109FD5177 Unknown Unknown Unknown
avl3.35 0000000109F8B426 Unknown Unknown Unknown
avl3.35 0000000109F8AA39 Unknown Unknown Unknown
avl3.35 0000000109FB61F3 Unknown Unknown Unknown
avl3.35 0000000109EEECF3 Unknown Unknown Unknown
avl3.35 0000000109E7130F Unknown Unknown Unknown
avl3.35 0000000109E6FC7C Unknown Unknown Unknown
libdyld.dylib 00007FFF8B1D95AD Unknown Unknown Unknown
有谁可以指出我做错了什么?最后,我想将上面的内容置于for循环中以运行多个变体。
答案 0 :(得分:0)
尝试使用avl.stdin.write("your cmd here" +'\n')
。
使用xfoil的工作示例在这里(不是我的):
https://github.com/Launchpad-McQ/Aileron-design/blob/master/design-aileron.py