У меня есть следующий код, который пытается прочитать значения температуры из двоичного файла. Я считаю, что это двухмерное, но я не уверен. И я не знаю точных размеров. Ошибка, которую я получаю, говорит: слишком мало индексов указано для массива temp.Ошибка: слишком мало подстрочных индексов для массива
INTEGER :: i, j
REAL, DIMENSION(:,:), ALLOCATABLE :: temp
OPEN(UNIT=8, FILE='Orbital_TB_bufr_v620.dat', IOSTAT=iostat)
READ(unit=8,REC =1, IOSTAT=iostat) temp
ALLOCATE (temp(i:j))
print *, temp
CLOSE(8)
Я просто хочу прочитать все значения из файла.
Ваш IO не будет работать так, но ошибка, которую вы получаете, - это выражение allocate. Вы определяете temp как двумерный, но выделяете его как одномерный. Чтобы выделить двумерный массив, вам нужно сделать что-то вроде 'allocate (temp (i, j))'. – haraldkl
Проверьте, как вы выделяете свой массив, вам нужно предоставить два расширения, потому что у вас есть 2D-массив, вы поставляете диапазон. Ваш диапазон основан на не инициализированных переменных 'i' и' j'. Вы должны выделить свой массив, прежде чем использовать его в инструкции чтения, а не после чтения. Для чтения вы должны иметь представление о том, как ваши данные были записаны в файл, прежде чем пытаться его прочитать. Первое, что вы не открываете файл как файл прямого доступа, и пытаетесь прочитать его как файл прямого доступа. Вам нужно предоставить 'recl' при открытии, чтобы прочитать его как прямой доступ. – innoSPG
У вас есть доступ к современному компилятору (2008+)? Если это так, используйте идентификатор 'newunit' вместо идентификаторов файлового блока жесткого кодирования. – jlokimlin