Thanks. a follow question.
Using fortran
subroutine calc(j)
Cf2py intent(callback) pycalc
external pycalc
Cf2py integer dimension(1), intent(in,out):: j
integer j(1)
print *, 'in fortran before pycalc ', 'j=', j(1)
call pycalc(j)
print *, 'in fortran after pycalc ', ' j=', j(1)
end
in python
import foo,numpy
def pycalc(j):
print ' in pycalc ', 'j=', j
j[:] = 20*j
return
print foo.calc.__doc__
j = 1+numpy.array([2])
print foo.calc(j, pycalc)
print j
the output is
calc - Function signature:
j = calc(j,pycalc,[pycalc_extra_args])
Required arguments:
j : input rank-1 array('i') with bounds (1)
pycalc : call-back function
Optional arguments:
pycalc_extra_args := () input tuple
Return objects:
j : rank-1 array('i') with bounds (1)
Call-back functions:
def pycalc(j): return j
Required arguments:
j : input rank-1 array('i') with bounds (1)
Return objects:
j : rank-1 array('i') with bounds (1)
in fortran before pycalc j= 3
in pycalc j= [3]
in fortran after pycalc j= 60
[60]
[3]
Why is the return from foo.calc different from j?
How do I make them the same?
"return j" in pycalc doesn't change things.
Thanks again!
At 12:06 AM 11/25/2009, you wrote:
Pearu Peterson wrote:
> Hmm, regarding `intent(in, out) j`, this should work. I'll check what
> is going on..
The `intent(in, out) j` works when pycalc is defined as subroutine:
call pycalc(i, j)
instead of
pyreturn = pycalc(i, j)
Pearu
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://*mail.scipy.org/mailman/listinfo/numpy-discussion
Lawrence Livermore National Laboratory
7000 East Ave.
Livermore, Ca. 94550-9234
USA
925-422-1963
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion