Re: help: when wrapit comes across allocatable array

From: Dennis Shea <shea_at_nyahnyahspammersnyahnyah>
Date: Sun Oct 09 2011 - 12:59:07 MDT

This question was answered. Perhaps, I forgot to cc ncl-talk

===

%> WRAPIT tropo.stub test.f90

WRAPIT Version: 110125
COMPILING test.f90
LINKING
END WRAPIT

%> ncl test.ncl

Where the original test.f90 was

subroutine tropo(nlev, alt,temp, pres, plimu, pliml, plimlex, mis,
tp,ta,tt,numtp,last_first)
   implicit none
   integer,intent(in) :: nlev
   real,intent(in),dimension(nlev) :: temp
   real,intent(in),dimension(nlev) :: pres
   real,intent(in),dimension(nlev) :: alt
   real, intent(in) :: pliml, plimu,plimlex
   integer,intent(out) :: numtp
   real,intent(in) ::mis
   real,intent(out),dimension(nlev) :: tp,tt,ta
[SNIP]

The tropo.stub was f77 syntax .....

C NCLFORTSTART
       subroutine tropo(nlev, alt,temp, pres, plimu, pliml, plimlex,
mis, tp,ta,tt,numtp,last_first)
         implicit none
         integer nlev
         real temp(nlev), pres(nlev), alt(nlev)
         real pliml, plimu,plimlex
         integer numtp
         real mis
         real tp(nlev), tt(nlev), ta(nlev)
         real last_first
C NCLEND

