Fortran Coder

查看: 2942|回复: 3
打印 上一主题 下一主题

[求助] COMMON中声明的数组在未修改的情况下在子程序中改变

[复制链接]

4

帖子

2

主题

0

精华

入门

F 币
42 元
贡献
19 点
跳转到指定楼层
楼主
发表于 2022-10-22 18:34:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
程序为古早时期的代码,f77
编译环境为Ubuntu22.04+oneAPI ifort
1.变量声明
通过include头文件在主程序和所有子程序中声明,
头文件中的部分声明如下:
[Fortran] 纯文本查看 复制代码
	
PARAMETER(NF=1,NLG=50)
REAL :: XLGM,YLGM,XLGM1,YLGM1,XLGM0,YLGM0,XLGM00,YLGM00
	  COMMON/LAGRM0/XLGM(NF,NLG),YLGM(NF,NLG)

可以将XLGM(NF,NLG),YLGM(NF,NLG)看作结点的坐标
2.问题
2.1.调用逻辑
在主程序中先调用有限元的子程序,再在有限元的子程序中先后调用处理质量矩阵和刚度矩阵的子程序
其中调用质量矩阵子程序前后,XLGM(NF,NLG),YLGM(NF,NLG)未改变,但在调用相同处理方式的刚度矩阵子程序后,XLGM(NF,NLG),YLGM(NF,NLG)改变
改变的位置定位到组装刚度矩阵子程序中对应的部分代码,如下
[Fortran] 纯文本查看 复制代码
K_TEMP(:,1:40)=KS(:,3:42)
        DO IL=1,NLG1(IIF)
          WRITE(*,*) 'STIFF1:IL,XLGM(IIF,IL),YLGM(IIF,IL)'
          WRITE(*,*) IL,XLGM(IIF,IL),YLGM(IIF,IL)
        ENDDO 
        K_TEMP(:,41:80)=KS(:,45:84)
        DO IL=1,NLG1(IIF)
          WRITE(*,*) 'STIFF2:IL,XLGM(IIF,IL),YLGM(IIF,IL)'
          WRITE(*,*) IL,XLGM(IIF,IL),YLGM(IIF,IL)
        ENDDO 
        K_TEMP(:,81:120)=KS(:,87:126)
        DO IL=1,NLG1(IIF)
          WRITE(*,*) 'STIFF3:IL,XLGM(IIF,IL),YLGM(IIF,IL)'
          WRITE(*,*) IL,XLGM(IIF,IL),YLGM(IIF,IL)
        ENDDO 
        K_REDUCT(1:40,:)=K_TEMP(3:42,:)
        DO IL=1,NLG1(IIF)
          WRITE(*,*) 'STIFF4:IL,XLGM(IIF,IL),YLGM(IIF,IL)'
          WRITE(*,*) IL,XLGM(IIF,IL),YLGM(IIF,IL)
        ENDDO 






请问下可能是什么原因呢?有什么可行的解决方式呢?
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

250

帖子

2

主题

0

精华

宗师

F 币
1731 元
贡献
872 点

规矩勋章

沙发
发表于 2022-10-23 10:51:06 | 只看该作者
可能是K_TEMP和COMMON语句中的变量用equivalence语句共享了存储空间

4

帖子

2

主题

0

精华

入门

F 币
42 元
贡献
19 点
板凳
 楼主| 发表于 2022-10-23 14:52:13 | 只看该作者
necrohan 发表于 2022-10-23 10:51
可能是K_TEMP和COMMON语句中的变量用equivalence语句共享了存储空间

多谢回答,并未使用equivalence语句,目前正在排查是否为越界或赋初始值问题

260

帖子

0

主题

0

精华

版主

World Analyser

F 币
721 元
贡献
512 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
地板
发表于 2022-10-23 20:43:34 | 只看该作者
这就是为什么推荐用module替代common的原因
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-24 09:48

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表