Fortran Coder

标题: abaqus 二次开发中的 include [打印本页]

作者: wx_G5fH8Rhq    时间: 2015-9-24 11:10
标题: abaqus 二次开发中的 include
1. include 是哪个标准的黑科技,Chapman 的书上竟然貌似没有提到
2. 最近接手一个远古时代的UMAT程序,完全颠覆我这点薄弱的编程基础,主要是只能一个文件写所有的代码
3.试着在一个文件里写了module,不 use 的时候一切OK,但是一旦use就报错:
    FORTRAN.for(17): error #7002: Error in opening the compiled module file.  Check INCLUDE paths.   [ELASTIC_MATRIX]
            use elastic_matrix
    ----------^
    elastic_matrix 是跟 UMAT 写在一个文件的 module
4. include能不能解决这个问题
5. 好烦, 固定格式被我写成空7列的自由格式,还要担心不够长该换行了···

作者: pasuka    时间: 2015-9-24 12:40
1、口气不小啊,很不幸include不是啥黑科技,C、C++同样有,按照stackoverflow上面的说法,Fortran引入include是从MIL-STD 1971开始,oracle和hp的在线文档则注明include是F77标准的,至于中文书籍的话,彭国伦的书有这部分内容介绍
http://stackoverflow.com/questio ... ran-call-vs-include
http://docs.oracle.com/cd/E19957-01/805-4939/6j4m0vna1/index.html
http://h21007.www2.hp.com/portal ... ocs/lrm/lrm0580.htm
2~5、为啥不能拆成几个文件,分别编译?抄个makefile不难,自由格式、固定格式也就迎刃而解。统统放在一个源文件,必须得先定义module才行,编译器可没有那么聪明
作者: wx_G5fH8Rhq    时间: 2015-9-24 15:13
本帖最后由 wx_G5fH8Rhq 于 2015-9-24 15:27 编辑
pasuka 发表于 2015-9-24 12:40
1、口气不小啊,很不幸include不是啥黑科技,C、C++同样有,按照stackoverflow上面的说法,Fortran引入incl ...

大哥,我哪里有口气嘛为什么只能用一个源文件这个我也不知道,UMAT是ABAQUS里面的用户材料子程序,选择的时候就只能选一项,所以只好在一个文件里写上好几千行。
对了,他这个还支持obj文件,可是我编译后找到的obj代替源文件软件会报错说找不到umat子程序
makefile好高端,没看懂。
include我确实没了解准备看下,
最后感谢大神的回复!

作者: 楚香饭    时间: 2015-9-24 17:57
include 并不是什么高科技。或者说它的原理非常之简单,就相当于:
1.打开被包含文件,全选,复制。
2.粘贴在include 语句的位置。
仅此而已,别的什么都没有。

虽然我没用过二次开发,但是只能用一个源代码文件也是可能的。
作者: wx_G5fH8Rhq    时间: 2015-9-25 08:55
楚香饭 发表于 2015-9-24 17:57
include 并不是什么高科技。或者说它的原理非常之简单,就相当于:
1.打开被包含文件,全选,复制。
2.粘贴 ...

嗯,我再看看
谢谢大神回复~
作者: pasuka    时间: 2015-9-25 10:18
wx_G5fH8Rhq 发表于 2015-9-24 15:13
大哥,我哪里有口气嘛为什么只能用一个源文件这个我也不知道,UMAT是ABAQUS里面的用户材料子程序, ...

windows下面abaqus二次开发环境配置有点麻烦
按照abaqus的官方手册,只支持F77格式,其实只要预先编译成obj,f90格式甚至c代码都是可以的
能翻墙的话,谷歌上面可以搜到不少有用的信息
作者: hanshikai    时间: 2015-10-13 08:44
那个啥,UMAT根本算不上二次开发.
证明1:
这是软件自己已有的功能,让用户有了灵活使用材料的可能.
证毕!
证明2:
如果UMAT都算作二次开发,同理可证用ABQ建模型也属于二次开发.显然荒谬.
证毕!




作者: wx_G5fH8Rhq    时间: 2015-11-12 11:32
hanshikai 发表于 2015-10-13 08:44
那个啥,UMAT根本算不上二次开发.
证明1:
这是软件自己已有的功能,让用户有了灵活使用材料的可能.

那啥算二次开发···




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2