On 10/9/11 12:37 PM, Mary Haley wrote:
> Hi Sha,
>
> [My apologies if this question was already resolved. I didn't see any
> messages beyond this one.]
>
> It would help if you could provide all the output from WRAPIT, by
> adding the debug "-d" option to WRAPIT:
>
> WRAPIT -d mystub.f ShaFeng.f90
>
> The fact that you are getting an undefined reference to "tropo" means
> that either the name is not spelled correctly, or the f90 file is not
> being compiled such that an underscore is being appended, or the f90
> file is not being compiled successfully, or you need to link in an
> additional library that actually contains "tropo".
>
> The output from including the "-d" option should help us narrow down
> the issue.
>
> --Mary
>
>
>>>>>>> WRAPIT mystub.f ShaFeng.f90
> On Sep 30, 2011, at 1:59 PM, Sha Feng wrote:
>
>> I have tropo.so file (attached) and load it before begin command in
>> my ncl script.
>>
>> Thanks,
>> Sha
>> <tropo.so>
>>
>>
>> On Sep 30, 2011, at 3:52 PM, Dennis Shea wrote:
>>
>>> I am not sure of your error. It is looking for
>>> a file called tropo.so
>>>
>>> external TROPO "./tropo.so"
>>>
>>> http://www.ncl.ucar.edu/Document/Tools/WRAPIT.shtml
>>>
>>> On 9/30/11 12:15 PM, Sha Feng wrote:
>>>> Hi Dennis,
>>>>
>>>> After revision that just declare the argument being passed to from
>>>> ncl, files can be successfully linked. However, there are still
>>>> errors as follows when I run ncl script
>>>>
>>>> ======================
>>>> $ ncl test.ncl
>>>> .....
>>>> warning:An error occurred loading the external file ./tropo.so,
>>>> file not loaded
>>>> dlopen(./tropo.so, 2): Symbol not found: _tropo_
>>>> Referenced from: .../tropo.so
>>>> Expected in: flat namespace
>>>> in .../tropo.so
>>>> warning:error at line 12 in file test.ncl
>>>>
>>>> fatal:syntax error: line 33 in file test.ncl before or near :
>>>> TROPO:
>>>> -----------------^
>>>>
>>>> fatal:error in statement
>>>> fatal:Syntax Error in block, block not executed
>>>> fatal:error at line 40 in file test.ncl
>>>>
>>>> arctic:code shafeng$ nm tropo.so
>>>> 0000000000000ec0 s stub helpers
>>>> 0000000000000598 T _Init
>>>> U _NclGetArgValue
>>>> U _NclRegisterProc
>>>> U _NewArgs
>>>> U _NhlPError
>>>> U _SetArgTemplate
>>>> 0000000000000000 t __mh_bundle_header
>>>> U _tropo_
>>>> 00000000000007e4 T _tropo_W
>>>> U dyld_stub_binder
>>>> =====================
>>>>
>>>> Thanks,
>>>> Sha
>>>>
>>>> On Sep 29, 2011, at 11:44 PM, Dennis Shea wrote:
>>>>
>>>>> Just the arguments being pased to/from ncl
>>>>>
>>>>> On 9/29/11 8:49 PM, sfeng@marine.usf.edu wrote:
>>>>>> Dennis,
>>>>>>
>>>>>> So, as far as I know, the stub file just need to declare the
>>>>>> parameters as
>>>>>> arguments of subroutine, and it doesn't have to declare all of the
>>>>>> variables in the subroutine. Right?
>>>>>>
>>>>>> Regards,
>>>>>> Sha
>>>>>>
>>>>>>> See: http://www.ncl.ucar.edu/Document/Tools/WRAPIT.shtml
>>>>>>>
>>>>>>> You would just need one f77 style stub file [ mystub.f].
>>>>>>> Stub files should be created only for subroutines
>>>>>>> invoked from within NCL explicitly.
>>>>>>>
>>>>>>> C NCLFORTSTART
>>>>>>> subroutine cstub(nlev,temp,pres,alt,pliml,
>>>>>>> plimu,plimlex,mis
>>>>>>> + ,numtp,tp,tt,ta)
>>>>>>> implicit none
>>>>>>> integer nlev
>>>>>>> real temp(nlev), pres(nlev), alt(nlev), pliml,
>>>>>>> plimu,plimlex,mis
>>>>>>> integer numtp
>>>>>>> real tp(nlev), tt(nlev), ta(nlev)
>>>>>>> C NCLEND
>>>>>>>
>>>>>>> %> WRAPIT mystub.f ShaFeng.f90
>>>>>>>
>>>>>>> external CSTUB "./mystub.so"
>>>>>>>
>>>>>>> CSTUB::cstub(...)
>>>>>>>
>>>>>>> On 9/29/11 3:32 PM, Sha Feng wrote:
>>>>>>>> Dennis,
>>>>>>>>
>>>>>>>> My code is .f90. So I don't have to use the same declaration
>>>>>>>> with the
>>>>>>>> .f90 files in the .stub, do I?
>>>>>>>>
>>>>>>>> A snippet of my code is also follows.
>>>>>>>> !==================================
>>>>>>>> subroutine C(...)
>>>>>>>> implicit none
>>>>>>>> integer,intent(in) :: nlev
>>>>>>>> real,intent(in),dimension(nlev) :: temp
>>>>>>>> real,intent(in),dimension(nlev) :: pres
>>>>>>>> real,intent(in),dimension(nlev) :: alt
>>>>>>>> real, intent(in) :: pliml,
>>>>>>>> plimu,plimlex
>>>>>>>> integer,intent(out) :: numtp
>>>>>>>> real,intent(in) ::mis
>>>>>>>> real,intent(out),dimension(nlev) :: tp,tt,ta
>>>>>>>>
>>>>>>>> integer :: i, j, validrow
>>>>>>>> real,dimension(nlev) :: t,p,a
>>>>>>>> real, dimension(:), allocatable :: t1,p1,a1
>>>>>>>> real :: trp
>>>>>>>> ....
>>>>>>>> call A(...)
>>>>>>>> ...
>>>>>>>> call B(...)
>>>>>>>> ...
>>>>>>>> end subroutine C
>>>>>>>>
>>>>>>>> subroutine A(...)
>>>>>>>> ...
>>>>>>>> end subroutine A
>>>>>>>>
>>>>>>>> subroutine B(....)
>>>>>>>> ...
>>>>>>>> end subroutine B
>>>>>>>> !==================================
>>>>>>>>
>>>>>>>>
>>>>>>>> BTW, this subroutine includes three subroutines (three
>>>>>>>> subroutine in one
>>>>>>>> .f90 file). Should I make declaration for all of them in
>>>>>>>> the .stub file.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Sep 29, 2011, at 5:10 PM, Dennis Shea wrote:
>>>>>>>>
>>>>>>>>> It would be good to see a snippet of your f90 code.
>>>>>>>>>
>>>>>>>>> As along as the 'allocateable' is not between the
>>>>>>>>> C NCLFORTSTART
>>>>>>>>> C NCLEND
>>>>>>>>>
>>>>>>>>> Also, is the f90 code .f or .f90?
>>>>>>>>>
>>>>>>>>> C ----------Sample for .f file
>>>>>>>>> -----------------------------------
>>>>>>>>> C NCLFORTSTART
>>>>>>>>> subroutine wgt_runave (x,npts,wgt,nwgt,kopt,xmsg,ier)
>>>>>>>>> integer npts, nwgt,kopt,ier
>>>>>>>>> real x(npts), wgt(nwgt), xmsg
>>>>>>>>> C NCLEND
>>>>>>>>> integer lwork
>>>>>>>>> real, allocatable, dimension(:) :: work
>>>>>>>>>
>>>>>>>>> nhalf = nwgt/2
>>>>>>>>> lwork = npts+2*nhalf
>>>>>>>>> allocate (work(lwork), stat=ier)
>>>>>>>>>
>>>>>>>>> call wrunavx77 (x,npts,wgt,nwgt,kopt,xmsg,work,lwork,ier)
>>>>>>>>>
>>>>>>>>> deallocate (work)
>>>>>>>>>
>>>>>>>>> return ! NCL return (wrunwgt[x])
>>>>>>>>> end
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 9/29/11 12:19 PM, Sha Feng wrote:
>>>>>>>>>> Hi ncl-talker,
>>>>>>>>>>
>>>>>>>>>> How can I deal with the codes which are related with
>>>>>>>>>> allocatable
>>>>>>>>>> arrays when I use WRAPIT to combine Fortran 90 subroutines
>>>>>>>>>> with NCL
>>>>>>>>>> scripts?
>>>>>>>>>>
>>>>>>>>>> Any suggestion is very much appreciated.
>>>>>>>>>>
>>>>>>>>>> Sha
>>>>>>>>>> _______________________________________________
>>>>>>>>>> ncl-talk mailing list
>>>>>>>>>> List instructions, subscriber options, unsubscribe:
>>>>>>>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>>>>
>>
>> _______________________________________________
>> ncl-talk mailing list
>> List instructions, subscriber options, unsubscribe:
>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
> _______________________________________________
> ncl-talk mailing list
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Sun Oct 9 12:59:09 2011

This archive was generated by hypermail 2.1.8 : Mon Oct 10 2011 - 11:43:35 MDT