Правильное использование модулей, подпрограмм и функций в Фортране

Я недавно узнал об интерфейсных блоках при добавлении функции в мою программу на Фортране. Все работает красиво и аккуратно, но теперь я хочу добавить в блок интерфейса вторую функцию.

Вот мой интерфейсный блок:

interface
    function correctNeighLabel (A,i,j,k)
    integer :: correctNeighLabel
    integer, intent(in) :: i,j,k
    integer,dimension(:,:,:),intent(inout) :: A
    end function

    function correctNeighArray (B,d,e,f)
        character :: correctNeighArray
    integer, intent(in) :: d,e,f
    character, dimension(:,:,:),intent(inout) :: B
    end function
end interface

Мне кажется, что это не лучший вариант.

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

Я не очень хорошо разбирался в модулях, но, судя по тому, что я видел, это не то, что нужно использовать.

Что мне следует использовать, когда и как лучше всего это сделать?

28
задан Community 15 September 2019 в 11:38
поделиться