首页 > 解决方案 > 如何在另一个工作结束后运行 abaqus 工作?

问题描述

我编写了一个在 abaqus 中创建多个模型的脚本,然后运行使用简单的 python 循环创建的作业,但是在运行脚本时,程序会同时运行所有作业,并且计算机内存不足,因此它会中止作业. 我想知道如何创建一个脚本,在第一个作业结束后提交下一个作业。

标签: pythonabaqus

解决方案


这取决于您如何调用 Abaqus。如果您直接创建 Abaqus 进程,则可以将-interactive参数添加到命令中,这样它就不会在后台进程中运行求解器并立即返回。例如:

abq2018 -j my_job_name -interactive

另一方面,如果您使用 Abaqus API 和Job对象来创建和运行作业,您可以使用该waitForCompletion方法等待 aJob完成。以下是 Abaqus 文档的摘录:

等待完成()

此方法会中断脚本的执行,直到分析结束。如果调用 waitForCompletion 方法并且状态成员既不是 SUBMITTED 也不是 RUNNING,Abaqus 假定分析已经完成或中止并立即返回。

下面是一个关于如何创建Job对象和使用该waitForCompletion方法的简短示例:

from abaqus import *

# Create a Job from a Model definition
j1 = mdb.Job(name='my_job_name', model=mdb.models['my_model_name'])

# or create a Job from an existing input file
j2 = mdb.JobFromInputFile(name='my_job_name', inputFileName='my_job_name.inp')

# Submit the first job - this returns immediately
j1.submit()

# Now wait for the first job - this will block until the job completes
j1.waitForCompletion()

# Same process for the second Job
j2.submit()
j2.waitForCompletion()

推荐阅读