24小时热门版块排行榜    

查看: 1315  |  回复: 4

lijunjiexm

铁虫 (小有名气)

[求助] 求助一个编译出错的简单程序,请多多指教,谢谢

在建立的一个project的Source files的其中命名为STRESSAVG的f文件如下:
C
C**********************************************************************
C**********************************************************************
C**********************************************************************
C
      SUBROUTINE STRESSAVG(NUMEL, STORE, I1, I2, STR, NKT,
     >                     ORDWHERE, FIRST, LAST,
     >                     COUNTPLUS, COUNTMINS, COUNTFLAG)
      IMPLICIT   NONE
      INCLUDE   'PARAMETERS.INC'
      INCLUDE   'NUMBERS.INC'
      INTEGER*4  ORDWHERE(NDMB)
      INTEGER*4  I
      INTEGER*4  FIRST (NUMEL + 1), LAST (NUMEL + 1)
      REAL*8     STORE (NDMB)
      REAL*8     SUM1, SUM2, NKT
      REAL*8     STR(2, 3, NUMEL)
      INTEGER*4  II, J, I1, I2, INDEX, NUMEL
      INTEGER*4  COUNTPLUS(NUMEL), COUNTMINS(NUMEL)
      LOGICAL*1  COUNTFLAG
C
C----------------------------------------------------------------------
C       STR (i , j , k)
C
C            ^   ^   ^
C            |   |   |_________ element number
C            |   |_____________ components in order xx, yx, yy
C            |_________________ triangle number (1 or 2)
C
C----------------------------------------------------------------------
C
      IF (COUNTFLAG) THEN
        DO I = 1 , NUMEL
          COUNTPLUS(I) = 0
          COUNTMINS(I) = 0
        ENDDO
      ENDIF
      IF     ((I1 .EQ. 1) .AND. (I2 .EQ. 1)) THEN
        INDEX = 1
      ELSEIF ((I1 .EQ. 1) .AND. (I2 .EQ. 2)) THEN
        INDEX = 2
      ELSEIF ((I1 .EQ. 2) .AND. (I2 .EQ. 2)) THEN
        INDEX = 3
      ELSE
        PRINT *,'Wrong indices for stress tensor'
      ENDIF
      DO J = 1 , NUMEL
        SUM1 = ZERO
        SUM2 = ZERO
*vdir nodep
CDIR$ IVDEP
        DO II = FIRST(J) , LAST(J)
          I = ORDWHERE(II)
          IF (I .GT. 0) THEN
            SUM1 = SUM1 + STORE(I)
            IF (COUNTFLAG) THEN
              COUNTPLUS(J) = COUNTPLUS(J) + 1
            ENDIF
          ELSE
            SUM2 = SUM2 + STORE(-I)
            IF (COUNTFLAG) THEN
              COUNTMINS(J) = COUNTMINS(J) + 1
            ENDIF
          ENDIF
        ENDDO
        STR(1 , INDEX , J) = SUM1
        STR(2 , INDEX , J) = SUM2
      ENDDO
      DO J = 1 , NUMEL
        STR(1 , INDEX , J) =  STR(1 , INDEX , J) * NKT /
     >                        MAX(1 , COUNTPLUS(J))
        STR(2 , INDEX , J) =  STR(2 , INDEX , J) * NKT /
     >                        MAX(1 , COUNTMINS(J))
      ENDDO
      IF ((INDEX .EQ. 1) .OR. (INDEX .EQ. 3)) THEN
        DO J = 1 , NUMEL
            STR(1 , INDEX , J) = STR(1 , INDEX , J) - NKT
            STR(2 , INDEX , J) = STR(2 , INDEX , J) - NKT
        ENDDO        
      ENDIF
      RETURN
      END


而PARAMETERS.INC和NUMBERS.INC同时保存在同一个project下的Extenal Dependenciec文件夹中:

