我有一个用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编译器XE,版本15.0.0.090 Build 20140723.。
答案 0 :(得分:1)
输入
module add abaqus
module add intel
module add gcc
我然后被允许进入
abaqus make library=usub.f
将编译子程序。
答案 1 :(得分:0)
对于Windows平台:
首先,使用“abaqus make library”命令创建“.dll”文件。您可以在ABAQUS目录中找到它。
其次,通过添加以下行来编辑环境文件(例如“abaqus_v6”)
usub_dir_lib = “XXX”
其中xxx是“.dll”文件(此处为ABAQUS目录)的路径。
现在,您已准备好执行Python代码