Attempting to wrap a Fortran-77 subroutine using f2py but I haven't been able to understand what is causing the error

I'm attempting to wrap a Fortran-77 source member using f2py. I'm running he Anaconda distribution for Python 3.7.6 on a Mac Pro (2019) under Mac OS X Catalina (ver. 10.15.6). The version of NumPy I'm running is 1.18.3. I've attached a copy of the Fortran source code to this note (see rkfn78.for). The command I'm using to wrap this code is f2py3 -c rkfn78.for --fcompiler=gfortran --f77flags="-c -O -Wall" -m rkfn78 The output I get is captured in the file rkfn78_build_output.txt. I don't understand the cause behind the error message I get, so any advice would be welcomed. Sam Dupree.

Hello, Sam, sorry for taking so long to answer! The problem seems to be that you are using cf2py depend(in) Y, YP instead of cf2py depend(n) Y, YP <- (note that there was a spurious i in that depend expression) and that the callback FCN needs the dimension n as an argument. I was able to compile your code correctly after making these changes. If you have any further questions let me know, I hope this helps. Cheers, Melissa On Wed, Oct 14, 2020 at 4:03 AM Samuel Dupree <sdupree@speakeasy.net> wrote:

Melissa, Thank you for answering my post. I made the changes you recommended and the code compiles successfully. But I do have one question. The arrays being passed in the CALL to FCN were treated as assumed shaped arrays in the called subroutine. Are assumed shaped arrays a problem for f2py? Sam Dupree. On October/19/2020 09:16:02, Melissa Mendonça wrote:
<IYA-2009.jpg> <mmb_emblem-2.gif> Samuel H. Dupree, Jr.sdupree@speakeasy.net 10501 Rising Ridge Road Apartment 201 http://users.speakeasy.net/~sdupree/ Fredericksburg, VA 22407, USA HOME: 540-693-1240 iPhone: 215-530-8753 FAX: 866-514-9629 / "The Greatest Show on Earth" is not on Earth. It's in Space!/ ------------------------------------------------------------------------

Sure, you can use assume-shape arrays, but if you generate a signature file using $ f2py rkfn78.for -m rkfn78 -h rkfn78.pyf you can see that f2py correctly determines n to be the length of the array Y, but since YP also depends on n, that's what generated the error you saw the first time. If you change the .pyf signature file to the one attached to this message, delete your original cf2py lines in the .for file and compile it all using $ f2py -c rkfn78.pyf rkfn78.for --fcompiler=gfortran --f77flags="-c -O -Wall" -m rkfn78 then you'll have no trouble with assumed-shape arrays. Cheers, Melissa On Mon, Oct 19, 2020 at 1:03 PM Samuel Dupree <sdupree@speakeasy.net> wrote:
Melissa,
Thank you for answering my post. I made the changes you recommended and
the code compiles successfully. But I do have one question. The arrays being passed in the CALL to FCN were treated as assumed shaped arrays in the called subroutine. Are assumed shaped arrays a problem for f2py?
expression)
and that the callback FCN needs the dimension n as an argument. I was
able to compile your code correctly after making these changes.
wrote:

The documentation for f2py is not very complete, I'm afraid. I'll try to work on that front in the next few months. For now, you can find it here: https://numpy.org/doc/stable/f2py Cheers, Melissa On Mon, Oct 19, 2020 at 2:35 PM Samuel Dupree <sdupree@speakeasy.net> wrote:

Melissa, I've tried working with the documentation hosted at https://numpy.org/doc/stable/f2py/ <https://numpy.org/doc/stable/f2py/> and you're right, it is not very complete ;-). So on that front I wish you the best. Once again, thank you very much for answering my post. All the best. Sam Dupree. On October/19/2020 13:53:03, Melissa Mendonça wrote:

Hello, Sam, sorry for taking so long to answer! The problem seems to be that you are using cf2py depend(in) Y, YP instead of cf2py depend(n) Y, YP <- (note that there was a spurious i in that depend expression) and that the callback FCN needs the dimension n as an argument. I was able to compile your code correctly after making these changes. If you have any further questions let me know, I hope this helps. Cheers, Melissa On Wed, Oct 14, 2020 at 4:03 AM Samuel Dupree <sdupree@speakeasy.net> wrote:

Melissa, Thank you for answering my post. I made the changes you recommended and the code compiles successfully. But I do have one question. The arrays being passed in the CALL to FCN were treated as assumed shaped arrays in the called subroutine. Are assumed shaped arrays a problem for f2py? Sam Dupree. On October/19/2020 09:16:02, Melissa Mendonça wrote:
<IYA-2009.jpg> <mmb_emblem-2.gif> Samuel H. Dupree, Jr.sdupree@speakeasy.net 10501 Rising Ridge Road Apartment 201 http://users.speakeasy.net/~sdupree/ Fredericksburg, VA 22407, USA HOME: 540-693-1240 iPhone: 215-530-8753 FAX: 866-514-9629 / "The Greatest Show on Earth" is not on Earth. It's in Space!/ ------------------------------------------------------------------------

Sure, you can use assume-shape arrays, but if you generate a signature file using $ f2py rkfn78.for -m rkfn78 -h rkfn78.pyf you can see that f2py correctly determines n to be the length of the array Y, but since YP also depends on n, that's what generated the error you saw the first time. If you change the .pyf signature file to the one attached to this message, delete your original cf2py lines in the .for file and compile it all using $ f2py -c rkfn78.pyf rkfn78.for --fcompiler=gfortran --f77flags="-c -O -Wall" -m rkfn78 then you'll have no trouble with assumed-shape arrays. Cheers, Melissa On Mon, Oct 19, 2020 at 1:03 PM Samuel Dupree <sdupree@speakeasy.net> wrote:
Melissa,
Thank you for answering my post. I made the changes you recommended and
the code compiles successfully. But I do have one question. The arrays being passed in the CALL to FCN were treated as assumed shaped arrays in the called subroutine. Are assumed shaped arrays a problem for f2py?
expression)
and that the callback FCN needs the dimension n as an argument. I was
able to compile your code correctly after making these changes.
wrote:

The documentation for f2py is not very complete, I'm afraid. I'll try to work on that front in the next few months. For now, you can find it here: https://numpy.org/doc/stable/f2py Cheers, Melissa On Mon, Oct 19, 2020 at 2:35 PM Samuel Dupree <sdupree@speakeasy.net> wrote:

Melissa, I've tried working with the documentation hosted at https://numpy.org/doc/stable/f2py/ <https://numpy.org/doc/stable/f2py/> and you're right, it is not very complete ;-). So on that front I wish you the best. Once again, thank you very much for answering my post. All the best. Sam Dupree. On October/19/2020 13:53:03, Melissa Mendonça wrote:
participants (2)
-
Melissa Mendonça
-
Samuel Dupree