python - 如何使用 abaqus python 脚本运行多个作业?
问题描述
我正在尝试使用 abaqus python 运行多个作业,其中为每个可用的 umat 子例程运行不同的模型,但在执行第一个作业后循环退出
import os
import shutil
import subprocess
current_Path = os.getcwd()
umat_Path = current_Path+'\\'+'UMATS'
umat_list = os.listdir(umat_Path)
print(umat_list)
model_Path = current_Path+'\\'+'Models'
model_list = os.listdir(model_Path)
print(model_list)
os.chdir(model_Path)
for umat in umat_list:
umat = umat_Path+'\\'+umat
for model in model_list:
model=os.path.splitext(model)[0]
odbname=umat+model
os.system('cmd /k "abaqus job=%s user=%s globalmodel=%s interactive"'%(model,umat,odbname))
解决方案
基本上,你必须使用waitForCompletion()
方法。
而且我认为,您不能使用“cmd”命令来提交作业。相反,使用输入文件从输入文件创建作业JobFromInputFile()
。submit()
然后使用方法提交作业。最后,您可以使用waitForCompletion()
等待提交的作业完成或中止。
找到代码片段:
import os
import shutil
import subprocess
import job # to access job related commands
current_Path = os.getcwd()
umat_Path = current_Path+'\\'+'UMATS'
umat_list = os.listdir(umat_Path)
model_Path = current_Path+'\\'+'Models'
model_list = os.listdir(model_Path)
os.chdir(model_Path)
for umat in umat_list:
umat = umat_Path+'\\'+umat
for model in model_list:
model=os.path.splitext(model)[0]
odbname=umat+model
myJob = mdb.JobFromInputFile(name=model,
inputFileName=odbname, type=ANALYSIS,
atTime=None, waitMinutes=0, waitHours=0, queue=None, memory=90,
memoryUnits=PERCENTAGE, getMemoryFromAnalysis=True,
explicitPrecision=SINGLE, nodalOutputPrecision=SINGLE, userSubroutine=umat,
scratch='', parallelizationMethodExplicit=DOMAIN, numDomains=1,
activateLoadBalancing=False, multiprocessingMode=DEFAULT, numCpus=1)
myJob.submit()
myJob.waitForCompletion()
推荐阅读
- git - 如何区分当前分支和基础,而不是输入父分支
- python - 如何使用 PyQtGraph 获得堆栈图?
- css - 有什么方法可以对齐 divi 联系表中的复选框?自定义 CSS 建议?
- python - discord py bot 触发两次 on_member_update 函数
- javascript - JavaScript - 对象属性作为函数结果,如 Array.length
- list - 我的列表 if,else 语句只返回“if”语句
- php - 引用 foreach 循环中的先前值
- python - 如何在 csv 文件的列中填充空值?
- c - 需要帮助 C 中的故障排除程序
- r - Jaccard 分析相似度