безумное количество строк продолжения в фортране (ifort) - PullRequest
1 голос
/ 17 ноября 2010

очевидно, существует ограничение на количество разрешенных строк продолжения в компиляторах Фортрана. У меня есть временный патологический случай (созданный для целей быстрого тестирования), когда мне требуется инициализировать огромный массив без открытия файлов или каких-либо хитростей, просто добавить данные как литералы. Массив довольно большой (360000 записей).

Как установить неограниченное ограничение компилятора или какую альтернативную стратегию можно использовать для размещения инициализации этого массива?

Ответы [ 3 ]

3 голосов
/ 17 ноября 2010

Вы можете назначать их пакетами, используя неявные циклы DO, вплоть до предела продолжения, установленного вашим компилятором:

REAL :: xarray(360000)

DATA (xarray(i) i=1,100) /1.0, 2.0, 3.0, 4.0, 5.0, 6.0, &
    7.0, 8.0, &
...
    98.0, 99.0, 100.0 /

 DATA (xarray(i) i=101,200) /101.0, 102.0, 103.0, 104.0, 105.0, 106.0, &
    107.0, 108.0, &
...
    198.0, 199.0, 200.0 /

Я видел это во многих научных кодах Фортрана.

1 голос
/ 17 ноября 2010

Я не знаю ни о каких настройках компилятора для неограниченного количества строк продолжения, но я бы предложил следующие варианты:

  • присваивать каждое значение в одной строке
  • положить значения в файл и прочитать его:)
  • вызов функции C для заполнения вашего массива фортранов
0 голосов
/ 17 ноября 2010

Напишите некоторый код для создания ваших исходных файлов с данными из текстового файла. Разделите назначения на строки или что-то, чтобы избежать создания одного огромного оператора для инициализации массива одним махом. Помните, что код, который генерирует код, может быть довольно гибким.

...