我正在尝试运行abaqus inp文件,并使用来自python的abaqus处理它,并获得输出。它不起作用。怎么做呢?
import os
import subprocess
inp = 'C:/Users/sel/Desktop/My work/Python Abaqus/New folder (2)/Job-1.inp'
abaqus = r'C:/SIMULIA/Abaqus/Commands/abq6145.bat'
subprocess.Popen("%s %s" % (abaqus, inp))发布于 2020-03-25 11:38:21
通过将capture_output关键字参数设置为True,可以通过子流程模块的run函数捕获子流程的stdout和strerr。这应该是可行的。
inp = 'C:/Users/sel/Desktop/My work/Python Abaqus/New folder (2)/Job-1.inp'
abaqus = r'C:/SIMULIA/Abaqus/Commands/abq6145.bat'
cp = subprocess.run([abaqus, inp], capture_output=True)
cp.stdout发布于 2020-09-13 01:21:02
您在错误的目录中,并且没有正确指定作业。开始解算c:\temp\whatever.inp文件的正确命令行语法为:
cd \temp
abaqus job=whatever发布于 2021-04-21 04:35:58
我认为这种方式可能会对你有所帮助:
首先,准备您的.inp文件(初始模拟: mySim.inp)
其次,在python脚本(让我们称之为RunSim.py)中编写:
from subprocess import check_output
check_output("abaqus job=mySim.inp double cpus=4 interactive", shell=True)您可以根据您的计算机更改cpus。
第三,还要添加下面这一行:
check_output("abaqus cae noGUI=odb_reader.py", shell=True)第四,在odb_reader.py中,您应该编写一个函数来读取odb文件并将结果保存为csv文件。如果要进行优化,则可以在RunSim,py文件中打开此csv文件,并提取所需的值作为目标函数。
因此,如果您希望迭代运行RunSim.py文件,则可能还需要在每次迭代后删除临时文件。您可以使用以下命令:
os.remove("mySim.sim") ..。
https://stackoverflow.com/questions/60842466
复制相似问题