Я пишу подпрограмму DISP для ABAQUS 6.14, начиная с небольших шагов - пытаясь открыть и прочитать файл, содержащий данные смещения. До сих пор у меня есть скрипт на Фортране, который отлично работает, когда настроен как независимая программа, но падает, когда ABAQUS запускает его как подпрограмму. Рабочая версия:
PROGRAM DISP
INTEGER nnodes, IOS
PARAMETER (nnodes = 5652)
REAL A(nnodes,4)
WRITE(*,*) 'hello world'
OPEN(UNIT=11,FILE ="displaced_shape.dat",IOSTAT=IOS)
WRITE(*,*) IOS
DO ix = 1,nnodes
READ(11,*) A(ix,:)
END DO
WRITE(*,*) A(2,3)
END PROGRAM DISP
Вывод этой программы
hello world
0
5.4729998E-04
Подпрограмма:
SUBROUTINE DISP(U,KSTEP,KINC,TIME,NODE,NOEL,JDOF,COORDS)
INCLUDE 'ABA_PARAM.INC'
DIMENSION U(3),TIME(2),COORDS(3)
INTEGER nnodes, IOS
PARAMETER (nnodes = 5652)
REAL A(nnodes,4)
WRITE(*,*) 'hello world'
OPEN(UNIT=11,FILE ="displaced_shape.dat",IOSTAT=IOS)
WRITE(*,*) IOS
DO ix = 1,nnodes
READ(11,*) A(ix,:)
END DO
WRITE(*,*) A(2,3)
RETURN
END SUBROUTINE DISP
Вывод подпрограммы
hello world
0
forrtl: severe (24): end-of-file during read, unit 11
Как видите, сценарии идентичны, за исключением упаковки. Я запускаю их из той же папки, ссылаясь на тот же файл данных. Может быть, дело в версии Фортрана? Документация ABAQUS довольно расплывчата по этому вопросу.
Буду признателен за любые идеи, спасибо за вашу помощь.
Редактировать: как может быть очевидно, файл "displaced_shape.dat" имеет формат
1 0.1 0.2 0.3
2 0.1 0.2 0.3
....
5652 0.1 0.2 0.3