Позвольте мне повторить вашу проблему, просто чтобы убедиться, что я правильно ее понимаю;Пожалуйста, поправьте меня, если я ошибаюсь.
- У вас есть подпрограмма, которая вычисляет 1000 значений в двух отдельных массивах: array_1 и array_2.
- Из вашей основной программы вы хотели бы вызывать эту подпрограмму много раз, каждый раз генерируя уникальные наборы из 1000 значений.
Допустим, вы хотите вызвать вашу подпрограмму N раз, хотите ли вы сравнить N наборов чисел вне подпрограммы, т.е. в вашей основной программе, или вы хотите сделать сравнениевнутри подпрограммы?
В любом случае, я объявляю массивы примерно так:
real, dimension(N,1000) :: array_1, array_2
Если вы хотите выполнить сравнение вне подпрограммы, вы сделаете вышеуказанное объявление в основнойпрограмма.Затем вы будете вызывать подпрограмму N раз, а после каждого i-го раза копировать значения в массивы main_1 (i, *) и array_2 (i, *).При этом подпрограмма будет иметь только массивы, определенные следующим образом:
real, dimension(1000) :: array_1, array_2
Каждый раз, когда подпрограмма вызывается, она будет повторно использовать эти массивы, перезаписывая предыдущие значения.Это должно быть хорошо, если вы записали предыдущие значения в массивах main.
Если вы делаете это в f90, вы можете динамически размещать array_1 и array_2, и пусть N будет переменной длины.Кроме того, вы можете изначально выделить массивы с достаточным пространством для хранения всех возможных вызовов подпрограммы.Допустим, вы не собираетесь выполнять более 100 вызовов подпрограммы:
real array_1(100,1000), array_2(100,1000)
Извините, если это не то, что вы ищете, но, пожалуйста, уточните, если я пропустил, понял ваш вопрос.