[f2py] user fortran type declaration

Xavier Barthelemy <[email protected]> Thu, 2 Sep 2010 13:01:04 +1000
Newsgroups gmane.comp.python.f2py.user
Message-ID <[email protected]>
Hello every one

I have been using f2py since a few month, and I want to congrat Pearu
Peterson for this. After using swig, f2py is way more simple and it
work very well.


I have wrap different subroutine and it works well in python, thanks
to f2py. My problem is I can't reach certain calculus precision in
standard fortran. So I need to use user defined type.
I have understood that f2py does not handle user-defined variable
type, and i think it doesn't do that in sense of I can't get this kind
of variable in or out.
But i would like to use user define type as inner variable of my
fortran program.

I'll explain myself with an example:

this is my fortran code:

       SUBROUTINE InteriorField()
       use mpmodule
       implicit none
       integer:: NpointsIn
       parameter(NpointsIn=5)
       type (mp_real) :: FIELD(11,NpointsIn)
!       call mpinit(100)

       FIELD(1,1)='1.'
       print*,FIELD(1,1)
       return
       end


the mpmodule comes from the arprec (arbitrary precision package) that
you can find here: http://crd.lbl.gov/~dhbailey/mpdist/
It define user type and overload standard operator so you can make
multiplication with as much significative digits as you wish, and you
don't need to stick to the classic double precision.
I would like to use this in my inner calculation and I can have an
output in double precision on the result of my calculus.

I wrap it using
f2py --fcompiler=intelem -c -m Test Test.f  --opt=" -I<APPRECLIBDIR>
-larprecmod -larprec -larprec_f_main -mp" --no-lower
where  libarprecmod.a  libarprec. libarprec_f_main.a are my module
It compiles, but when  I type in python

import Test
I have the following answer:ImportError: ./Test.so: undefined symbol:
mprealmod_mp_mpeq_
Looks like the compiler recongnize everything but something is wrong for python

then When I look at the ARPREC documentation, it says:
f -> o : ifort Test-f -c Test.o -I <APPRECLIBDIR> -mp
o -> exec: gcc -o test Test.o -L<ARPRECLIBDIR> -l<ARPRECLIBS>
-L<BunchOfLibDir> -lifport -lifcore -limf -lsvml -lm -lipgo -lirc
-lirc_s -ldl

The tests program of ARPREC are working fine.

So any one has a guess on how I can link everything together?
Thanks in advance for your answers,
Xavier