首页/文章/ 详情

使用Abaqus make编译子程序

6月前浏览6041

简单介绍一个命令: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
                最近编辑:6月前
                毕小喵
                博士 | 博士研究生 CAE知识地图 作者
                获赞 193粉丝 257文章 77课程 1
                点赞
                收藏
                未登录
                还没有评论
                课程
                培训
                服务
                行家
                VIP会员 学习 福利任务 兑换礼品
                下载APP
                联系我们
                帮助与反馈