Re: help: when wrapit comes across allocatable array

From: Mary Haley <haley_at_nyahnyahspammersnyahnyah>
Date: Sun Oct 09 2011 - 12:37:53 MDT

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:38:00 2011

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