如何在没有fortran的机器上运行子程序

(此贴只针对abaqus用户)

对于需要使用子程序进行分析计算的用户来说,配置子程序环境较为繁琐,并且有时要在一台没有fortran运行环境的机器上运行子程序(例如云计算等等),这时要怎么做?

abaqus官方为我们提供了make的方法:

abaqus make library=usd.for/.f90/.cpp/...

该方法将会把子程序进行预编译并生成相应的共享库(share library)文件。

.obj文件就是我们子程序经过预编译得到的二进制文件。

.dll文件就是相应的共享库文件,其中包含了我们所用子程序中所用的全部执行信息(像算法信息,+,-,*,/之类的)

2025.10.3添加:.obj文件可以在已关联的设备Job页面子程序位置上直接提供,.dll文件中包含已经编写过的子程序中全部内容,可以使用环境变量进行索引在没关联的设备上运行,不用在提供obj文件,两个文件是独立的。

若是Standard模块,则会生成standardU.dll;若是Explicit模块,则会生成ExplicitU.dll和ExplicitU-D.dll(加D的是双精度,没的是单精度)

如果想要在没有Fortran的计算机上运行子程序,需要分两部分进行,接下来将详细说明:

First(该部分需要在已经配置好fortran运行环境的计算机中完成):

首先准备好要使用的子程序,建议将其直接放置在abaqus的工作目录(一般情况下abaqus command和abaqus CAE的工作目录相同)下,也可以将其放置在任意一个文件夹中,后期可以通过cd索引。

这里就按放在工作目录下来说明。

将子程序放在工作目录后,打开abaqus command,并输入abaqus make library=usd.for/.f90/.cpp/...(这里的usd要替换为自己的子程序的文件名,并加上扩展名)

稍等后生成.obj以及.dll文件(std2个,ex共4个)

至此,这部分完成。

Second(该部分在目标并没配置fortran运行环境的计算机中完成):

将上述生成的库文件(.dll结尾的文件)存储到任意目录(文件夹中)。

找到abaqus环境变量设置文件abaqus_v6.env, 末尾增加如下语句(要用英文字符)

usub_lib_dir="_:\\_\\..."

引号中的是储存共享库文件的路径。要将\改为\\。

2025.10.3添加:环境变量文件是以python语言为基础,上述的“要将\改为\\”非唯一,主要是防止出现转义字符,也可以改变斜杠的方向或在路径前加“r”等等,只要防止转义都行。

到此,基本配置结束。

然后就是建立模型并施加约束、划分网格之类的等等。

最后全部弄完之后,创建job,并指定目标文件(.obj文件),如图所示:2025.10.3修改

2025.10.3添加:在User subroutine file:处不要提供任何文件,其余正常运行就行。

如何在没有fortran的机器上运行子程序的图1

然后写出.inp文件,不可以直接提交运算,不然回报错2025.10.3修改:该处非必要,也可以通过命令行提交

通过abaqus命令行进行提交运算:

abaqus job=...

提交成功后只需要等待结果就行。

亲测成功有效(已经在自己的笔记本上实验过,没有问题,我的笔记本没有fortran)。


对于已经配置好fortran的用户来说,.dll文件(共享库文件)是不必要的,可以使用.obj文件直接提交运算,也不需要写出inp文件,再通过命令行运行这么麻烦。2025.10.3修改

登录后免费查看全文
立即登录
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP

5
2
12