Re: [f2py] mixed f77/f90 code
Pearu Peterson <[email protected]> Wed, 24 Nov 2010 10:53:26 +0200
| Newsgroups | gmane.comp.python.f2py.user |
|---|---|
| Message-ID | <[email protected]> |
On 11/24/2010 10:41 AM, Jasper Werhahn wrote: > dear pearu, > > thanks a lot. i just don't understand one thing - i do of course only > call fit_gm from python. but fit_gm itself continues to call the > lmder-subroutines that actually do the fitting. how do i get this passed > on then? greetings, As I read the code, fit_gm uses gMorse as a callable argument to lmder subroutines. Since Morse_mod.f90 is linked to the generated extension module then all bits are there for fit_gm. May be I should clarify that f2py builds wrappers to fortran subroutines, f2py does not convert fortran codes to python. A wrapper is a lightweight C function that converts Python objects to C objects that can be passed on to Fortran subroutines. Regards, Pearu > 2010/11/24 Pearu Peterson <[email protected] > <mailto:[email protected]>> > > Hi jaspeR, > > The fcn issue that you saw is strictly speaking expected. When > generating wrappers to lmdif.f f2py needs to know the signature of > external fcn but it is neither provided nor available (not called within > the subroutine). Hence the failure. If you would provide the > signature then f2py would probably build the extension module > successfully. > > However, it seems that you don't need to wrap all these fortran > subroutines to python. Assuming that only fit_gm is needed to be called > from python, I suggest the following workflow: > > 1) create pyf file containing signatures of only those functions that > will be used within python: > > f2py -m foo -h foo.pyf fit_gM.f90 > > 1.2) optionally check foo.pyf to see if signatures needs adjustments > (specify input and output parameters using intent(in) or intent(out), > etc). See f2py users guide or f2py paper for more information. > > 2) build the extension module: > f2py -c foo.pyf *.f fit_gM.f90 Morse_mod.f90 > > 3) check what was built: > >>> import foo > >>> print foo.__doc__ > This module 'foo' is auto-generated with f2py (version:2_6882). > Functions: > x,chisqr,exit_status = fit_gm(file_name,data_length,alpha,gamma1) > . > > HTH, > Pearu > > On 11/24/2010 08:59 AM, jaspeR wrote: > > Pearu Peterson<pearu.peterson@...> writes: > > > >> > >> Hi, > >> > >> Could you send a more complete example demonstrating the problem? > >> The failure may not be related to f77 and f90 cooperation... > >> > >> Pearu > > > > Hi Pearu! > > > > thanks for replying so fast once more... can i mail it to you? i > will include a > > makefile. the code dependencies are structured in the following way: > > > > Morse_mod.f90 contains the function subroutine required for the > fit, as well as > > all the functions necessary (that is, the function, and its > partial derivatives > > after the constants i am optimizing). The main program for the > standalone > > fortran compilation is called fit_scalable_pot.f90, for the > wrapping in f2py i > > reduced that to fit_gM.f90, excluding the terminal-output-based > command > > interface. the main program (fit_scalable_pot.f90) and the > reduced subroutine > > for f2py wrapping (fit_gM.f90) call the linpack subroutines. the > dependency > > tree is: > > > > lmder1.f > > ◊--lmder.f > > ◊--dpmpar.f,enorm.f,lmpar.f,qrfac.f > > ◊--dpmpar.f,enorm.f,qrsolv.f > > > > line 175ff. lists the dependencies of lmder.f in detail, same > goes for line > > 95ff. of lmpar.f. there might be some more cross-dependencies, > they can be > > found quickly with grep dpmpar *.f, for example. they are too > interwoven to > > give the whole dependency tree. > > > > thanks a lot, again. not only is f2py a great software, the > support in this > > mailing list is also superior! all the best, > > > > jaspeR > > > > > > ps: the original f90 main program fit_scalable_pot.f90 also > allows for fit to > > some other potentials. their module files (*_mod.f90) are > included for > > completeness to allow test compiling of the main program via the > makefile. for > > testing purposes, an example file 'li' is included. > > > > > > > > > > _______________________________________________ > > f2py-users mailing list > > [email protected] <mailto:[email protected]> > > http://cens.ioc.ee/mailman/listinfo/f2py-users > > _______________________________________________ > f2py-users mailing list > [email protected] <mailto:[email protected]> > http://cens.ioc.ee/mailman/listinfo/f2py-users > > > > > -- > Dipl.-Phys. Jasper Werhahn > TU Muenchen, Physikdepartment E11 > James-Franck-Strasse > 85748 Garching > Germany > > > > _______________________________________________ > f2py-users mailing list > [email protected] > http://cens.ioc.ee/mailman/listinfo/f2py-users _______________________________________________ f2py-users mailing list [email protected] http://cens.ioc.ee/mailman/listinfo/f2py-users