24小时热门版块排行榜    

查看: 1318  |  回复: 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的回帖

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的回帖
查看全部 5 个回答

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(金币+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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 为什么国自然不能直接公布 +5 bjdxyxy 2026-08-26 5/250 2026-09-01 17:54 by 小伟大博士
[基金申请] 学科评审组评审是指会评吗? +4 瞬息宇宙 2026-08-31 4/200 2026-09-01 14:58 by jiaoxg
[基金申请] 为什么资助数各大高校都创新高,自己申请怎么就这么难 +13 Kittylucky 2026-08-27 14/700 2026-09-01 11:06 by feng6531
[论文投稿] 小白求助 投论文要求的highlights应该如何写 5+3 l1963982152 2026-08-29 4/200 2026-09-01 09:04 by 北京莱茵编辑
[基金申请] 麻烦专家们看看评委们的意见(F口面上) +7 gdd2018 2026-08-28 12/600 2026-09-01 08:32 by 尼古拉斯小虫
[基金申请] 怎么看青基中了没有啊 +6 叶九微 2026-08-26 6/300 2026-08-31 23:54 by yudaoqian88
[基金申请] 国社科又开始会评了,不知道这次命运如何 +7 雨打竹帘 2026-08-30 11/550 2026-08-31 23:16 by hittle2008
[基金申请] 基金未中,这种答复是模板吗? +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
[基金申请] 面上意见出来了 +12 黄鸟于飞Chao 2026-08-29 23/1150 2026-08-31 18:57 by 黄鸟于飞Chao
[基金申请] 为什么到现在没收到通知? +5 tannykie 2026-08-29 5/250 2026-08-30 21:05 by purplejack
[基金申请] 我就是申请一个面上项目而已,这评审意见是按照杰青的条件评的吧? +6 gouxfjh 2026-08-28 11/550 2026-08-30 07:57 by gouxfjh
[基金申请] 看板上这么多中的,有点像50人群里49个人都是骗子的那种感觉…… +5 a089 2026-08-26 6/300 2026-08-27 14:05 by jonewore
[基金申请] 为什么 国际(地区)合作与交流项目 没有放榜? 10+3 majunge000 2026-08-26 11/550 2026-08-27 08:42 by 北京莱茵编辑
[基金申请] 出来了 +9 trojank 2026-08-26 9/450 2026-08-26 14:25 by 宝贝虫子
[基金申请] 国合里面能看到了 +7 一怀馨秋 2026-08-26 7/350 2026-08-26 11:23 by zhaosm1982
[基金申请] 国际合作可查了,中了面上 (EPI+1)(金币+50) +18 Ldrop2023 2026-08-26 18/900 2026-08-26 11:15 by cmrandy
[基金申请] 系统进不去 +4 yanglien 2026-08-26 5/250 2026-08-26 11:10 by wenfengw83
[基金申请] 项目信息和经费信息在系统里都可以看到了 +6 wittyboy 2026-08-26 14/700 2026-08-26 10:55 by wittyboy
[基金申请] 牛来!米来!面来! +8 beefly 2026-08-26 8/400 2026-08-26 08:37 by xuzhipiao
信息提示
请填处理意见