Я недавно узнал об интерфейсных блоках при добавлении функции в мою программу на Фортране. Все работает красиво и аккуратно, но теперь я хочу добавить в блок интерфейса вторую функцию.
Вот мой интерфейсный блок:
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
Мне кажется, что это не лучший вариант.
Я изучил подпрограммы, но не уверен, что это правильное решение. То, что я делаю, относительно просто, и мне нужно передать аргументы подпрограмме, но все подпрограммы, которые я видел, а) сложны (т.е. слишком сложны для функции) и б) не принимают аргументов. Они ведут себя так, как будто манипулируют переменными, не передавая их им.
Я не очень хорошо разбирался в модулях, но, судя по тому, что я видел, это не то, что нужно использовать.
Что мне следует использовать, когда и как лучше всего это сделать?