Podziel przydzielone tablice

Mam kilka alokowanych tablic, które muszę udostępnić między niektórymi podprogramami. Zazwyczaj po prostu przekazuję je jako argumenty, a może zapisuję wszystko w module, ale obawiam się, że nie jest to możliwe w mojej sytuacji.

Piszę tylko kilka własnych podprogramów i używam podprogramów dostarczonych i opisanych przez FEM-Solver. Nie mogę więc zmienić argumentów tego podprogramu ani zawinąć go w moduł.

O ile mi wiadomo, w czasie kompilacji nie można również tworzyć wspólnych bloków z tablicą o nieznanym rozmiarze.

Czy jest coś innego do przekazania moim tablicom?

Aktualizacja:
W tej chwili moje środowisko programowe wygląda tak:

Mam podprogram, dostarczany przez program FEM, który jest wywoływany po każdym przyroście, to wywołuje kilka moich podprogramów, w których obliczam niektóre wartości dla każdego węzła lub podzbioru tych.

Aby wyświetlić te wartości po symulacji, muszę przekazać je do innego podprogramu. Ten podprogram jest wywoływany przez solver FEM dla każdego węzła na końcu przyrostu. Przesunięcie mojego kodu do tego podprogramu spowodowałoby wiele kosztów ogólnych.

Moim pomysłem jest jednokrotne obliczenie wartości, zapisanie wartości w tablicy i przekazanie tej tablicy do drugiego podprogramu, w którym zostaną zapisane w bazie danych obliczeń.

Aktualizacja
Niektóre pseudo-kod:
Założono z zachowania programu:

 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    

Napisane i działające:

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

Potrzebne, zapisz obliczone wartości do bazy danych rozwiązań węzłów:

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

questionAnswers(3)

yourAnswerToTheQuestion