Я обычно имею дело с файлом данных с несколькими блоками данных, повторяя число строк по n раз.
Это один из примеров:
9276
4900000
AA 4 4 6260 519 8350 1571 0 0 0 0 0 0 0 0.934 0.933 0.93 0.935 0 0 0 0 0 0 3.867 0.0 1.541
BB 3 3 3388 8391 6637 0 0 0 0 0 0 0 0 0.939 0.565 0.361 0 0 0 0 0 0 0 1.913 2.0 -0.732
CC 3 2 241 694 0 0 0 0 0 0 0 0 0 0.933 0.941 0 0 0 0 0 0 0 0 1.888 2.0 -0.834
...
Верхняя строка - это общее количество строк для блока данных, вторая строка - другое значение, эти две строки являются заголовком. Затем следующие 9276 строк являются данными. Один блок данных имеет 9278 строк, а затем тот же формат блока данных повторяется с 9279 строк для числа m блока данных. Обычно я становлюсь действительно огромным.
Пока что я использую что-то вроде этого в формате f77:
program test
parameter (nn = 20000)
integer,dimension(nn,nn) :: conn
integer,dimension(nn) :: aaa,bbb,ccc,ddd,eee
real,dimension(nn) :: fff,ggg,hhh,iii,zzz
real,dimension(nn,nn) :: bos
character*2,dimension(nn) :: elem
open (2, file = 'input.txt', status = 'old')
iframe=0
100 continue
iframe=iframe+1
read (2,15, err = 50,end= 50) nat2
read (2,15) framenum2
do i=1,nat2
read (2,42) elem(i),aaa(i),ccc(i),(conn(i,j),j=1,10),ddd(i),(bos(i,j),j=1,10),fff(i),ggg(i),zzz(i)
enddo
do something using do and if loops
write (120,15) nat2
write (120,15) framenum2
do i=1,nat
write (120,75) elem(i),test(i),result(i)
write (121,76) iframe, zzz2, iii2
enddo
goto 100
Мне не нужно писать форматы, они все правильно отформатированы. Как вы могли видеть, мой скрипт считывает данные для каждого блока данных, что-то делает, печатает их, а затем go до следующего блока данных.
Я так долго изучал фортран go, и я не особо заботился о своем стиле и не думал, что должен изучать новый стиль. Но в эти дни я чувствую, что должен быть более знаком с более новым стилем Fortran. Я чувствую, что уже слишком поздно изучать новый язык (в основном из-за нехватки времени), поэтому я думаю, что лучше придерживаться фортрана ...
В любом случае, я хочу изменить это на стиль f90 , Но я не уверен, с чего мне начинать. Как я могу улучшить этот стиль объявления, открытия, чтения и записи, чтобы быть более эффективным и быстрым? Любое предложение о тех? Я предпочитаю стиль f90, но если есть какой-нибудь более новый способ Fortran, мне будет интересно (если он бесплатен и компилируется с F90 или Intel Fortran)