Abaqus批量提交计算

添加环境变量

确保系统变量Path下含有SIMULIA\Commands路径。

编写bat文件

XX.bat文件下编写

cd filepath

call abaqus job='jobname' input=''inputname user='subroutine' cpus=n int ask=off

Abaqus内置python实现批量计算

from abaqusConstants import*
import job

# 使用job-1.inp文件提交job-1的计算任务,numCpus=2设置cpus数,numDomains=2设置线程数
mdb.JobFromInputFile(name='job-1',inputFileName='job-1.inp',numCpus=2,numDomains=2)
# 提交计算任务
mdb.jobs['job-1'].submit()
# 中断python文件的执行,等待计算任务的完成。
# 在这里waitForCompletion相当于dos批处理下的参数interactive
mdb.jobs['job-1'].waitForCompletion()
mdb.JobFromInputFile(name='job-2',inputFileName='job-2.inp',numCpus=2,numDomains=2)
mdb.jobs['job-2'].submit()
mdb.jobs['job-2'].waitForCompletion()

# 导入其他模块
import os,time,sys
# 实现自动关机
o="c:\windows\system32\shutdown -s -f -t 60"
os.system(o)

python subprocess模块并行提交计算

import subprocess
import time
import os

task_list=[]
for volfrac in [0.1,0.2,0.3,0.4,0.5,0.6]:
    for R in [4,5,6]:
        for num in range(1,11):
            for bc in ["Tension_x","Tension_y","Shear"]:
                task_list.append([volfrac,R,num,bc])

i=0
for volfrac,R,num,bc in task_list:
    file_name="{}_{}_{}_{}.inp".format(volfrac,R,num,bc)
    job_name="Job-{}_{}_{}_{}".format(int(volfrac*100),R,num,bc)
    subprocess.Popen('abaqus job={} input={} cpus=2 int ask_delete=OFF'.format(job_name,file_name),shell=True)
    print("{} submitted.".format(job_name))
    i=i+1

    if i==10:
        i=0
        print("Waiting...")
        time.sleep(180)
print("Finished")