Python语言提供了一个能够将Fortran程序包装成可供Python程序直接调用的扩展模块的工具库f2py库。但是在本设计中界面程序并不需要把计算程序当作一个模块来调用,而是只要能够控制执行Fortran计算程序即可,同时考虑到Fortran程序在运行之前必须先编译成二进制文件,因此本设计中程序接口的基本设计思路是使用Python语言标准工具库os库的system方法直接调用已经编译好的二进制文件。
首先考虑如何把在界面上输入的数据输入到Meangen程序中,由于Meangen程序提供了一个通过文件读取设计参数的方法,所以在本设计的界面上增加了一个“确定设计参数”按钮,点击该按钮设计参数会按照Meangen程序中对数据的读取顺序写入一个文件中,在输出文件中写数据的功能由inputFile函数实现,然后再把Meangen模块修改为直接以文件方式输入数据,这样就把界面输入的数据通过文件与计算程序连接起来了,然后再将已经编译成二进制文件的三个Multall系统的计算程序放到指定文件夹内,最后在界面上增加三个按钮并利用os工具库的system方法实现按下这些按钮就会调用相应的计算模块。
此外,设计过程中还发现Multall模块只能计算涡轮级数在8级以内的涡轮机,在核查了Multall模块的头文件commall-open-17.1之后对参数的限制进行了修改,但是在将修改后的程序进行编译时终端提示“段错误”。“段错误”是由于程序对计算机内存的非法访问而引起的,最常见的一种“段错误”是计算机内存不足,此处正是由于运行环境下计算机的内存不足而引起的。使用VMware Workstation软件创建一个Linux虚拟机并对该虚拟机的内存进行逐步调节以后,得出头文件commall中的数据扩大倍数和需求的计算机内存之间的关系大致如表7-16所示。(www.daowen.com)
表7-16 Multall程序计算限制与计算机内存的关系
按照表7-16的放大倍数分别编译三个不同版本的Multall计算模块的二进制文件,然后在界面程序中根据输入的涡轮级数判断自动选择使用哪一个版本的程序来进行计算。同时再利用Python语言的psutil工具库的virtual_memory.total方法获取当前运行环境下的计算机的实际内存,通过Tkinter库的tk MessageBox部件将本机内存信息和预计执行计算程序所需内存的信息显示在弹出的窗口上面,并告知用户若计算机内存小于计算所需内存则可能会出现“段错误”。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。