[SciPy-User] How to use module parameters in dimension()

Jose Amoreira ljmamoreira@gmail....
Thu Feb 16 11:49:41 CST 2012

I have a module that defines the dimension of an array as a parameter, and a 
subroutine in that module that computes and returns that array dimension:

 1 module tests
 2 implicit none
 3 integer, parameter:: n=3      !Dimension of arrays
 5 contains
 7 subroutine calc(t,z)
 8 real, intent(in):: t
 9 real, dimension(n), intent(out):: z
10    z= 2*n + t
11 end subroutine calc
12 end module tests

This simple example works fine in fortran. But when I try to turn it into a 
python module with f2py, the process fails with exit status 1, stating that: 
"In function ‘f2py_rout_tests_tests_calc’:
/tmp/tmpZZiuce/src.linux-x86_64-2.7/testsmodule.c:230:14: error: ‘n’ 
undeclared (first use in this function)"

I find it strange that this failure only occurs if array z is a dummy argument 
of the calc subroutine. Otherwise, as in the listing below, f2py doesn't 

 1 module tests
 2 implicit none
 3 integer, parameter:: n=3
 5 contains
 7 subroutine calc(t,x)
 8 real,intent(in):: t
 9 real,intent(out):: x
10    real,dimension(n):: z
11    z=0.
12    x= 2*n + t
13 end subroutine calc
14 end module tests

So, my problem: is there any way to fix this? I mean, is it possible for f2py 
to compile a fortran module containing subroutines with parametrized dimension 
dummy arguments? Or am I missing some trivial tweak here?

Jose Amoreira
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/scipy-user/attachments/20120216/418f3004/attachment.html 

More information about the SciPy-User mailing list