Есть ли способ прочитать части файла в Фортран? - PullRequest
0 голосов
/ 16 марта 2020

Я хотел бы прочитать часть файла данных в зависимости от того, что появляется. Например, в приведенном ниже примере файла я хотел бы прочитать файл, и каждый раз, когда в строке "OW", код должен go перейти к следующей строке и сохранить эти три числа в массиве. Как я могу это реализовать?

amber                                                                           
         0         2        18
timestep       100        18         0         2    0.001000
   25.20       0.000       0.000    
   0.000       25.20       0.000    
   0.000       0.000       25.20    
OW               1   15.999400   -0.847600
 -8.3620E+00  1.0724E+01  7.9568E+00
HW               2    1.007900    0.423800
 -7.8947E+00  1.0963E+01  8.7573E+00

1 Ответ

2 голосов
/ 16 марта 2020

Это просто набросок того, что я предложил в своем комментарии: «Вы можете прочитать файл строка за строкой в ​​строку и затем действовать в соответствии с содержимым строки.»

logical :: read_numbers
character(255) :: line

read_numbers = .false.

do

  read(unit,'(a)') line

  if (read_numbers) then
    read(line,*) array
    read_numbers = .false.
  end if

  read_numbers = (line(1:2)=='OW')

end do

Это будет установите read_numbers в значение true, когда оно встречает "OW". Затем он будет читать цифры в следующем проходе. При необходимости добавьте обработку ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...