Фортран - входной параметр различной формы - PullRequest
1 голос
/ 10 июля 2020

Возможно ли в fortran иметь подпрограмму, которая принимает изменяющиеся входные параметры? Я не мог найти способ ... Однако я нашел обходной путь, который заключается в изменении формы входного массива, такого как

      SUBROUTINE func(R1_TBV,...)

      DOUBLE PRECISION, dimension(:), allocatable :: R1_TBV ! type of boundary value 
      DOUBLE PRECISION R2_TBV(3,2), R3_TBV(3,2,3)

      SELECT CASE(trim(name))
      CASE('flux')
         allocate(r1_tbv(18))
         r3_tbv = reshape(r1_tbv,(/3,2,3/))
      CASE('volumic')
         allocate(r1_tbv(6))
         r2_tbv = reshape(r1_tbv,(/3,2/))
      END SELECT

, но:

  1. Мне кажется странным отсутствие других выбор для определения всех возможных массивов, потому что reshape не может работать (т.е. tbv = reshape (tbv, (/ 3,2,3 /) не работает ...)
  2. при вызове этой функции мой входной параметр R1_TBV на самом деле имеет размер (3,2,3) или (3,2), поэтому мне также нужно заранее изменить его форму для вызова функции ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...