Fortran Coder

标题: 参数传递以及相加减 [打印本页]

作者: fortrandown    时间: 2024-1-15 18:32
标题: 参数传递以及相加减
求助各位大神:
本人用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的值在输出后可以是有意义的值,但是没办法和一个实数变量相加减。
求大神救救我吧。

作者: fcode    时间: 2024-1-16 09:33
我也不明白。所以,上代码吧
作者: fortrandown    时间: 2024-1-17 16:49
             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.





作者: fortrandown    时间: 2024-1-17 16:50
代码附上

module_mp_full_sbm.F

420.97 KB, 下载次数: 0






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