如何在没有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:处不要提供任何文件,其余正常运行就行。
然后写出.inp文件,不可以直接提交运算,不然回报错。2025.10.3修改:该处非必要,也可以通过命令行提交
通过abaqus命令行进行提交运算:
abaqus job=...
提交成功后只需要等待结果就行。
亲测成功有效(已经在自己的笔记本上实验过,没有问题,我的笔记本没有fortran)。
对于已经配置好fortran的用户来说,.dll文件(共享库文件)是不必要的,可以使用.obj文件直接提交运算,也不需要写出inp文件,再通过命令行运行这么麻烦。2025.10.3修改
工程师必备
- 项目客服
- 培训客服
- 平台客服
TOP





![[免费案例]Ensight案例教程分享](https://img.jishulink.com/cimage/245b3ca9e2c939e40491a25edae94515.jpeg?image_process=resize,fw_576,fh_320,)














