Циклические имена переменных в фортране 90 - PullRequest
0 голосов
/ 10 сентября 2010

У меня большое количество массивов разных размеров.Однако я называю их последовательным порядком, скажем, var1, var2 и т. Д.Чтобы прочитать их, мне было бы интересно зациклить их на чем-то вроде:

do i=1,n
     read(1,*) var<i>
enddo

Конечно, поскольку массивы имеют разные измерения, я не могу просто добавить измерение и свернуть их в одинone.

У меня сложилось впечатление, что Fortran не позволяет конвертировать строки в имена переменных или что-то подобное, поэтому кто-нибудь знает, как с этим справиться?

Спасибо!

1 Ответ

1 голос
/ 10 сентября 2010

То, что вы спрашиваете, по существу будет метапрограммированием на ( очень ) традиционном скомпилированном языке. Вы не можете этого сделать.

Самое близкое, что я могу придумать для Fortran, - это получить компилятор, который поддерживает некоторые вещи OO в Fortran 2003 , и использовать его полиморфизм времени выполнения. Таким образом, вы можете создать родительский класс массива, затем подкласс для каждого отдельного набора границ массива, а затем перебрать их массив.

...