Хотя это всего лишь метод проб и ошибок, как насчет того, чтобы поместить модуль переменных и все подпрограммы в один файл и скомпилировать его с помощью f2py (* 1)?Например ...
mytest.f90:
include "vars.f90"
include "sub1.f90"
include "sub2.f90"
vars.f90:
module vars
integer :: n = 100
end
sub1.f90:
subroutine sub1
use vars, only: n
implicit none
print *, "sub1: n = ", n
end
sub2.f90:
subroutine sub2
use vars, only: n
implicit none
print *, "sub2: n = ", n
print *, "adding 1 to n"
n = n + 1
print *, "n = ", n
end
Компиляция:
f2py -c -m mytest mytest.f90
Тест:
$ /usr/local/bin/python3
>>> import mytest
>>> mytest.vars.n
array(100, dtype=int32)
>>> mytest.sub1()
sub1: n = 100
>>> mytest.sub2()
sub2: n = 100
adding 1 to n
n = 101
>>> mytest.sub2()
sub2: n = 101
adding 1 to n
n = 102
>>> mytest.vars.n = 777
>>> mytest.sub2()
sub2: n = 777
adding 1 to n
n = 778
(* 1) В приведенном выше случае просто укажите все имена файловдля f2py кажется достаточным, например,
$ f2py -c -m mytest vars.f90 sub1.f90 sub2.f90