Изменить форму выделенного массива в Фортране - PullRequest
2 голосов
/ 10 февраля 2012

Я выделяю (n × m) массив в Фортране, используя allocate(a(n,m)). Однако позже мне понадобится транспонирование, но уже не оригинал, поэтому я делаю a = transpose(a). Однако, похоже, что это не изменит shape(a), что по-прежнему (n × m) вместо (m × n). Есть ли способ обновить форму выделенного массива или мне нужно выделить место для другого массива, поместить туда транспонирование и затем освободить исходный массив?

1 Ответ

4 голосов
/ 10 февраля 2012

Согласно стандарту Fortran 2003, при назначении выделяемому массиву, если он не имеет правильной формы, он должен быть перераспределен автоматическиЕсли ваш компилятор пока не поддерживает это, вы должны сделать это вручную, как написали.Для Intel Fortran вы должны явно включить эту функцию.

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