abaqus的Fortran子程序中使用自由格式
在上一篇文章Fortran语言的自由格式与固定格式中,曾经讨论过Abaqus的Fortran子程序在默认状态下只能使用固定格式,而实际上自由格式更为灵活好用,其一行不受72个字符的限制,并且可以将多个语句写在同一行,同时续行符相对于固定格式也更为好用。本文主要描述下如何实现在abaqus中采用Fortran自由格式编程。
以帮助文档中的经典塑性UMAT子程序为例:
(1)打开Abaqus documentation,点击Abaqus Verification Guide,并进入UMAT AND UHYPER下的input files;
(2)下载inp文件及f子程序,用文本编辑器打开umatmst3.f,可以看出其采用的是固定格式编写;
(3)修改abaqus的运行环境,加入支持自由格式的设置:找到abaqus环境的配置文件,对于abaqus2020和abaqus2021版本,该文件为以下路径的win86_64.env文件:
对于比较早的abaqus版本如abaqus6.14,该文件可能叫abaqus_v6.env。总之通过搜索等方式找到该文件并打开即可。
(4)在.env文件中加入使用自由格式的命令:
(5)将子程序修改为自由格式,需要修改的内容主要包括 续航符,注释等。事实上,国内知名的Fortran程序论坛FCODE论坛提供了一个将固定格式转化为自由格式的工具“鹅毛笔”,路径如下:http://quill.fcode.cn/
打开umatmst3.f,复制全部代码粘贴到鹅毛笔的页面,选中“固定格式( .for 或 .f )转自由格式”,再点击“开始转换”,则自动生成了自由格式的代码,将代码复制到umatmst3.f替换原固定格式的代码(不需要修改文件名和文件名后缀),同时手动将代码中的”Invlude”替换成”include”(此处是转化工具鹅毛笔的一个bug,因此需要手动修改)。
转换前的代码
转换后的代码
(6)打开abaqus cae,使用file-import-model导入umatmst3.inp文件,创建job,选择子程序并且提交。
或者采用abaqus command命令提交:
注:修改.env支持自由格式后,则按照固定格式编写的子程序则不能正确使用,如果提交会报语法错误,此时可将代码的固定格式用“鹅毛笔”转自由格式再提交或者重新打开.env文件将“,/FREE,”命令删除使其重新支持固定格式。总之,固定格式和自由格式只能二选一。
【完】
欢迎关注公众号 有限元术
查看更多评论 >