跳转到主要内容

使用omniORB和omniORBpy的部分文件作为ANSYS MAPDL接口

项目描述

此Python模块提供了连接到ANSYS APDL服务器所需的最小支持。虽然它设计为作为pyansys的支持模块,但也可以单独使用,向APDL实例发送文本命令,但没有任何语法检查或错误处理功能。简而言之,如果您在这里,除非您真的需要从Python驱动ANSYS APDL的快速而简单的解决方案,否则请安装pyansys

此模块依赖于ANSYS APDL提供的文档,并使用来自omniORB的源文件编译的库。有关Linux构建说明,请参阅GitHub上的shell文件存储库。为Windows构建是一场噩梦。

安装

对于Linux和Windows,Python 2.7、3.5和3.6,都有预编译的二进制文件可用。如果您需要其他版本,请提交问题。Python 3.7不可用,因为源代码无法编译。等待4.2.3或更高版本发布。请联系维护者omniORB

安装很简单

pip install ansys_corba

用法

再次提醒,您真的应该使用 pyansys。它负责确定 mapdl_broadcasts.txt 文件的位置以及何时与服务器建立连接。如果您想尝试冒险,以下是打开 ANSYS、连接到 CORBA 服务器并发送几个命令的方法:

import sys
import time
import os
from ansys_corba import CORBA
import subprocess

# edit this to match your ansys exe
ansys_loc = 'C:\\Program Files\\ANSYS Inc\\v170\\ansys\\bin\winx64\\ANSYS170.exe'

# ansys apdl logging here:
logfile = 'mapdl_broadcasts.txt'
if os.path.isfile(logfile):
    os.remove(logfile)

# make temporary input file to stop ansys from prompting the user
with open('tmp.inp', 'w') as f:
    f.write('FINISH')

# start ANSYS
command = '"%s" -aas -i tmp.inp -o out.txt -b' % ansys_loc
subprocess.Popen(command, stdout=subprocess.PIPE)

# monitor log file and wait for connection
print('Starting ANSYS...')
while True:
    try:
        if os.path.isfile(logfile):
            with open(logfile, 'r') as f:
                text = f.read()
                if 'visited:collaborativecosolverunitior' in text:
                    print('ANSYS started')
                    break
                time.sleep(0.1)
    except KeyboardInterrupt:
        sys.exit()

with open('./aaS_MapdlId.txt') as f:
    key = f.read()

# create server
orb = CORBA.ORB_init()
mapdl = orb.string_to_object(key)

# run simple commands to demonstrate this works
mapdl.executeCommand('/prep7')
out = mapdl.executeCommandToString('cylind, 2, , , 2, 0, 90')
print(out.replace('\\n', '\n'))
mapdl.executeCommand('FINISH')
mapdl.terminate()  # could use exit, but it returns an error

这里可能会出现几个问题,例如,ANSYS 的路径或查找 mapdl_broadcasts.txt 文件。如果这个 Python 脚本没有在 ANSYS 相同的目录中运行,它将挂起,直到您终止进程或使用键盘中断退出。

更多文档

一旦您已打开到 ANSYS 的连接,实际上只需要使用三个命令。以下文档无耻地取自 sharcnet

  • executeCommand:

    向连接的 Mechanical APDL 会话发出命令。命令的输出不会返回。

  • executeCommandToString

    向连接的 Mechanical APDL 会话发出命令,并以字符串的形式返回输出。

  • terminate

    终止连接的 Mechanical APDL 服务器会话。

有关更多详细信息,请参阅 sharcnet 文档。

注意事项

由于需要在外部编译共享库,因此无法使用 PyPi 进行源代码安装。我已经包含了 docker_buildlinux.shdocker.sh,这些文件可以用于构建 Linux 的源代码。对于 Windows 的构建更为复杂,需要遵循 omniorb 源代码中的说明,并进行一些尝试和错误。

许可证和致谢

此代码根据 MIT 许可证授权。

此模块 ansys_corba 对 ANSYS 不做任何商业声明。该工具通过添加 Python 接口扩展了 ANSYS 的功能,包括文件接口和交互式脚本,而不会更改原始软件的核心行为或许可证。使用 ansys_corba 的交互式 APDL 控制需要合法许可的本地 ANSYS 复制。

此外,如果没有 omniORB,此模块将无法实现,因为大部分源代码直接来自 omniORBpy,仅在文件结构和添加特定于 ANSYS 的文档方面进行了少量修改。

项目详细信息


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源分发

此版本没有可用的源分发文件。有关如何生成分发存档的教程,请参阅 生成分发存档

构建分发

ansys_corba-0.1.1-cp38-none-win_amd64.whl (1.1 MB 查看哈希值)

上传时间 CPython 3.8 Windows x86-64

ansys_corba-0.1.1-cp38-cp38-manylinux2010_x86_64.whl (5.9 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.12+ x86-64

ansys_corba-0.1.1-cp37-cp37m-manylinux2010_x86_64.whl (5.7 MB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.12+ x86-64

ansys_corba-0.1.1-cp36-cp36m-manylinux2010_x86_64.whl (5.6 MB 查看哈希值)

上传于 CPython 3.6m manylinux: glibc 2.12+ x86-64

ansys_corba-0.1.1-cp35-cp35m-manylinux2010_x86_64.whl (5.6 MB 查看哈希值)

上传于 CPython 3.5m manylinux: glibc 2.12+ x86-64

ansys_corba-0.1.1-cp27-cp27mu-manylinux2010_x86_64.whl (5.5 MB 查看哈希值)

上传于 CPython 2.7mu manylinux: glibc 2.12+ x86-64

ansys_corba-0.1.1-cp27-cp27m-manylinux2010_x86_64.whl (5.5 MB 查看哈希值)

上传于 CPython 2.7m manylinux: glibc 2.12+ x86-64

支持者