Работаю с Compaq Visual Fortran 6.5. Создаю проекты в среде разработчика в Developer Studio.
Наверное компилятор является встроенным в эту среду. Подскажите каким образом узнать его производителя и версию?
На счет стека не понял. В свойствах проекта на закладке Link не нашел не слова о размере стека, там ли я ищу?
Вложение:
.JPG [ 42.45 КБ | Просмотров: 26661 ]
Привожу куски текста этих двух файлов:
! ПРОГРАММА TAVR_PROCESSOR_TEST - ПРОИЗВОДИТ ТЕСТИРОВАНИЕ РАСЧЁТА
! МЕТОДОМ КОНЕЧНО-РАЗНОСТНОЙ АППРОКСИМАЦИИ ДЛЯ ТАВРА.
PROGRAM TAVR_PROCESSOR_TEST
USE VARIABLES_TP ! МОДУЛЬ VARIABLES_TP - ОБЪЯВЛЯЕТ ПЕРЕМЕННЫЕ, ИСПОЛЬЗУЮЩИЕСЯ В FPS2H_TAVR_PROCESSOR.
USE INPUT_VAR_TP ! МОДУЛЬ INPUT_VAR_TP - СОДЕРЖИТ ПОДПРОГРАММЫ ДЛЯ СЧИТЫВАНИЯ ИСХОДНЫХ ДАННЫХ
! ИЗ DANO.TXT ДЛЯ FPS2H_TAVR_PROCESSOR.
USE OUTPUT_FILES_TP ! МОДУЛЬ OUTPUT_FILES_TP - ЗАПИСЫВАЕТ ДАННЫЕ, ПОЛУЧАЕМЫЕ В FPS2H_TAVR_PROCESSOR.
USE PDE_TP ! МОДУЛЬ PDE_TP - СОДЕРЖИТ ПОДПРОГРАММЫ ДЛЯ РЕШЕНИЯ Д.У.Ч.П ДЛЯ FPS2H_TAVR_PROCESSOR
IMPLICIT NONE
! ВЫЗОВ ПОДПРОГРАММЫ ДЛЯ СЧИТЫВАНИЯ ИСХОДНЫХ ДАННЫХ (СЧИТЫВАЮТСЯ 17 ИЗ INDANO И 8 ВЫЧИСЛЯЮТСЯ)
CALL READ_VAR_TP(H, H1, H2, B1, B2, E01, E02, NU1, NU2, F, EPS, NX, DX, NX1, NX2, NY1, NY2, &
AX1, BX1, AY1, BY1, AX2, BX2, AY2, BY2)
! СОЗДАНИЕ ФАЙЛА И ЗАПИСЬ СПИСКА ИСХОДНЫХ ДАННЫХ И ИХ ЗНАЧЕНИЙ
OPEN(1, FILE = 'INDANO_TP_TEST.TXT'); WRITE(1,INDANO_TP); CLOSE(1)
!********************************************************************
! ВЫДИЛЕНИЕ ПАМЯТИ ПОД ДИНАМИЧЕСКИЕ МАССИВЫ ДАННЫХ
ALLOCATE(VNX(KLAYER), VNY(KLAYER), VE(KLAYER), VAX(KLAYER), VBX(KLAYER), VAY(KLAYER), VBY(KLAYER))
!********************************************************************
! ОПРЕДЕЛЕНИЕ РАЗМЕРНОСТИ UU ОТ КОЛИЧЕСТВА СЛОЁВ И ЕГО ИНИЦИАЛИЗАЦИЯ (ТОЛЬКО ДО 2 СЛОЁВ) ???
SELECT CASE(KLAYER)
CASE(1)
! МАССИВ МОДУЛЕЙ УПРУГОСТИ СЛОЁВ
VE(1) = E01
! НЕ ХВАТАЕТ ПЕРЕМЕННЫХ ИЗ ВВОДА ДАННЫХ, МАССИВЫ КОЛИЧЕСТВА СЕЧЕНИЙ ПО ОСЯМ
VNX(1) = NX1; VNY(1) = NY1
! МАССИВЫ КООРДИНАТ УГЛОВЫХ ТОЧЕК СЕЧЕНИЯ (ОСЬ X - ВНИЗ, Y - ВПРАВО)
VAX(1) = AX1; VBX(1) = BX1; VAY(1) = AY1; VBY(1) = BY1
! БЕЗ УЧЕТА УГЛОВЫХ ТОЧЕК
DIM = VNX(1) * VNY(1) - 4
! ПОКА ОДИН СЛОЙ
CASE(2)
! МАССИВ МОДУЛЕЙ УПРУГОСТИ СЛОЁВ
VE(1) = E01; VE(2) = E02
! НЕ ХВАТАЕТ ПЕРЕМЕННЫХ ИЗ ВВОДА ДАННЫХ, МАССИВЫ КОЛИЧЕСТВА СЕЧЕНИЙ ПО ОСЯМ
VNX(1) = NX1; VNY(1) = NY1; VNX(2) = NX2; VNY(2) = NY2
! МАССИВЫ КООРДИНАТ УГЛОВЫХ ТОЧЕК СЕЧЕНИЯ (ОСЬ X - ВНИЗ, Y - ВПРАВО)
VAX(1) = AX1; VBX(1) = BX1; VAY(1) = AY1; VBY(1) = BY1
VAX(2) = AX2; VBX(2) = BX2; VAY(2) = AY2; VBY(2) = BY2
IF(B1 >= B2) DIM = VNX(1) * VNY(1) + (VNX(2) - 1) * VNY(2)
IF(B1 < B2) DIM = (VNX(1) - 1) * VNY(1) + VNX(2) * VNY(2)
END SELECT
ALLOCATE(U(DIM))
! ПОКА ИСПОЛЬЗУЕТСЯ В МЕНЮ ВВОДА ДАННЫХ КВАДРАТНАЯ СЕТКА
SGX = DX; SGY = DX
!********************************************************************
! TIP - ТИП РЕШАЕМОЙ ЗАДАЧИ (1 - ДИРИХЛЕ, 2 - НЕЙМАНА)
ALLOCATE(TIP(4, KLAYER))
TIP(1, KLAYER) = 1
TIP(2, KLAYER) = 1
TIP(3, KLAYER) = 1
TIP(4, KLAYER) = 1
!********************************************************************
CALL PDE(KLAYER, TIP, VNX, VNY, SGX, SGY, VE, VAX, VBX, VAY, VBY, DIM, U)
...
! МОДУЛЬ PDE_TP - СОДЕРЖИТ ПОДПРОГРАММУ ДЛЯ РЕШЕНИЯ Д.У.Ч.П ДЛЯ FPS2H_TAVR_PROCESSOR
MODULE PDE_TP
IMPLICIT NONE
CONTAINS
! PЕШАЕТ УРАВНЕНИЕ ПУАССОНА (d2U/dX2+d2U/dY2=F(X,Y)), МЕТОДОМ КОНЕЧНО-РАЗНОСТНОЙ АПРОКСИМАЦИИ
SUBROUTINE PDE(PKLAYER, PTIP, PVNX, PVNY, PSGX, PSGY, PVE, PVAX, PVBX, PVAY, PVBY, PDIM, PDEU)
INTEGER(4), INTENT(IN) :: PKLAYER, PVNX(PKLAYER), PVNY(PKLAYER), PDIM
!--------------------------------------------------------------------
! PTIP - ТИП РЕШАЕМОЙ ЗАДАЧИ (1 - ДИРИХЛЕ, 2 - НЕЙМАНА)
INTEGER(4), INTENT(IN) :: PTIP(4, PKLAYER)
!--------------------------------------------------------------------
! STEP GRID X, STEP GRID Y - ШАГ СЕТКИ ПО ОСЯМ Х И Y, МАССИВ МОДУЛЕЙ УПРУГОСТИ СЛОЁВ
REAL(KIND(1E0)), INTENT(IN) :: PSGX, PSGY, PVE(PKLAYER)
! МАССИВЫ КООРДИНАТ УГЛОВЫХ ТОЧЕК СЕЧЕНИЯ ДЛЯ КАЖДОГО ИЗ СЛОЁВ
REAL(KIND(1E0)), INTENT(IN) :: PVAX(PKLAYER), PVBX(PKLAYER), PVAY(PKLAYER), PVBY(PKLAYER)
REAL(KIND(1E0)), INTENT(OUT) :: PDEU(PDIM)
INTERFACE
REAL(KIND(1E0)) FUNCTION PRHS(X, Y)
REAL(KIND(1E0)), INTENT(IN) :: X, Y
END FUNCTION
REAL(KIND(1E0)) FUNCTION BRHS(ISIDE, X, Y)
INTEGER, INTENT(IN) :: ISIDE
REAL(KIND(1E0)), INTENT(IN) :: X, Y
END FUNCTION
REAL(KIND(1E0)) FUNCTION BRHS1(ISIDE, X, Y)
INTEGER, INTENT(IN) :: ISIDE
REAL(KIND(1E0)), INTENT(IN) :: X, Y
END FUNCTION
END INTERFACE
REAL(KIND(1E0)) :: X, Y
REAL(8) :: DET_A = 1.0
! КОЭФФИЦИЕНТЫ ФОРМИРОВАНИЯ МАССИВОВ PDE_A И PDE_B
REAL(KIND(1E0)) :: MDK_YX, MDK_XY, ADK, SDK1, SDK2, WDK, DKYX, DKXY, FK
! ИСПОЛЬЗУЯ ДИНАМИЧЕСКИЕ МАССИВЫ
! REAL(KIND(1E0)), ALLOCATABLE :: PDE_A(:,

, PDE_B(:), L_U(:,

! ИСПОЛЬЗУЯ СТАТИЧЕСКИЕ МАССИВЫ
REAL(KIND(1E0)) :: PDE_A(PDIM, PDIM), PDE_B(PDIM), L_U(PDIM, PDIM)
! МАССИВЫ УПРАВЛЕНИЯ ТИПОМ СЕЧЕНИЯ И РАЗМЕРНОСТИ СЛОЁВ !И НУМЕРАЦИИ СТОРОН
INTEGER(4) :: TYPSEC(PKLAYER), DIML(0 : PKLAYER)
! INTEGER(4), PARAMETER :: IPATH = 2 !, NLCA = 2, NUCA = 2
INTEGER(4) :: I, J, K, START, ASPOTL, MIDDLE, ASPOTR, FINISH, STEP
! ВЫЧИСЛЯЕМ ГЛАВНЫЕ ДИАГОНАЛЬНЫЕ КОЭФФИЦИЕНТЫ
MDK_YX = PSGY / PSGX ! ВЕРХНЯЯ ИЛИ НИЖНЯЯ СТОРОНА
MDK_XY = PSGX / PSGY ! БОКОВАЯ СТОРОНА
ADK = PSGY / PSGX + PSGX / PSGY ! УГЛОВЫЕ ТОЧКИ
SDK1 = PSGY / PSGX + 2 * PSGX / PSGY ! ВЕРХНЯЯ ИЛИ НИЖНЯЯ СТОРОНА
SDK2 = 2 * PSGY / PSGX + PSGX / PSGY ! БОКОВАЯ СТОРОНА
WDK = 2 * (PSGY / PSGX + PSGX / PSGY) ! ВНУТРЕННИЕ ТОЧКИ
! ВЫЧИСЛЯЕМ ОСТАЛЬНЫЕ КОЭФИЦИЕНТЫ
.....
PS. тут правда вместо второго измерения динамических массивов смайлики появились.