Фатальная ошибка Компилятору F1002 не хватает места в куче на этапе 2 в MS Fortran Powerstation - PullRequest
0 голосов
/ 20 мая 2010

У меня есть код программы FORTRAN 77. Я использую Fortran Power Station 4.0 на Windows. Это очень длинный код метода конечных элементов.

Код следующий:


1 Основная программа начинается с

PARAMETER (HLENGTH=600.0,VLENGTH=600.0,NHELE=6,NVELE=6,NTYPE=1) 
PARAMETER (DENSITY=2.78E-6,POISON=0.34,THICK=1.0,EMODULE=6.87E4)
PARAMETER (NTOTALNODE=(NHELE+1)*(NVELE+1))                  
PARAMETER (NHNODE=NHELE+1,NVNODE=NVELE+1)                   
PARAMETER (MK=(NTOTALNODE-2*NHNODE-2*(NVNODE-2))*5)      
PARAMETER (DELTAH=(HLENGTH+0.0)/(NHELE+0.0))
PARAMETER (DELTAV=(VLENGTH+0.0)/(NVELE+0.0)) 


DIMENSION NODEMATRIX(NTOTALELE,4)                           
REAL*8    STIFFMATRIX(20,20),MASSMATRIX(20,20)
REAL*8    STIFFMATRIXS(20,20),MASSMATRIXS(20,20)
DIMENSION NODEROWT(4),NODEROWT2(20)     
DIMENSION NM(NVNODE,NHNODE)                                                
REAL*8 GSM(NTOTALNODE*5,NTOTALNODE*5),NCARRIER(MK),
      &GMM(NTOTALNODE*5,NTOTALNODE*5),AA(MK,MK),BB(MK,MK)


CALL STIFFMAT(STIFFMATRIX,DELTAV,DELTAH,THICK,EMODULE)
CALL MASSMAT(MASSMATRIX,DELTAV,DELTAH,THICK,DENSITY)
CALL STIFFMATS(STIFFMATRIXS,DELTAV,DELTAH)
CALL MASSMATS(MASSMATRIXS,DELTAV,DELTAH,DENSITY)
.
.
.
. etc

2 - Подпрограммы запускаются следующим образом:

SUBROUTINE STIFFMAT(STIFFMATRIX,DELTAV,DELTAH,THICK,EMODULE)

   REAL*8 STIFFMATRIX(20,20),B(6,20),BT(20,6),D(6,6)

   REAL*8 CC(5),ZETAM(5),ETAM(5),CA,CB,ZETA,ETA,SUM,SUM2,SUM3

   .
   .
   .etc



SUBROUTINE MASSMAT(MASSMATRIX,DELTAV,DELTAH,THICK,DENSITY)

   REAL*8 MASSMATRIX(20,20),B(5,20),BT(20,5),D(5,5)

   REAL*8 CC(5),ZETAM(5),ETAM(5),CA,CB,ZETA,ETA,SUM,SUM2,SUM3

   .
   .
   .etc



SUBROUTINE MASSMATS(MASSMATRIXS,DELTAV,DELTAH,DENSITY)

   REAL*8 MASSMATRIXS(20,20),B(5,20),BT(20,5),D(5,5),IS,JS,AS

   REAL*8 CC(5),ZETAM(5),CA,ZETA,ETA,SUM,SUM2,SUM3

   .
   .
   .etc



SUBROUTINE STIFFMATS(STIFFMATRIXS,DELTAV,DELTAH)

   REAL*8 STIFFMATRIXS(20,20),B(3,20),BT(20,3),D(3,3)

   REAL*8 CC(5),ZETAM(5),CA,ZETA,ETA,SUM,SUM2,SUM3

   .
   .
   .etc

Когда я нажимаю команду компиляции, она показывает мне следующее сообщение:

фатальная ошибка F1002: компилятору не хватает места в куче на этапе 2

Я погуглил проблему и нашел следующие решения

Но я не понял решения!

Я не знаю, как изменить параметр Zi, где я могу его найти?

Я думаю, что мой код хорош и понятен. Есть ли у кого-нибудь предложения по решению этой проблемы?

Ответы [ 4 ]

1 голос
/ 22 мая 2010

Существует только так много помощи, которая может быть оказана через Интернет. И только столько, сколько можно сделать с устаревшим продуктом (MS Fortran Power Station), для которого вам не хватает документации. У меня есть несколько предложений. Получите современный компилятор. С вашим опытом работы с компьютером и тем, что вы используете MS Windows, вам лучше всего подойдет коммерческий продукт, такой как Intel Visual Fortran Compiler для Windows.

Может быть образовательная скидка. Вероятно, есть пробная загрузка (демо). Если у вас все еще есть трудности (установка, компиляция вашей программы и т. Д.), Предложите немного денег студенту, который хорошо разбирается в компьютерах, чтобы помочь вам в течение нескольких часов. Я также предлагаю изучить Фортран 95. Вы можете постепенно переключаться с Фортрана 77 на Фортран 95, так как языки совместимы. Фортран 95 - более способный язык. Он также имеет функции, которые позволяют компиляторам находить ошибки программиста, ускоряя процесс разработки.

1 голос
/ 31 октября 2011

Если рабочее пространство проекта помещается во вложенные папки, что приводит к большому пути, то компилятор powerstation показывает эту ошибку. Решение этой проблемы состоит в том, чтобы уменьшить путь к рабочей области проекта, поместив его ближе к диску c, например, в папку «Мои документы».

0 голосов
/ 29 августа 2017

У меня похожая проблема, когда я делаю имя "Project Workspace" слишком длинным. Используйте короткое имя «Project Workspace».

0 голосов
/ 20 мая 2010

По предоставленной вами ссылке:

Существует три способа решения этих проблем:

  • Переупорядочить структуру. Выкладываю маленький предметы сначала часто устраняют как ошибки. -или-

  • Используйте имена членов длиной в один символ. -или-

  • Перекомпилировать без -Zi.

Если вы компилируете с параметром -Zi, отключите параметр.

Если это не сработает, измените порядок структуры. Это означает размещение меньших отдельных элементов INTEGER, FLOAT и т. Д. В начале программы с последующими объявлениями Array.

Если это не сработает, ваша программа слишком велика для электростанции Фортрана.

...