在命令行窗口中运行ABAQUS

 

在关联了Fortran编译器的环境中 提交作业:abaqus job=<jobname> 提交带子程序的作业:abaqus job=<jobname> user=<subroutine filename> cpus=Njob后面输入inp文件名,一般省略inp文件后缀。user后面是用户子程序。常用的ABAQUS子程序源文件使用Fortran语言编写,...

在关联了Fortran编译器的环境中

  • 提交作业:
abaqus job=<jobname>
  • 提交带子程序的作业:
abaqus job=<jobname> user=<subroutine filename> cpus=N

job后面输入inp文件名,一般省略inp文件后缀。user后面是用户子程序。常用的ABAQUS子程序源文件使用Fortran语言编写,在使用中实时编译链接成目标文件参与计算。在Windows环境下,源文件必须以.for结尾;在Linux环境下,必须使用.f后缀。cpus=N,N必须是整数,表示分析使用的处理器核数。

登陆后输入cat /proc/cpuinfo即可查询服务器的核数,注意内核的编号是从零开始,因此第N个核的编号是N+1。另外,输入top命令可以查询机器运行状态,Tasks中running前面的那个数字就是机器的已用内核数,总核数减去已用内核数既是剩余内核数。

要监视分析作业的进度,您可以查看.sta文件。但这不会随着进度的进行而更新状态文件。要动态显示进度,可以使用tail命令:

tail -f <jobname>.sta

如果需要终止正在运行的作业,则可以使用top命令结束相关进程或使用killall <process name>结束该进程。进程名称可以从top命令中找到。

参考:

详见帮助文档1

Troubleshooting - could not write file: check the disk space on your system

在计算较大的作业时,可能会出现临时文件过大而超过临时文件的默认存储空间。可以在提交作业时通过scratch选项来指定用于存储临时文件的目录名称。

在Linux平台,该选项的默认值为$TMPDIR环境变量的值,如果未定义$TMPDIR,则为/tmp

在Windows平台,该选项的默认值为%TMP%环境变量的值,如果未定义%TMP%,则为\TEMP

在分析过程中,将在该目录下创建一个子目录来保存分析暂存文件。 可以在环境文件中设置此参数的默认值(请参阅环境文件设置)。

在未关联编译器的环境中

如果子程序已开发完成,需要进行分发使用。为了使子程序能够在没有关联编译环境的计算机上执行,或者不希望用户关注到源代码,可以使用ABAQUS自带的MAKE工具将.for源文件封装成目标文件和动态库文件。

在关联了Fortran编译器的环境下执行:

abaqus make library=subroutine.for object_type=fortran

详见帮助文档2

将生成两个文件,目标文件和动态库文件。目标文件以.obj(Windows系统下)或.o(Linux系统下)结尾,动态库文件以.dll(Windows系统下)或.so(Linux系统下)结尾。Abaqus/Standard的目标文件后缀为-std, Abaqus/Explicit的单精度目标文件后缀为-xpl;双精度目标文件后缀为-xplD。生成的Abaqus/Standard动态库文件名为standardU,Abaqus/Explicit动态库文件名为explicitUexplicitU-D

我们这里可以使用生成的目标文件subroutine-std.obj来提交计算,但仍然需要链接编译器环境。

abaqus job=input.inp user=subroutine-std.obj cpus=n

为了摆脱编译器环境,可将目标文件和动态库文件放置在工作目录下,并在abaqus_v6.env文件中添加以下两行来将usub_lib_dir设置为当前工作目录,或将usub_lib_dir直接定义动态库文件所在的文件目录。abaqus_v6.env文件既可以放在工作目录,也可以放在主目录中。

import os
usub_lib_dir=os.getcwd()

最后在不使用user选项的情况下运行作业。求解器将自动从动态库文件中将其加入运算:

abaqus job=input.inp cpus=n

运行Python脚本

脚本包含以纯ASCII格式存储的一系列Python语句。如果需要打开Abaqus/CAE并在其中运行脚本,可以直接在命令行输入:

abaqus cae script=myscript.py

其中的myscript.py表示脚本的文件名。对于在Abaqus/Viewer中运行的脚本,同样有:

abaqus viewer script=myscript.py

可以通过在命令行中输入--并以一个或多个空格分隔的参数来将参数传递到脚本中。这些参数可以在脚本中被访问,但将被Abaqus/CAE在执行时忽略。

如果要在没有图形用户界面(GUI)的情况下运行Abaqus/CAE脚本,可以直接在命令行输入:

abaqus cae noGUI=myscript.py

Abaqus/CAE将在文件中运行命令,并在命令完成后退出。如果没有给出文件扩展名,则默认扩展名是.py。该选项对于自动化分析前或分析后的处理任务很有用,而无需增加运行显示器的费用。由于未提供任何界面,因此脚本不能包含任何用户交互。如果使用noGUI选项,则Abaqus/CAE将忽略提供的任何其他命令行选项。

同样的,对于在没有图形用户界面(GUI)的Abaqus/Viewer中运行的脚本有:

abaqus viewer noGUI=myscript.py

如果已经打开了Abaqus/CAE的图形界面,除了可以通过菜单栏中选择File > Run Script来运行脚本,还可以在界面下方的Python命令行界面(CLI)采用Python内置函数execfile运行脚本:

execfile('myscript.py')

需要注意的是,Abaqus仅支持Python 2版本,在最近的Python 3中,execfile(fn)函数已被移除,取而代之的是exec(open(fn).read())

详见帮助文档3

在Python脚本中,对于Job对象,可以采用方法submit(...)来提交一个分析作业;采用方法kill()来停止一个分析作业;采用方法waitForCompletion()来中断脚本的执行,直到分析结束。

详见帮助文档4

参考:


延伸阅读

  1. “Abaqus/Standard and Abaqus/Explicit execution” - MIT”, Section 3.2.2 in Abaqus Analysis User’s Guide 

  2. “Making user-defined executables and subroutines” - MIT, Section 3.2.18 in Abaqus Analysis User’s Guide 

  3. “How does the Abaqus Scripting Interface interact with Abaqus/CAE?” - MIT, Section 2.2 in Abaqus Scripting User’s Guide 

  4. “Job object” - MIT in Abaqus Scripting Reference Guide