我需要多次运行同一个abaqus.inp文件(在运行中略有变化),每次运行结束后,我需要提交一个abaqus python脚本来读取结果。
我已经做了以下工作:
#run the programme
os.system('abaqus job=file_name cpus=2')
#get results and write them to myresults.txt
os.system('abaqus viewer noGUI=python_name.py')
但是,主程序在第一行开始的程序结束之前执行第二行。结果我得到一个错误。我该怎么解决?
我想这里的问题不在于子进程等待(实际上它在等待),而是在运行解算器之后,Abaqus需要几秒钟来删除一些临时文件并关闭它的odb。我建议你做以下选择之一:
使用@glenn_gould建议的“交互式”从命令行运行解算器
运行abaqus python脚本
在ScriptToRun.py中使用waitForCompletion()作为@ellumini建议的
当存在jobname.023或jobname.lck文件时,使用try语句运行,如下所示:
这是我在这个宏伟社区的第一个职位,我很高兴知道我是否做错了什么。
看看subprocess模块。
call
方法等待进程完成。您还可以比使用os.system()
更好地控制子进程。我认为您需要系统('abaqus job=inputfile.inp interactive')
在abaqus完成运行之前,interactive不会认为系统命令已完成。
当系统命令结束时,没有交互的abaqus在后台运行,我们已经转移到下一个,这是我们不想要的。
相关问题 更多 >
编程相关推荐