使用Python批量提交Abaqus任务——超简单!!!

软件: ABAQUS
全方位数据报表
许可分析

许可分析

免费体验
识别闲置、及时回收
许可优化

许可优化

免费体验
多维度智能分析
许可分析

许可分析

免费体验
减少成本、盘活许可
许可优化

许可优化

免费体验
引言

在大型工程项目中,Abaqus 是一种广泛采用的有限元分析软件,特别是在结构和材料行为分析中。在处理多项复杂计算任务时,高效地安排和管理计算资源配置尤为重要。本篇文章将介绍 ABAQUS 中解决方案流程和脚本自动化处理的优化策略,以便更有效地对多个 ABAQUS Input (.inp) 文件进行并行计算处理,并管理资源消耗。




任务管理与资源配置

在 ABAQUS 的执行过程中,通过使用 Python 脚本及 ABAQUS 脚本语言(.inp 文件)来实现任务自动化执行与资源高效利用是常见的应用场景。本文将具体介绍在不同文件组织结构(同目录下与不同目录下)下,执行 ABAQUS 任务的脚本编写技巧。

相同目录下的任务执行


在同目录结构下(例如:`D:\test`)进行的多个任务,执行脚本如下:


```python


导入 ABAQUS 内置模块


from abaqus import


from abaqusConstants import


Inp存放的文件夹路径


Inp_File = "D:\\test"


Inp文件名集


JobNameSet = ['Job1', 'Job2', 'Job3']


计算所需的CPU个数


CpuNumber = 4


设置工作路径为 Inp 文件夹路径


os.chdir(Inp_File)


循环遍历任务集合


for i in range(len(JobNameSet)):


JobName = JobNameSet[i]


生成任务,指定参数以及流程


mdb.JobFromInputFile(


name=JobName,


inputFileName=Inp_File+'\\'+JobName,


type=ANALYSIS,


atTime=None,


waitMinutes=0,


waitHours=0,


queue=None,


memory=90,


memoryUnits=PERCENTAGE,


getMemoryFromAnalysis=True,


explicitPrecision=SINGLE,


nodalOutputPrecision=SINGLE,


scratch='',


resultsFormat=ODB,


numThreadsPerMpiProcess=1,


multiprocessingMode=DEFAULT,


numCpus=CpuNumber,


numDomains=CpuNumber,


numGPUs=0


)


提交和等待任务完成


之后删除已运行的任务以释放资源

mdb.jobs[JobName].submit(consistencyChecking=OFF)

或使用 mdb.jobs[JobName].waitForCompletion() 进行等待,根据需要选择操作模式

del mdb.jobs[JobName]


```


不同目录的细致执行

在不同目录结构下展开的任务提交和管理脚本遵循类似的原则,要点在于明确文件路径和处理逻辑:

```python


根据实际情况修改的目录路径集

Inp_File_Set = ['D:\\test1', 'D:\\test2', 'D:\\test3']

Inp文件名集,与上类似地确认


JobNameSet = ['Job1', 'Job2', 'Job3']


同样地,CPU数量可以具体根据需求调整


双重循环遍历目标目录和任务名称


for i in range(len(Inp_File_Set)):


Inp_File = Inp_File_Set[i]


统一文件操作逻辑至工作目录中


os.chdir(Inp_File)


JobName = JobNameSet[i]


前线段相同的任务创建逻辑


mdb.JobFromInputFile(


name=JobName,


inputFileName=Inp_File+'\\'+JobName,


type=ANALYSIS,


atTime=None,


waitMinutes=0,


waitHours=0,


queue=None,


memory=90,


memoryUnits=PERCENTAGE,


getMemoryFromAnalysis=True,


explicitPrecision=SINGLE,


nodalOutputPrecision=SINGLE,


scratch='',


resultsFormat=ODB,


numThreadsPerMpiProcess=1,


multiprocessingMode=DEFAULT,


numCpus=CpuNumber,


numDomains=CpuNumber,


numGPUs=0


)


代码其余部分重复之前的步骤,不要再展示


```


技术深析与优化

index-foot-banner-pc index-foot-banner-phone

点击一下 免费体验万千客户信任的许可优化平台

与100+大型企业一起,将本增效

与100+大型企业一起,将本增效

申请免费体验 申请免费体验