PARAMETERS.INC文件为:

      INTEGER*4   NSD,    NEN,    NDOF
      INTEGER*4   NNPMAX, NELMAX, NEQMAX
      INTEGER*4   NSBDIV, NBWMAX
      INTEGER*4   NBUF  , MAXTRACE
      INTEGER*4   NDMB
C
      PARAMETER ( NSD      =                   2,
     >            NEN      =                   4,
     >            NDOF     =                   2,
     >            NNPMAX   =                3000,
     >            NEQMAX   =       NDOF * NNPMAX,
     >            NSBDIV   =                 110,
     >            NBWMAX   =       NDOF * NSBDIV,
     >            NDMB     =              524288,
C     >            NDMB     =               65536,
C    >            NDMB     =                2048,
     >            NBUF     =                1024,
     >            NELMAX   =                3000,
     >            MAXTRACE =               10000 )


NUMBERS.INC 文件为:

      REAL*8     ZERO, ONE, TWO, THREE, FOUR, FIVE, SIX,
     >           HALF, THIRD, SIXTH,
     >           FOURTH, TWSVTH, NINTH, TWFOUR,
     >           PI, TWOPI, FTPI,
     >           RSMALL
      PARAMETER (ZERO   = 0.0                              ,
     >           ONE    = 1.0                              ,
     >           TWO    = 2.0                              ,
     >           THREE  = 3.0                              ,
     >           FOUR   = 4.0                              ,
     >           FIVE   = 5.0                              ,
     >           SIX    = 6.0                              ,
     >           HALF   = 1.0 /  2.0                       ,
     >           THIRD  = 1.0 /  3.0                       ,
     >           SIXTH  = 1.0 /  6.0                       ,
     >           FOURTH = 1.0 /  4.0                       ,
     >           TWSVTH = 1.0 / 27.0                       ,
     >           NINTH  = 1.0 /  9.0                       ,
     >           TWFOUR = 24.                              ,
     >           PI     =      3.14159265358979323846      ,
     >           TWOPI  = 2. * 3.14159265358979323846      ,
     >           FTPI   = 4. * 3.14159265358979323846 / 3. ,
     >           RSMALL = 1.0E-30                     )
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijunjiexm

铁虫 (小有名气)


dubo(金币+1): 欢迎常来程序语言版讨论 2011-07-31 13:31:08
在windows下Compaq Visual Fotran编译出现如下错误信息(请多多指教,谢谢):

-------------------Configuration: sucontr - Win32 Debug--------------------
Compiling Fortran...
G:\Program Files\sucontr\src\stressavg.f
G:\Program Files\sucontr\src\stressavg.f(14) : Error: This name does not have a type, and must have an explicit type.   [NUMEL]
      INTEGER*4  FIRST (NUMEL + 1), LAST (NUMEL + 1)
------------------------^
G:\Program Files\sucontr\src\stressavg.f(14) : Error: A specification expression is invalid.   [NUMEL]
      INTEGER*4  FIRST (NUMEL + 1), LAST (NUMEL + 1)
------------------------^
G:\Program Files\sucontr\src\stressavg.f(14) : Error: A specification expression is invalid.   [NUMEL]
      INTEGER*4  FIRST (NUMEL + 1), LAST (NUMEL + 1)
------------------------------------------^
G:\Program Files\sucontr\src\stressavg.f(17) : Error: A specification expression is invalid.   [NUMEL]
      REAL*8     STR(2, 3, NUMEL)
---------------------------^
Error executing df.exe.

stressavg.obj - 4 error(s), 0 warning(s)
2楼2011-07-17 21:58:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖


jjdg(金币+1): 感谢应助 2011-07-17 22:18:08
lijunjiexm(金币+2): 改了,还是不行。。 2011-07-17 23:14:39
你在INCLUDE   'NUMBERS.INC'后加一句:
INTEGER*4 NUMEL
应该就可以了……
3楼2011-07-17 22:12:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖


