[ncl-talk] sub: Wrapit error...
Alan Brammer
abrammer at albany.edu
Mon Mar 13 09:41:16 MDT 2017
It would be substantially easier to send the actual file along with demo NCL lines to call the fortran code.
I just fixed about 6 errors related to spacing and the fact that you didn’t close the do loops or end the subroutine. These were probably copy/paste errors based on your WRAPIT -d output.
After fixing the compiler errors, I can get the code to be called and subsequently segfault cause I passed it a bunch of missing data. fortran code without copy paste errors attached. It’s not clear, to me at least, where the error actually lies.
>ncl
ncl 0> external ex1 "./dale_test.so"
ncl 1> x = new(183, float)
ncl 2> ex1::ES(x,x,x,x,x,x,x,x,x,x)
Segmentation fault (core dumped)
Also Dennis wil have meant
gcc --version
##############################
Alan Brammer,
Post-Doc Researcher
Department of Atmospheric and Environmental Sciences,
University at Albany, State University of New York, Albany, NY, 12222
abrammer at albany.edu
##############################
> On 12 Mar 2017, at 23:00, dale zuri <dalezuri at gmail.com> wrote:
>
> Hi,
>
> Please find here a program and other informations as well.
>
> Thanks in advance.
>
> C NCLFORTSTART
> subroutine ES (t,h,w,r,buio,ffmo,
> 1 xisio,fwio,dmco,dco)
> C integer tlen
> dimension t(183),h(183)
> dimension w(183),r(183)
> dimension ffmo(183),xisio(183)
> dimension fwio(183),dmco(183)
> dimension buio(183),dco(183)
> C integer indate,yr,mon,day,hr
> C character*10 timez
> C NCLEND
> C write(timez,'(i10)') indate
> C read(timez,'(i4,3i2)') yr,mon,day,hr
>
>
> call canada(t,h,w,r,buio,ffmo,xisio,
> 1 fwio,dmco,dco)
>
> return
> end
>
> cccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
> subroutine canada(t,h,w,r,buio,ffmo,xisio,
> 1 fwio,dmco,dco)
>
> dimension lmon(12), el(12), fl(12)
> dimension t(183),h(183),w(183),r(183)
> dimension tin(183),hin(183),win(183),rin(183)
> dimension ffmc(183),dmc(183),dc(183)
> 1 ,xisi(183),bui(183),fwi(183),dsr(183)
> dimension ffmo(183),dmco(183),dco(183),buio(183)
> dimension fwio(183),xisio(183)
> c data statement
> data lmon / 31,28,21,30,31,30,31,31,30,31,30,31/
> data el /6.5,7.5,9.0,12.8,13.9,13.9,12.4,10.9,9.4,8.0,7.0,
> 1 6.0/
> data fl /-1.6,-1.6,-1.6,.9,3.8,5.8,6.4,5.0,2.4,.4,-1.6,
> 1 -1.6/
> c
> c&& enter in the inital values here
> c 3 fuel moisture codes, initialize
> ffmo(1) =85.5
> dmco(1)=6.0
> dco(1)=15.0
>
> c keep track of julian day
> iday=90
> c start on april 1 and go to september 30
> do im=4,9
> do jday=1,lmon(im)
> iday = iday +1
> c move the data from the array to the variable for the calculation on a given day
> t = tin(iday)
> h = hin(iday)
> w = win(iday)
> r = rin(iday)
> c
> c convert m/s to km/hr
> c w(i,j) = w(i,j)*3.6
> c
> c FINE FUEL MOISTURE CODE
> c
> wmo = 147.2*(101-ffmo(iday))/(59.5+ffmo(iday))
> if(r(iday)>0.5) then
> ra=r(iday)-0.5
> if (ra.lt.0.1) ra = 0.1
> if(wmo.gt.150) then
> wmo= wmo+ 42.5*ra*exp(-100.0/(251-wmo))*(1.0-exp(-6.93/ra))
> 1 +0.0015*(wmo-150)*(wmo-150)*sqrt(ra)
> else
> wmo=wmo+42.5*ra*exp(-100.0/(251-wmo))*(1.0-exp(-6.93/ra))
> endif
> endif
> if (wmo.gt.250.) wmo = 250.
> ed=0.942 * h(iday)**0.679 +
> 1 (11.0*exp((h(iday)-100.0)/10.0)) +
> 1 0.18 * (21.1-t(iday)) * (1.0-1.0/exp(h(iday)*0.115))
> ew=0.618 * h(iday)**0.753 +
> 1 (10.0*exp((h(iday)-100.0)/10.0)) +
> 1 0.18 * (21.1-t(iday)) * (1.0-1.0/exp(h(iday)*0.115))
> if(wmo.lt.ed.and.wmo.lt.ew) then
> z = 0.424 * ( 1.0 - ((100.0-h(iday))/100.0)**1.7 ) +
> 1 0.0694 * sqrt(w(iday)) * (1.0 -
> 1 ((100.0-h(iday))/100.0)**8.0 )
> x = z * 0.581 * exp(0.0365*t(iday))
> wm = ew-(ew-wmo) / (10.0**x)
> elseif (wmo.gt.ed) then
> z = 0.424 * ( 1.0 - (h(iday)/100.)**1.7 ) + 0.0694 *
> 1 sqrt(w(iday)) * ( 1 - (h(iday)/100)**8.0 )
> x = z * 0.581 * exp(0.0365*t(iday))
> wm = ed + ( wmo - ed) / (10.0**x)
> else
> wm = wmo
> endif
> if (wm.lt.0.) wm = 0.0
> ffmc(iday) = 59.5 * (250.0 - wm) / (147.2 + wm)
> if (ffmc(iday).gt.101.0) ffmc(iday) = 101.0
> if (ffmc(iday).lt.0.) ffmc(iday) = 0.
> c
> c DUFF MOISTURE CODE
> c
> t1=t(iday)
> if (t(iday).lt.-1.1) t1 = -1.1
> rk = 1.894 * (t1 + 1.1) * (100.0 - h(iday)) * el(im) * 0.0001
> if(r(iday).le.1.5) then
> pr = dmco(iday)
> else
> ra = r(iday)
> rw = 0.92 * ra - 1.27
> wmi = 20.0 + 280.0 / exp(0.023 * dmco(iday))
> if(dmco(iday).le.33) then
> b = 100.0 / (0.5 + 0.3 * dmco(iday))
> elseif (dmco(iday).le.65) then
> b = 14.0 - 1.3 * log(dmco(iday))
> else
> b = 6.2 * log(dmco(iday)) - 17.2
> endif
> wmr = wmi + 1000.0 * rw / (48.77 + b * rw)
> pr = 43.43 * (5.6348 - log(wmr-20))
> endif
> if (pr.lt.0.) pr = 0.
> dmc(iday) = pr + rk
> if (dmc(iday).lt.0.) dmc(iday) = 0.
> c
> c DROUGHT CODE
>
> t2 = t(iday)
> if (t(iday).lt.-2.8) t2 = -2.81
> pe = (.36 * (t2 + 2.8) + fl(mon)) / 2.0
> if (pe.lt.0.) pe = 0.0
> c the fix for winter negative DC change
> if(r(iday).le.2.801) then
> dr = dco(iday)
> else
> ra = r(iday)
> rw = 0.83 * ra - 1.27
> smi = 800 * exp(-dco(iday) / 400)
> qr = smi + 3.937 * rw
> dr = 400 * log(800 / qr)
> if (dr.lt.0.) dr = 0.
> endif
> v = 0.36 * (t2 + 2.8) + fl(im)
> if (v.lt.0.) v = 0.
> dc(iday) = dr + v * 0.5
> if (dc(iday).lt.0.) dc(iday)=0.
> c
> c INITIAL SPREAD INDEX
> c
> fm = 147.2 * (101.0 - ffmc(iday)) / (59.5 + ffmc(iday))
> sf = 19.115 * exp(-0.1386 * fm) * (1.0 + fm**5.31 / 4.93e07)
> xisi(iday) = sf * exp(0.05039 * w(iday))
> c
> c BUILD UP INDEX
> c
> if(dmc(iday).eq.0.and.dc(iday).eq.0.) then
> bui(iday)=0
> elseif (dmc(iday).le.0.4*dc(iday)) then
> bui(iday) = 0.8 * dc(iday) * dmc(iday)
> 1 / (dmc(iday) + 0.4 * dc(iday))
> else
> bui(iday) = dmc(iday) - (1 - 0.8 * dc(iday)
> 1 / (dmc(iday) + 0.4 *
> 1 dc(iday))) * (0.92 + (0.0114 * dmc(iday))** 1.7)
> endif
> if (bui(iday).lt.0.) bui(iday) = 0.0
> c
> c FIRE WEATHER INDEX AND DSR
> c
> if(bui(iday).gt.80.) then
> bb = 0.1 * xisi(iday) *
> 1 (1000.0 / (25.0 + 108.64 / exp(0.023*bui(iday))))
> else
> bb = 0.1 * xisi(iday) * (0.626 * bui(iday)**0.809 + 2.0)
> endif
> if (bb.le.1.) then
> fwi(iday) = bb
> else
> fwi(iday) = exp(2.72 * (0.434 * log(bb))**0.647 )
> endif
> dsr(iday) = 0.0272 * fwi(iday)**1.77
> c
> ffmo(iday)=ffmc(iday)
> dmco(iday)=dmc(iday)
> dco(iday)=dc(iday)
> buio(iday)=bui(iday)
> fwio(iday)=fwi(iday)
> xisio(iday)=xisi(iday)
> c
> enddo
>
>
> uname -av
> Darwin Dale.local 16.3.0 Darwin Kernel Version 16.3.0: Thu Nov 17 20:23:58 PST 2016; root:xnu-3789.31.2~1/RELEASE_X86_64 x86_64
> ncl -V
>
> 6.3.0
> gxx --version
> gxx: Command not found.
>
> On Sun, Mar 12, 2017 at 6:02 AM, Dennis Shea <shea at ucar.edu <mailto:shea at ucar.edu>> wrote:
> Well, I think you would have to send the fortran code: newcffi_singlegrid.f
>
> Also, the output from the following.
>
> %> ncl -V
> %> gxx--version
> %> uname -a
>
> =====
> Further, based on a previous email, where you wrote "new to NCL", I suggest that you invest looking at NCL tutorial at:
> http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/ <http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/>
>
> Yes, it will take some time BUT you will learn NCL.
>
> Good luck
>
> On Sat, Mar 11, 2017 at 7:21 PM, dale zuri <dalezuri at gmail.com <mailto:dalezuri at gmail.com>> wrote:
> Hi,
> WRAPIT didn't give any error. But, when I run ncl code, I get below printed warning. And also printed the WRAPIT -d output.
>
> Please, help me to fix this bug?
> Thank you,
> Dale
>
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;
>
> warning:An error occurred loading the external file ./newcffi_singlegrid.so, file not loaded
> dlopen(./newcffi_singlegrid.so, 2): Symbol not found: _hin_
> Referenced from: ./newcffi_singlegrid.so
> Expected in: flat namespace
> in ./newcffi_singlegrid.so
> warning:error at line 9 in file canadafire_FWItestZeikcomp.ncl
>
> fatal:syntax error: line 43 in file canadafire_FWItestZeikcomp.ncl before or near :
> EX:
> --^
>
> fatal:error in statement
> fatal:Syntax Error in block, block not executed
>
> Output of WRAPIT -d
> COMPILING newcffi_singlegrid.f
> gfortran -m64 -fPIC -v -c -fno-second-underscore newcffi_singlegrid.f
> Using built-in specs.
> COLLECT_GCC=gfortran
> Target: x86_64-apple-darwin15.6.0
> Configured with: ../gcc-6.2.0/configure --enable-languages=c++,fortran --with-gmp=/usr/local
> Thread model: posix
> gcc version 6.2.0 (GCC)
> COLLECT_GCC_OPTIONS='-m64' '-fPIC' '-v' '-c' '-fno-second-underscore' '-mmacosx-version-min=10.12.3' '-mtune=core2'
> /usr/local/libexec/gcc/x86_64-apple-darwin15.6.0/6.2.0/f951 newcffi_singlegrid.f -ffixed-form -fPIC -quiet -dumpbase newcffi_singlegrid.f -m64 -mmacosx-version-min=10.12.3 -mtune=core2 -auxbase newcffi_singlegrid -version -fPIC -fno-second-underscore -fintrinsic-modules-path /usr/local/lib/gcc/x86_64-apple-darwin15.6.0/6.2.0/finclude -o /var/folders/60/qx8g2gvj169741yy29b3h0hm0000gn/T//ccLtfHN9.s
> GNU Fortran (GCC) version 6.2.0 (x86_64-apple-darwin15.6.0)
> compiled by GNU C version 6.2.0, GMP version 6.0.0, MPFR version 3.1.2-p10, MPC version 1.0.2, isl version none
> GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
> GNU Fortran2008 (GCC) version 6.2.0 (x86_64-apple-darwin15.6.0)
> compiled by GNU C version 6.2.0, GMP version 6.0.0, MPFR version 3.1.2-p10, MPC version 1.0.2, isl version none
> GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
> COLLECT_GCC_OPTIONS='-m64' '-fPIC' '-v' '-c' '-fno-second-underscore' '-mmacosx-version-min=10.12.3' '-mtune=core2'
> as -arch x86_64 -force_cpusubtype_ALL -o newcffi_singlegrid.o /var/folders/60/qx8g2gvj169741yy29b3h0hm0000gn/T//ccLtfHN9.s
> COMPILER_PATH=/usr/local/libexec/gcc/x86_64-apple-darwin15.6.0/6.2.0/:/usr/local/libexec/gcc/x86_64-apple-darwin15.6.0/6.2.0/:/usr/local/libexec/gcc/x86_64-apple-darwin15.6.0/:/usr/local/lib/gcc/x86_64-apple-darwin15.6.0/6.2.0/:/usr/local/lib/gcc/x86_64-apple-darwin15.6.0/
> LIBRARY_PATH=/usr/local/lib/gcc/x86_64-apple-darwin15.6.0/6.2.0/:/usr/local/lib/gcc/x86_64-apple-darwin15.6.0/6.2.0/../../../
> COLLECT_GCC_OPTIONS='-m64' '-fPIC' '-v' '-c' '-fno-second-underscore' '-mmacosx-version-min=10.12.3' '-mtune=core2'
> SHARED OBJECT NAME (SharedObj): newcffi_singlegrid.so
> LINKER SUFFIX (ld_suffix): WRAPIT.o newcffi_singlegrid.o -o newcffi_singlegrid.so
>
> LINKING
> gcc -m64 -bundle -flat_namespace -undefined suppress WRAPIT.o newcffi_singlegrid.o -o newcffi_singlegrid.so -lgfortran
> END WRAPIT
>
>
> Thank you
>
>
>
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu <mailto:ncl-talk at ucar.edu>
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk <http://mailman.ucar.edu/mailman/listinfo/ncl-talk>
>
>
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170313/4d1435df/attachment.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dale_test.f
Type: application/octet-stream
Size: 5875 bytes
Desc: not available
Url : http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170313/4d1435df/attachment.obj
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170313/4d1435df/attachment-0001.html
More information about the ncl-talk
mailing list