Поделиться выделяемыми массивами

У меня есть несколько размещаемых массивов, которые мне нужно разделить между некоторыми подпрограммами. Обычно я просто передаю их в качестве аргументов или, возможно, пишу все в модуле, но боюсь, что это невозможно в моей ситуации.

Я пишу только некоторые собственные подпрограммы и использую подпрограммы, предоставленные и описанные FEM-Solver. Поэтому я не могу изменить аргументы этих подпрограмм или обернуть их в модуль.

Насколько я знаю, также невозможно собрать общие блоки с массивом неизвестного размера во время компиляции.

Есть ли что-то еще, чтобы передать мои массивы?

Обновить:
На данный момент моя программная среда выглядит так:

У меня есть подпрограмма, предоставляемая FEM-программой, которая вызывается после каждого приращения, это вызывает несколько моих подпрограмм, где я вычисляю некоторые значения для каждого узла или для их подмножества.

Чтобы отобразить эти значения в пост-симуляции, я должен передать их другой подпрограмме. Эта подпрограмма вызывается FEM-решателем для каждого узла в конце приращения. Поэтому перенос моего кода на эту подпрограмму приведет к большим накладным расходам.

Моя идея состоит в том, чтобы вычислить значения один раз, сохранить значения в массиве и передать этот массив во вторую подпрограмму, где они будут записаны в базу данных вычислений.

Обновить
Некоторый псевдокод:
Предполагается из поведения программы:

 Program FEM-solver
     *magic* 
     call ENDINC(ar1,ar2)
     *something* 
     do NodeID=1,Sum_Of_Nodes
        do valueID=1,Sum_Of_User_Computed_Values !(defined in preprocessing)
           call nodeval(NodeID,valueID,Value,ar3,...,arN)
        end do
     end do
     *voodoo* 
 end program FEM-solver    

Написано и работает:

Subroutine ENDINC(ar1,ar2)
  *Computation of some node values*
  *Calling of own Subroutines, which compute more values*
  *Writing an array with results values for some/each node(s)*
   nodersltArr(NodeID,rslt)=*some Value*
end Subroutine ENDINC

Необходимо записать вычисленные значения в базу данных решений Node:

Subroutine nodeval(NodeID,valueID,Value,ar3,...,arN)  
  *called for each NodeID and valueID*
   value=noderslArr(NodeID,valueID)
end subroutine nodeval

Ответы на вопрос(3)

Ваш ответ на вопрос