jjdg(金币+1): 感谢参与 2011-07-18 14:51:34
看出错信息:
G:\Program Files\sucontr\src\stressavg.f(14) : Error: This name does not have a type, and must have an explicit type.   [NUMEL]

说的就是我前面给出的那个解决方案。

不过,我刚才用gfortran试了一下,即使不加前面的那一句话,都可以顺利编译啊……
4楼2011-07-17 23:32:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖

★ ★
jjdg(金币+2): 感谢参与 2011-07-18 14:51:45
lijunjiexm(金币+28): Thanks.希望以后还可以向您讨教Fortran的问题。 2011-07-19 08:15:56
哦,看到问题了,你在第 19 行声名了 NUMEL,但你在第 14 行用了 NUMEL

所以,你删掉 19 行中的 NUMEL,然后按我第一帖中的方法再试一下……
5楼2011-07-17 23:35:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lijunjiexm 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 面上合作单位盖章 +6 ssyjh 2026-08-27 9/450 2026-09-01 20:01 by huagongfeihu
[基金申请] 麻烦专家们看看评委们的意见(F口面上) +7 gdd2018 2026-08-28 12/600 2026-09-01 08:32 by 尼古拉斯小虫
[基金申请] 国社科又开始会评了,不知道这次命运如何 +7 雨打竹帘 2026-08-30 11/550 2026-08-31 23:16 by hittle2008
[基金申请] 投票:  有多少人是今天查系统知道结果的? +17 爱看书的可乐 2026-08-26 19/950 2026-08-31 21:30 by xiangy672
[基金申请] 基金未中,这种答复是模板吗? +6 zhaosm1982 2026-08-27 7/350 2026-08-31 21:18 by qdxxmc
[基金申请] 哪位高人中了,把查询到的截图贴出来让我看看,让我长长见识 +6 yuleib84 2026-08-26 7/350 2026-08-31 19:46 by 鱼翔浅底1
[基金申请] 能否申诉? +7 echo8914667 2026-08-30 8/400 2026-08-31 17:00 by yihongxu
[基金申请] 基金不中,共勉 +12 eulota 2026-08-26 12/600 2026-08-31 08:42 by ZJTJZ
[基金申请] 为什么到现在没收到通知? +5 tannykie 2026-08-29 5/250 2026-08-30 21:05 by purplejack
[基金申请] 有没有仍没收到信息的 +7 德尚中行 2026-08-27 8/400 2026-08-30 20:52 by purplejack
[考博] 找导师 +6 yuanjiabao 2026-08-29 7/350 2026-08-30 14:40 by 生科新手
[基金申请] 国自然面上复盘~欢迎讨论 (金币+15) +15 晴天加油 2026-08-26 16/800 2026-08-29 18:28 by symmetry
[基金申请] 国自然评审意见 +13 wangmingqi 2026-08-28 19/950 2026-08-29 10:22 by Poppy1104
[基金申请] 2026年叶企孙基金 +4 bud_bud 2026-08-27 7/350 2026-08-29 07:23 by foolishmani
[基金申请] 基金系统什么内容也没有 30+4 winsaint 2026-08-27 9/450 2026-08-28 11:06 by maolC
[基金申请] 看板上这么多中的,有点像50人群里49个人都是骗子的那种感觉…… +5 a089 2026-08-26 6/300 2026-08-27 14:05 by jonewore
[基金申请] 出来了 +9 trojank 2026-08-26 9/450 2026-08-26 14:25 by 宝贝虫子
[基金申请] 国际合作可查了,中了面上 (EPI+1)(金币+50) +18 Ldrop2023 2026-08-26 18/900 2026-08-26 11:15 by cmrandy
[基金申请] 项目信息和经费信息在系统里都可以看到了 +6 wittyboy 2026-08-26 14/700 2026-08-26 10:55 by wittyboy
[基金申请] 国合可查了 +3 paperzjh 2026-08-26 3/150 2026-08-26 10:41 by LemmonTr
信息提示
请填处理意见