Fortran Coder

查看: 252|回复: 3

[子程序] 参数传递以及相加减

[复制链接]

3

帖子

1

主题

0

精华

新人

F 币
19 元
贡献
7 点
发表于 2024-1-15 18:32:56 | 显示全部楼层 |阅读模式
求助各位大神:
本人用WRF模型,fortran语言,在wrf论坛里多次提问,没有被解答,想来此地悉心请教。请各位大神赐教:
在solve_em.F 文件里,计算了一个变量。tracer(i,k,j,tr17_2) 这个标量,通过参数传递给module_microphysics_driver.F,然后又传递给了module_mp_full.F这个文件里的tr_two 着个变量。

问题是:在module_mp_full.F 这个文件里print出来的tr_two 是0.000000E00,把这个tr_two 加上一个变量后变成了nan。然后用一个新的变量qnin_new=tr_two之后输出的qnin_new 还是正常的值。
实在不明白为什么print出的0.0000E00的值在输出后可以是有意义的值,但是没办法和一个实数变量相加减。
求大神救救我吧。

1938

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1255 元
贡献
529 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2024-1-16 09:33:17 | 显示全部楼层
我也不明白。所以,上代码吧

3

帖子

1

主题

0

精华

新人

F 币
19 元
贡献
7 点
 楼主| 发表于 2024-1-17 16:49:27 | 显示全部楼层
             grid%tra = tracer(ims,kms,jms,P_tr17_2).    (这里是计算tracer(ims,kms,jms,P_tr17_2)
       CALL microphysics_driver( ....  (这里传递给了phys/module_microphysics_driver.F)
&        , TRA = grid%tra &

      CALL sbm(.....
          ,tr_two = TRA &        (这里又传递给了SBM)
在SBM.F 里这个值赋值给qnin_new:
qnin_new(I,K,J) = max(0.,tr_two(I,K,J)).
在code里面直接print*,“qnin”,qnin_new(I,K,J) 得到的0.00000E00
但是output出来qnin_new的结果却是正确的。把qnin_new和另一个变量相加,也得到NAN。
能output出来结果说明传递应该是有意义的,但是不知道为什么传递进来就不能相加减。请大神帮帮忙。
最后在SBM.F 代码附上,比较长,请直接搜索关键字tr_two.




3

帖子

1

主题

0

精华

新人

F 币
19 元
贡献
7 点
 楼主| 发表于 2024-1-17 16:50:50 | 显示全部楼层
代码附上

module_mp_full_sbm.F

420.97 KB, 下载次数: 0

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-2-25 13:33

Powered by Tencent X3.4

© 2013-2024 Tencent

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