Fortran Coder

查看: 26255|回复: 19
打印 上一主题 下一主题

[子程序] 程序运行有问题,有关子程序C06LAF

[复制链接]

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

楼主
发表于 2014-2-26 14:53:32 | 显示全部楼层
本帖最后由 chuxf 于 2014-2-26 16:48 编辑

有一点可以引起你的注意:

主程序中,common 部分:

[Fortran] 纯文本查看 复制代码
common H,z
          common ua0,uw0,rw
          common E1w,G1w,E1a,G1a,E2w,G2w,E2a,G2a,E01w,E01a,E02w,
     +                    E02a
          common Cw,Cvw,Ca,Cva,Da,Dw,B,C


分别有 2,3,12,8 个变量

而被变换函数 Ua,Uw 中,common 变量为

[Fortran] 纯文本查看 复制代码
common H,z
          common n0,Sl0,Sg0,ua0,uw0,kw,rw,ka,g,R,Temp,M,Uatm
          common E1w,G1w,E1a,G1a,E2w,G2w,E2a,G2a,E01w,E01a,E02w,
     +                    E02a          
          common Cw,Cvw,Ca,Cva,Da,Dw,B,C


分别有 2,13,12,8 个变量

common 没有对齐,这样的结果是非常可怕的。

请注意,common 并不根据变量名字来一一对应,而是根据变量顺序来对应!!这就导致了你 Ua,Uw 中的 n0,Sl0,Sg0 的值与主程序完全不同!!

我建议你补齐主程序中的10个common变量:common n0,Sl0,Sg0,ua0,uw0,kw,rw,ka,g,R,Temp,M,Uatm
回复

使用道具 举报

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2014-2-26 15:20:30 | 显示全部楼层
你的程序走到了 412 行,这里让 IERR = 4,而后因为 IERR 而导致输出错误提示后程序结束。

这是良性错误,即你的代码自行处理的错误。

你可以追溯到 383 行,此处的 IF 不满足条件。RELERX.GT.0.1D0*ERREST(NCURR) ,即 0.1D-3 不大于 01*3.98,因而跳转到412行,IERR=4

于是你看到错误提示为 IFAIL = 4

4 是你的程序自行定义的错误代码,与语法无关。至于它代表什么含义,为什么会抛出这个错误,则要问代码作者或根据你的专业来分析了。
回复

使用道具 举报

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

板凳
发表于 2014-2-26 20:39:17 | 显示全部楼层
发你修改后的程序。这个错误就比较简单一些了
回复

使用道具 举报

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

地板
发表于 2014-2-27 12:14:49 | 显示全部楼层
本帖最后由 chuxf 于 2014-2-27 12:16 编辑

嗯,这个错误就很明了了。

Ua,Uw,Set 三个函数中,没有对  m1a,m2w,m2a 的定义,于是这三个量默认是整型的。

而我猜,你是想让他们是双精度。因为计算时他们的值小于1,整型的话就=0了,而后被 Cw=(m1w-m2w)/m2w 作为分母,出现了除0错误。


在这三个函数中,添加对  m1a,m2w,m2a 的定义。

[Fortran] 纯文本查看 复制代码
double precision m1a,m2w,m2a


得到如下计算结果,不知是否正确:
------------------------------------------------------------------
       t(s)     Pa(kPa)    Pw(kPa)    Set(cm)
------------------------------------------------------------------
  0.1000E+05    0.43307    0.63307    0.00000

回复

使用道具 举报

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

5#
发表于 2014-2-27 13:17:00 | 显示全部楼层
zjl88915 发表于 2014-2-27 13:08
太感谢您了!就是我想要的结果。您的指导真的帮了我很大的忙。

不客气,常来论坛看看。
回复

使用道具 举报

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

6#
发表于 2014-2-27 14:54:27 | 显示全部楼层
这个恐怕就是管理在 4 楼说的那种情况了。

T(1) 增大以后,要达到相同的精度也就越困难,你需要同步调整其他的参数,例如 RELERR,TFAC,ALPHAB(根据你的具体情况)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-11 19:04

Powered by Tencent X3.4

© 2013-2024 Tencent

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