ynn201314 发表于 2015-6-2 16:55:53

Fortran90编写的子程序

请教:我的abaqus是6.11的,与Intel(R) Visual Fortran Compiler Professional Edition 11.1的配套,做二次开发,以前用的一直是Fortran77,扩展名是.for    现在由于功能需要,想要用Fortran90或以上,扩展名是.f90。
      但是调用的时候报错了,错误提示是“user subroutine file name must have a .for or .obj extension”
      abaqus只能使用F77版本?还是可以通过其他方式调用F90?
      

wufan3924 发表于 2015-6-2 18:54:07

你按照f90的格式写,写完之后,把后缀改成.for,然后提交运算就行了。

asosk1 发表于 2015-6-3 10:40:42

一个是需要使用f90格式编写,然后更改后缀名为.f
另外你找到C:\SIMULIA\Abaqus\6.11-1\site\abaqus_v6.env这个文件中有一行是控制fortran编译的,在末尾加上一个'/free'这样就可以识别F90格式了,不知道你是不是这个问题
compile_fortran=['ifort', '/c','/DABQ_WIN86_64',
               '/recursive', '/Qauto-scalar', '/QxW', '/nologo', '/Od', '/include:%I','/free']

ynn201314 发表于 2015-6-3 21:30:27

wufan3924 发表于 2015-6-2 18:54
你按照f90的格式写,写完之后,把后缀改成.for,然后提交运算就行了。

版主,按照您给的方法,不对abaqus环境进行任何更改,只是该后缀名,我还是没有行得通:(。
   我觉得这样改后缀名的话,默认就是77版的了,我的提示的错误也是一些与77不符的语法错误。

ynn201314 发表于 2015-6-3 21:34:39

asosk1 发表于 2015-6-3 10:40
一个是需要使用f90格式编写,然后更改后缀名为.f
另外你找到C:\SIMULIA\Abaqus\6.11-1\site\abaqus_v6.env ...

您好,新朋友。我按照您给的方法改了一下,调用的时候还是说只能是.for文件,于是我把子程序的后缀名改为了.for提交,显示了一些语法错误(我是按照f90编的)。
       我在搜了一些同样问题的帖子,也按照他们的方法尝试了一下,但是无一成功啊!这是什么鬼呢?

zho123855 发表于 2015-6-3 22:12:34

我的经验与2#、3#完全相同,编译完全取决于你的编译器,现在的IVF完全支持Fortran 90的语法,只不过Abaqus只识别后缀为.for,直接把后缀改过来就行了。
注意一下,Fortran 77中要求用C进行注释,而且还有缩进的规定,一行的字符也有限制(超过的话会自动提醒,颜色变绿)。经常使用Abaqus子程序的人都熟悉这个习惯。这不是一个大问题。
相信只需要几分钟就可以把一个Fortran 90的程序改写成“形式上”满足Fortran 77要求的。注意,只需要改形式,不需要改语法规则。:)

ynn201314 发表于 2015-6-7 15:54:33

zho123855 发表于 2015-6-3 22:12
我的经验与2#、3#完全相同,编译完全取决于你的编译器,现在的IVF完全支持Fortran 90的语法,只不过Abaqus ...

      我的f90终于也行得通了,之前出错的原因是,子程序中用来连接上一行与下一行的“&”连接符,我放在下一行的开头了(难道这样不符合语法?书上有说放在一行的开头或末尾都是起连接作用的啊)。看到帖子中有位坛友写的f90将&连接符放在行尾处,于是我也这样修改之后就可以运行了:D(同时辅助修改后缀与环境文件)

平凡牛 发表于 2015-6-11 11:10:44

你好我的是6.12的   编辑子程序需要什么配套软件啊   我是新手请指教

ynn201314 发表于 2015-6-11 15:49:23

平凡牛 发表于 2015-6-11 11:10
你好我的是6.12的   编辑子程序需要什么配套软件啊   我是新手请指教

你的意思是做abaqus二次开发需要的配套软件?
6.12的可以和IVF11.1、vs2008组合

corehearty 发表于 2015-6-11 22:25:36

记住,支不支持自由格式的fortran 语言 与编译器有关,与abaqus 无关,abaqus 只需要obj 文件,
而编译选项是在abaqus_v6.env中设置的.但是abaqus需要输入以for为后缀的代码

MSC.Marc与abaqus 都是一样的,都可以通过修改配置文件,支持自由格式的fortran 代码
usually Marc does not support f90 files. I think free form is not really the problem, but rather the file extension.

平凡牛 发表于 2015-6-15 14:52:48

ynn201314 发表于 2015-6-11 15:49
你的意思是做abaqus二次开发需要的配套软件?
6.12的可以和IVF11.1、vs2008组合 ...

恩谢谢啊:)

walkandthink 发表于 2015-7-8 16:01:10

原来f90也可以啊,学习了

sunkingf 发表于 2015-8-13 17:38:01

ynn201314 发表于 2015-6-7 15:54
我的f90终于也行得通了,之前出错的原因是,子程序中用来连接上一行与下一行的“&”连接符,我放在 ...

有没有学习性的简单f90例子,学习下?

ynn201314 发表于 2015-8-24 10:00:08

sunkingf 发表于 2015-8-13 17:38
有没有学习性的简单f90例子,学习下?

如果会for77的话,那么按照书上给的规则进行格式转换,就可以了。

你的盟友 发表于 2015-8-25 08:55:09

ynn201314 发表于 2015-6-7 15:54
我的f90终于也行得通了,之前出错的原因是,子程序中用来连接上一行与下一行的“&”连接符,我放在 ...

感谢楼主悉心指导,之前我一直用fortran77语法格式写的,原来fortran90也行,非常感谢

akakac 发表于 2018-12-20 09:36:47

我想问一下,我在程序里面用了MODULE这是Fortran90才有的,格式改成了77格式,现在还是编译错误咋办
页: [1]
查看完整版本: Fortran90编写的子程序