从python用abaqus运行abaqus inp文件

6mzjoqzu  于 2023-05-02  发布在  Python
关注(0)|答案(4)|浏览(228)

我试图运行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))
j2datikz

j2datikz1#

通过将capture_output关键字参数设置为True,可以通过子进程模块的run函数捕获子进程的stdout和strrr。这个应该能用

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
ttvkxqim

ttvkxqim2#

您在错误的目录中,并且没有正确指定作业。正确的命令行语法开始解决c:\temp\whatever。inp文件是:

cd \temp
abaqus job=whatever
63lcw9qa

63lcw9qa3#

我想这个方法可以帮助你:
首先,准备好你的。inp文件(初始模拟:mySim.inp)
第二,在一个python脚本(我们称之为 www.example.com )write:

from subprocess import check_output
check_output("abaqus job=mySim.inp double cpus=4 interactive", shell=True)

您可以根据您的计算机更改cpu
第三,再加上这一行:

check_output("abaqus cae noGUI=odb_reader.py", shell=True)

第四,在odb_reader中。py,你应该写一个函数来读取odb文件并将结果保存为csv文件。如果你想做一个优化,你可以在RunSim,py文件中打开这个csv文件,并提取你想要的值作为目标函数。
所以如果你想迭代地运行 www.example.com 。您可以使用以下命令:

os.remove("mySim.sim")

...

u0njafvf

u0njafvf4#

下面的工作对我来说:

import subprocess
import os

job_name = "Job-Name" # set job name without file extension (i.e. do not include .inp)
num_cpus = "4" # specify number of cpus
ask_delete = "OFF" # if u want it to delete old job files specify "ON"

new_dir = r"-path-to-folder-containing-job-file"
os.chdir(new_dir)

subprocess.run(["abaqus", "job=" + job_name, "cpus=" + num_cpus, "int", "ask_delete=" + ask_delete],shell=True)

希望能帮上忙

相关问题