查看: 1359  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[有机交流] OpenAI又攻克数学难题了,离AI做有机合成还有多远? +4 wangyl_123 2026-10-10 8/400 2026-10-12 18:09 by wangyl_123
[硕博家园] 极限拉扯,如何抉择 +5 Isak0320 2026-10-12 7/350 2026-10-12 18:03 by 有人要害朕
[教师之家] 课题组会帮你通过考核么? +3 好运来~9527 2026-10-10 6/300 2026-10-12 14:55 by 简单化xn
[公派出国] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 9/450 2026-10-11 22:34 by XQNyDCa1Tk5n
[公派出国] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 22:26 by XQNyDCa1Tk5n
[考博] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 9/450 2026-10-11 22:15 by XQNyDCa1Tk5n
[考博] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 22:11 by XQNyDCa1Tk5n
[教师之家] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 (EPI+-1)(金币-50) +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 22:06 by XQNyDCa1Tk5n
[基金申请] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +5 qR2AdCWTVtkw 2026-10-09 9/450 2026-10-11 22:06 by XQNyDCa1Tk5n
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 (EPI+-1)(金币-50) +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 14:25 by VOMexwnDzOFZ
[教师之家] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 (EPI+-1)(金币-50) +4 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 14:05 by VOMexwnDzOFZ
[考研] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 13:51 by VOMexwnDzOFZ
[硕博家园] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 13:45 by VOMexwnDzOFZ
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 10:54 by VOMexwnDzOFZ
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +4 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 10:34 by VOMexwnDzOFZ
[考博] 招收博士生一名 +3 mandolin 2026-10-10 3/150 2026-10-11 10:21 by 不是山谷!
[公派出国] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +4 qR2AdCWTVtkw 2026-10-09 4/200 2026-10-11 03:14 by M0zrYVSAnxpE
[有机交流] 各位大佬,路线设计求助 +6 zapen 2026-10-08 8/400 2026-10-10 15:59 by zapen
[基金申请] 入职后第一次管课题组的专利缴费,对账才发现官费比别人多掏了一倍 +5 13108017953 2026-10-08 5/250 2026-10-10 11:15 by wdwd123
[有机交流] 我应该选哪条合成路线让实验成功率高一些? +5 jing816y 2026-10-08 9/450 2026-10-10 09:05 by zapen
信息提示
请填处理意见