首页/文章/ 详情

使用Abaqus make编译子程序

11月前浏览8195


简单介绍一个命令:Abaqus make


作者 | 毕小喵

几种可能的场景:

1)你自己编写的Abaqus子程序,例如UMAT,想要交给其他人使用,但不希望泄露源代码;


2)你需要使用如Isight一类的软件,修改参数多次运行分析,不想每次分析之前都重复执行编译步骤。


3)你需要在另一台没有安装Visual Studio和Fortran等编译器的电脑上,调用子程序来运行Abaqus分析。


在这些情况下,你可以在配置好Abaqus - Fortran编译器的电脑上使用abaqus make命令来编译子程序。


abaqus make命令


打开cmd命令提示符,切换到包含.for源文件的目录下。


比如当前你在 C:\Windows\system32,其实你直接输入 D: 即可切换到D盘。标准的命令是 


cd /d D:

一路cd,进入你准备好的文件夹。比如你的子程序文件叫 user.for,那么编译命令默认应该为:


abaqus make library=source-file.for

完整的语法是这样。

在帮助文档页里有详细介绍:


Abaqus > Execution > Execution Procedures > Making User-Defined Executables and Subroutines



https://help.3ds.com/2023/english/dssimulia_established/SIMACAEEXCRefMap/simaexc-c-makeproc.htm

如上图所示,还可以指定directory,为编译好的文件存放的目录。


编译完成后,会生成一个user-std.obj(对于Explicit求解器,后缀为-xpl和-xplD),以及一个standardU.dll 或 explicitU / explicitU-D.dll文件。


这个.obj文件,可以在安装了Fortran编译器的电脑上,在Abaqus运行时指定为用户子程序,代替.for文件。

而另外一个.dll文件,就可以在完全没安装Fortran的电脑上运行了。

 

配置方法


想要在没有安装Fortran的电脑上调用.dll形式的子程序,还需要做一些配置。

以2020版本为例,在以下目录里找到Abaqus的环境文件:


X:\SIMULIA\EstProducts\2020\win_b64\SMA\site\custom_v6.env

这里是因为在abaqus_v6.env的注释里提示了,用户对这个环境文件做的修改最好写在custom_v6.env当中,所以我们听人劝吃饱饭,去改用户环境文件。

对于6.14这种比较早的版本,目录位置要更简化。比如就没有win_b64这一步,而且6.14的环境文件还没有被拆分,直奔abaqus.env去就行。


在这个env环境文件中,添加两行内容:



import osusub_lib_dir=os.getcwd()

当然你也可以为usub_lib_dir指定一个固定的目录,看你喜好。比如:


usub_lib_dir="D:\\compile\\custom"

注意这里要用双斜线。


这个os.getcwd()函数会将当前工作目录指定为用户子程序所在目录。后面运行计算的时候,只需要在当前目录下放入上一步你编译好的.dll文件,不需要指定用户子程序,不需要安装和关联Fortran,就可以调用你的用户子程序进行计算了。


问题


在小喵自己尝试的过程中,遇到了一个普遍问题。


事实上,在电脑A上面编译、链接成功的standardU.dll,经过配置以后,在电脑A自身上面,可以不带Fortran编译器的运行(即删除掉Fortran关联后仍然能正常运行),而切换到电脑B后,系统版本不同、软件\编译器版本不同,或者各种水土不服就可能出现报错。毫无营养的错误提示,工作目录下根本找不到message file.


所以,如果各位读者想实现前面说的第一个目标(不泄露源代码与他人分享Abaqus子程序),比较安全的方法是使用.obj文件,并让对方也安装和配置好对应于自己版本的Visual Studio与Fortran编译器。两台电脑的Abaqus和Fortran版本一般不必相同。


如果想不带Fortran编译器运行子程序,那一定要确保第二台电脑的系统、版本等一切条件和第一台 完全一致。这件事还是挺麻烦的,况且出错后找不到可用的错误提示信息。所以……

 


来源:CAE知识地图
SystemAbaqusIsightUM
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-12-13
最近编辑:11月前
毕小喵
博士 | 仿真工程师 CAE知识地图 作者
获赞 197粉丝 291文章 82课程 2
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