Fortran Coder

查看: 7465|回复: 2
打印 上一主题 下一主题

[数值问题] 数组计算错误,我看不出来啊

[复制链接]

55

帖子

17

主题

0

精华

熟手

F 币
261 元
贡献
169 点
跳转到指定楼层
楼主
发表于 2014-10-27 10:01:01 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
[Fortran] 纯文本查看 复制代码
      FUNCTION INTERP (NPAIRS, FUNCT, XVALUE)
C     interpolates between points in data functions
      IMPLICIT NONE
C     input
         INTEGER NPAIRS  ! number of pairs of values to be used
         REAL    FUNCT(*)! array of pairs of values: x1, y1, x2, y2, ...
         REAL    XVALUE  ! x value
C     output
         REAL    INTERP  ! y value
C     local
         INTEGER    I, J ! DO indexes
         REAL XX(1:10) ! Cseries of x values of FUNCT
         REAL YY(1:10) ! Cseries of y values of FUNCT
C
C     put FUNCT into XX and YY
      I = 0
      DO 10 j = 1, 2 * NPAIRS - 1, 2
         I = I + 1
         XX(I) = FUNCT(j)
         YY(I) = FUNCT(j + 1)
   10 CONTINUE
C     interpolate using XX and YY
      DO 20 j = 1, NPAIRS
         IF (XVALUE .EQ. XX(j)) THEN
            INTERP = YY(j)
            RETURN
         ELSEIF (XVALUE .LT. XX(j)) THEN
            INTERP = YY(j - 1) + (XVALUE - XX(j - 1)) * 
     *         (YY(j) - YY(j - 1)) / (XX(j) - XX(j - 1))
            RETURN
         ELSE
         END IF
   20 CONTINUE
      END 
   SUBROUTINE CANOPY (DOY, MAXHT, RELHT, MAXLAI, MXMAI, 
     *   RELLAI,RELMAI,SNOW,SNODEN, MXRTLN, MXKPL, CS, DENSEF,  
     *   HEIGHT,LAI, SAI,MAI, RTLEN,  RPLANT)
C     canopy parameters
      IMPLICIT NONE
C     input
         INTEGER DOY      ! day of year (first day of DFILE and run)"
         REAL    MAXHT    ! maximum height for the year, m, minimum of 0.01 m
         REAL   RELHT(*)  ! ten pairs of DOY and relative canopy height
         REAL   MAXLAI    ! maximum projected leaf area index for the year,m2/m2
         REAL   MXMAI
         REAL   RELLAI(*) ! ten pairs of DOY and relative LAI
         REAL   RELMAI(*)
         REAL   SNOW      ! water equivalent of snow on the ground, mm
         REAL   SNODEN    ! snow density, mm/mm
         REAL   MXRTLN    ! maximum root length per unit land area, m/m2
         REAL   MXKPL     ! maximum plant conductivity, (mm/d)/MPa
         REAL   CS        ! ratio of projected SAI to canopy height, m-1
         REAL   DENSEF    ! density factor
C     output
         REAL   HEIGHT    ! canopy height above any snow, m, minimum of 0.01 m
         REAL   LAI       ! leaf area index, m2/m2, minimum of 0.00001
         REAL   SAI       ! stem area index, m2/m2
         REAL   MAI
         REAL   RTLEN     ! root length per unit land area, m/m2
         REAL   RPLANT    ! plant resistivity to water flow, MPa d/mm
C     local
         REAL   SNODEP    ! snow depth
         REAL   HNOSNO    ! height of canopy without snow
         REAL   HSNO      ! height of canopy above snow
         REAL   RATIO     ! fraction of canopy above snow
         REAL   RELHIT    ! RELHT for DOY
         REAL   KPL       ! plant conductivity, mm d-1 MPa-1
C     intrinsic
C        REAL, MAX
C     external functions needed
         REAL   INTERP
C
      RELHIT = INTERP(10, RELHT(20), REAL(DOY))
      SNODEP = .001 * SNOW / SNODEN
      HNOSNO = MAX(.01, RELHIT * MAXHT)
      HSNO = MAX(0., HNOSNO - SNODEP)
      RATIO = HSNO / HNOSNO
      HEIGHT = MAX(.01, HSNO)
C
      LAI = RATIO * DENSEF * INTERP(10, RELLAI(20), REAL(DOY)) * MAXLAI
      SAI = DENSEF * CS * HEIGHT
      MAI = INTERP(10, RELMAI(20), REAL(DOY)) * MXMAI
      IF (LAI .LT. .00001) LAI = .00001
C
      RTLEN = DENSEF * RELHIT * MXRTLN
      KPL = DENSEF * RELHIT * MXKPL
      IF (KPL .LT. 1E-08) KPL = 1E-08
      RPLANT = 1. / KPL
C
      END




数组取植:
        ' RELHT   (1 TO 20) ten pairs of DOY% and relative canopy height'
1 0.0   140 00.0  150 0.5  180 0.8  210 1.0  240 1.0   270 1.0   300 1.0   310 0.0   366 0.0
3       ' MAXLAI  maximum projected leaf area index for the year, m2/m2'
        ' RELLAI  (1 TO 20) ten pairs of DOY% and relative LAI'
1 0.0   120 0.0   140 0.6   150 0.8   180 1.0   185 1.0   230 1.0   260 0.8   285 0.0   366 0.0
        ' RELMAI  (1 TO 20) ten pairs of DOY% and relative LAI'
1 0.0   120 0.0   140 0.6   150 0.8   180 1.0   185 1.0   230 1.0   260 0.8   285 0.0   366 0.0


doy:day of year

123.png (40.1 KB, 下载次数: 238)

显示的错误

显示的错误
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

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

沙发
发表于 2014-10-27 12:02:16 | 只看该作者
代码不够,没有主程序,无法调试。

数组越界,建议你学习debug,自行解决。http://debug.w.fcode.cn

100

帖子

0

主题

0

精华

专家

F 币
550 元
贡献
291 点

规矩勋章元老勋章

QQ
板凳
发表于 2014-10-27 15:31:29 | 只看该作者
看看 PET.for 的第129行。YY数组越界
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-14 16:32

Powered by Tencent X3.4

© 2013-2024 Tencent

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