Fortran Coder

标题: 关于FORTRAN77中COMMON的问题 [打印本页]

作者: 916115735    时间: 2020-10-8 21:54
标题: 关于FORTRAN77中COMMON的问题
在两个子程序之间进行数据交互,且每个增量步后都需要把数据传递给另一个子程序,通过COMMON进行数据交换时,会出现数据混乱,温度传递过去的云图如下图所示,在数据传递过程中,子程序1计算的数据传递给子程序2,子程序2计算后的数据在通过common传递给子程序1中,参与子程序1中的计算。子程序1中:
      COMMON X, Y, Z, H, I, J, W, B, BA
      REAL X, Y, Z, H, I, J, W, B, BA
其中:
X,K,W,B,BA为子程序1传递给子程序2

子程序2中:
      COMMON L, G, K, O, P, Q, S, NN, BBA
      REAL L, G, K, O, P, Q, S, NN, BBA

其中:
G,O,P,Q为子程序2传递给子程序1
子程序中的相关变量已经一一对应。




微信图片_20201008215331.png (68.65 KB, 下载次数: 600)

子程序1传递给子程序2的温度云图

子程序1传递给子程序2的温度云图

作者: 七星彩    时间: 2020-10-8 23:41
改用module就解决了。
作者: 916115735    时间: 2020-10-9 09:09
七星彩 发表于 2020-10-8 23:41
改用module就解决了。

module是90/95引入的吧 77可以用么
如果不换module 只是在common的基础上进行改动 需要怎么改呢
作者: fcode    时间: 2020-10-9 10:09
是什么让你把自己禁锢在F77的古老世界里?
作者: 916115735    时间: 2020-10-9 10:42
fcode 发表于 2020-10-9 10:09
是什么让你把自己禁锢在F77的古老世界里?

来自导师的压力
作者: Transpose    时间: 2020-10-9 16:37
916115735 发表于 2020-10-9 10:42
来自导师的压力

注意区分F77和固定格式,现在应该没有只支持F77的编译器
作者: 916115735    时间: 2020-10-9 19:52
Transpose 发表于 2020-10-9 16:37
注意区分F77和固定格式,现在应该没有只支持F77的编译器

因为课题组都是Abaqus+Fortran77 所以就都只能一样了
作者: fcode    时间: 2020-10-10 09:02
abaqus 也可以用90啊~~注意固定格式并不代表F77。
F90也可以用固定格式~~

PS:其实abaqus有可以用自由格式~~
作者: Transpose    时间: 2020-10-10 12:07
916115735 发表于 2020-10-9 19:52
因为课题组都是Abaqus+Fortran77 所以就都只能一样了

看来你并没有区分清楚固定格式和F77。Fortran文件格式有固定格式和自由格式,语法标准有77,90,95,2003,2008。固定格式是以for,f结尾的文件(需要满足开头空6列,标签的位置,续行的要求等等),并不影响使用哪一种标准的语法,在固定格式里面也可以使用90的语法。
作者: 916115735    时间: 2020-10-11 10:21
Transpose 发表于 2020-10-10 12:07
看来你并没有区分清楚固定格式和F77。Fortran文件格式有固定格式和自由格式,语法标准有77,90,95,2003 ...

好的 谢谢指点
作者: 916115735    时间: 2020-10-11 10:21
fcode 发表于 2020-10-10 09:02
abaqus 也可以用90啊~~注意固定格式并不代表F77。
F90也可以用固定格式~~

好的 谢谢指点




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