abaqus的Fortran子程序中使用自由格式

    在上一篇文章Fortran语言的自由格式与固定格式中,曾经讨论过AbaqusFortran子程序在默认状态下只能使用固定格式,而实际上自由格式更为灵活好用,其一行不受72个字符的限制,并且可以将多个语句写在同一行,同时续行符相对于固定格式也更为好用。本文主要描述下如何实现在abaqus中采用Fortran自由格式编程。

    以帮助文档中的经典塑性UMAT子程序为例:

   (1)打开Abaqus documentation,点击Abaqus Verification Guide,并进入UMAT AND UHYPER下的input files

abaqus的Fortran子程序中使用自由格式的图1


abaqus的Fortran子程序中使用自由格式的图2

abaqus的Fortran子程序中使用自由格式的图3

    (2)下载inp文件及f子程序,用文本编辑器打开umatmst3.f,可以看出其采用的是固定格式编写;

abaqus的Fortran子程序中使用自由格式的图4

  (3)修改abaqus的运行环境,加入支持自由格式的设置:找到abaqus环境的配置文件,对于abaqus2020abaqus2021版本,该文件为以下路径的win86_64.env文件:

abaqus的Fortran子程序中使用自由格式的图5

  对于比较早的abaqus版本如abaqus6.14,该文件可能叫abaqus_v6.env。总之通过搜索等方式找到该文件并打开即可。

  (4).env文件中加入使用自由格式的命令:

abaqus的Fortran子程序中使用自由格式的图6



(5)将子程序修改为自由格式,需要修改的内容主要包括 续航符,注释等。事实上,国内知名的Fortran程序论坛FCODE论坛提供了一个将固定格式转化为自由格式的工具“鹅毛笔”,路径如下:http://quill.fcode.cn/

 打开umatmst3.f,复制全部代码粘贴到鹅毛笔的页面,选中“固定格式( .for .f )转自由格式”,再点击“开始转换”,则自动生成了自由格式的代码,将代码复制到umatmst3.f替换原固定格式的代码(不需要修改文件名和文件名后缀),同时手动将代码中的Invlude替换成include(此处是转化工具鹅毛笔的一个bug,因此需要手动修改)。

abaqus的Fortran子程序中使用自由格式的图7

转换前的代码



abaqus的Fortran子程序中使用自由格式的图8

转换后的代码


abaqus的Fortran子程序中使用自由格式的图9

abaqus的Fortran子程序中使用自由格式的图10


(6)打开abaqus cae,使用file-import-model导入umatmst3.inp文件,创建job,选择子程序并且提交。

abaqus的Fortran子程序中使用自由格式的图11

abaqus的Fortran子程序中使用自由格式的图12


或者采用abaqus command命令提交:


abaqus的Fortran子程序中使用自由格式的图13


注:修改.env支持自由格式后,则按照固定格式编写的子程序则不能正确使用,如果提交会报语法错误,此时可将代码的固定格式用“鹅毛笔”转自由格式再提交或者重新打开.env文件将“,/FREE,”命令删除使其重新支持固定格式。总之,固定格式和自由格式只能二选一。

【完】



欢迎关注公众号  有限元术

abaqus的Fortran子程序中使用自由格式的图14

(15条)
默认 最新
有用,特别是自由格式和固定格式之间的转换,我感觉不用修改env文件似乎也能运行abaqus,只是行长度限制了
评论 2 点赞 1
回复
请问咋实现
评论 点赞
回复
实际上是编译器运行子程序。不只是列数问题,还有续行,注释等。
评论 点赞
这这方法过时了,还有跟简单的方法,不用修改环境文件
评论 2 点赞
回复
哇,你好厉害哦!居然还有更简单的方法,高手哦!!!
评论 1 点赞
回复
请看我最新发布的帖子,然后留言
评论 点赞

查看更多评论 >

点赞 22 评论 18 收藏 24
关注