在Abaqus中运行连续作业时,仅编译一次用户子例程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Abaqus中运行连续作业时,仅编译一次用户子例程相关的知识,希望对你有一定的参考价值。

我有一个用Python编写的脚本,它根据上一个作业的输出校准材料参数,也就是说,它在Abaqus中连续运行许多作业,直到错误足够小。

我使用Fortran子例程,它在每个作业之前编译。

问题是,对于我提交的每个作业,用户子程序都会编译。即使输入参数与上一个作业不同,也不必再次编译用户子程序。子程序的编译大约占运行作业的80%。

如何指定仅编译用户子程序ONCE并将其用于所有连续运行?

以下是用Python编写的相关代码的片段。我通过输入来执行我的脚本

abaqus cae nogui=script.py

在一个终端。该代码使用Abaqus脚本界面。

创造一份工作:

mdb.Job(name=self.jobName, model='Model-1', description='', type=ANALYSIS, 
        atTime=None, waitMinutes=0, waitHours=0, queue=None, memory=90, 
        memoryUnits=PERCENTAGE, getMemoryFromAnalysis=True, 
        explicitPrecision=SINGLE, nodalOutputPrecision=SINGLE, echoPrint=OFF, 
        modelPrint=OFF, contactPrint=OFF, historyPrint=OFF,
        userSubroutine=self.userSubroutinePath, 
        scratch='', resultsFormat=ODB, multiprocessingMode=DEFAULT, numCpus=1, 
        numGPUs=0)

提交并等待完成工作:

mdb.jobs[self.jobName].submit(consistencyChecking=OFF)
mdb.jobs[self.jobName].waitForCompletion()

每次我使用上一次运行的数据运行连续作业时,都会运行此代码。

编译器是Intel 64 Fortran Compiler XE,版本15.0.0.090 Build 20140723。

答案

进入

module add abaqus
module add intel
module add gcc

然后我被允许进入

abaqus make library=usub.f

这将编译子程序。

另一答案

对于Windows平台:

首先,使用“abaqus make library”命令创建“.dll”文件。您可以在ABAQUS目录中找到它。

其次,通过添加以下行来编辑环境文件(例如“abaqus_v6”)

usub_dir_lib =“xxx”

其中xxx是“.dll”文件的路径(此处为ABAQUS目录)。

现在,您已准备好执行Python代码

以上是关于在Abaqus中运行连续作业时,仅编译一次用户子例程的主要内容,如果未能解决你的问题,请参考以下文章

链接 Abaqus/标准用户子程序的问题

在多节点环境中仅触发一次调度作业

我如何使用Sidekiq运行连续的后台作业?

如何使用 Sidekiq 运行连续的后台作业?

ABAQUS子程序编译

在 php 中运行仅在尚未运行时才运行的连续循环的最佳方法是啥?