在 Abaqus 中 运行 个连续作业时仅编译用户子程序一次
Compile user subroutine only once when running consecutive jobs in Abaqus
我有一个用 Python 编写的脚本,它根据上一个作业的输出校准 material 参数,也就是说,它 运行 在 Abaqus 中连续执行许多作业,直到误差够小了。
我使用在每个作业之前编译的 Fortran 子例程。
问题是对于我提交的每个作业,用户子例程都会编译。即使输入参数与上次作业不同,用户子程序也不必重新编译。子例程的编译大约占用了 运行 作业时间的 80%。
如何指定只编译一次用户子程序并在所有连续的运行s中使用它?
以下是在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 代码
我有一个用 Python 编写的脚本,它根据上一个作业的输出校准 material 参数,也就是说,它 运行 在 Abaqus 中连续执行许多作业,直到误差够小了。
我使用在每个作业之前编译的 Fortran 子例程。
问题是对于我提交的每个作业,用户子例程都会编译。即使输入参数与上次作业不同,用户子程序也不必重新编译。子例程的编译大约占用了 运行 作业时间的 80%。
如何指定只编译一次用户子程序并在所有连续的运行s中使用它?
以下是在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 代码