Fortran Coder

在Fortran模型中加入一个自己写的子程序出现读入问题

查看数: 51223 | 评论数: 20 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-3-11 10:09

正文摘要:

做作物生长模型的模型小白,在原有的模型基础上添加温度模块,调用原有lib读取数据文件时出错,但是不知道为什么会这样,求教!

回复

kellsi 发表于 2021-3-15 09:15:26
青衣巷 发表于 2021-3-15 08:20
这一系列问题,都要取决于代码逻辑。
(即可以设计得有影响,也可以设计得没有影响)

好的,谢谢!!!
青衣巷 发表于 2021-3-15 08:20:31
kellsi 发表于 2021-3-15 07:54
对,这个IUNITD确实是通道号,提前赋值是否影响其他子程序中的使用呢

这一系列问题,都要取决于代码逻辑。
(即可以设计得有影响,也可以设计得没有影响)

需要全面审视全部代码逻辑后,才能判断。
kellsi 发表于 2021-3-15 07:54:37
青衣巷 发表于 2021-3-13 09:31
如果没猜错的话,变量IUNITD应该是通道号,在 RDINIT (盲猜 含义是 ReadInit )中被幅值或从外部控制文件中 ...

对,这个IUNITD确实是通道号,提前赋值是否影响其他子程序中的使用呢
kellsi 发表于 2021-3-15 07:53:35
风平老涡 发表于 2021-3-13 00:49
如果没猜错的话,变量IUNITD应该是通道号,但没有被赋值。在call RDINIT前给IUNITD赋值10~99间的任意数值 ...

我试试您这个思路,谢谢!
青衣巷 发表于 2021-3-13 09:31:50
如果没猜错的话,变量IUNITD应该是通道号,在 RDINIT (盲猜 含义是 ReadInit )中被幅值或从外部控制文件中获取的。
CALL RDINIT(IUNITD,IUNITL,FILEI2)

它的问题是通道号是1(并不是没有值),而库里的函数只允许 10-99
风平老涡 发表于 2021-3-13 00:49:51
kellsi 发表于 2021-3-11 22:27
!  soiltemperature.f90
!
!  FUNCTIONS:

如果没猜错的话,变量IUNITD应该是通道号,但没有被赋值。在call RDINIT前给IUNITD赋值10~99间的任意数值应能解决问题。
CALL RDINIT(IUNITD,IUNITL,FILEI2)
.
.
CLOSE (IUNITD)
kellsi 发表于 2021-3-12 15:16:14
胡文刚 发表于 2021-3-12 11:07
我没法准确的从一堆残缺的代码片段中判断你的代码逻辑。

而且这个 unit 在 [10,99] 区间的逻辑,是封在lib ...

好的,我试一下,谢谢您!
胡文刚 发表于 2021-3-12 11:07:12
我没法准确的从一堆残缺的代码片段中判断你的代码逻辑。

而且这个 unit 在 [10,99] 区间的逻辑,是封在lib库里的,也没法改。

你可以尝试把 IUNITD 改成 10 到 99 之间的数字,目前是1。可能有效。

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

GMT+8, 2024-11-23 18:53

Powered by Tencent X3.4

© 2013-2024 Tencent

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