- 积分
- 2901
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-4-30
- 最后登录
- 1970-1-1
|
NCL
系统平台: |
|
问题截图: |
- |
问题概况: |
ncl中调用fortran程序生成so文件后ncl脚本调用出错 |
我看过提问的智慧: |
看过 |
自己思考时长(天): |
3 |
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
用fortran写了一个读取micaps第四类格式的程序(fortran中可以使用),准备在ncl中调用,成功生成了so文件,最后一步ncl脚本中调用时报错(已排除平台问题,ncl官网中的实例能够运行成功)报错如下:
warning:Could not find Init() in external file /home/jxlc/ncl/ncl-fortran/readm490.so, file not loaded
warning:error at line 2 in file test.ncl
ncl脚本第二行:external EX01 "./readm490.so"附上fortran程序,stub文件和ncl脚本
fortran程序:
subroutine readm4(filename,x,y,&
r1h,diamond,num,title,yy,&
mm,dd,starthr,ybhr,level,xspace,yspace,&
startlon,endlon,startlat,endlat,xnum,ynum,&
cint,cstart,cend,smooth,jiacu)
character(16) filename
integer x,y,num,yy,mm,dd,starthr,ybhr,level,xnum,ynum
integer i,j,k,m
character(8) diamond
character(40) title
real r1h(x,y),xspace,yspace,startlon,endlon,startlat,endlat,cint,cstart,cend,smooth,jiacu
open(10,file=filename,status='old',ERR=111)
read(10,*) diamond,num,title
read(10,*) yy,mm,dd,starthr,ybhr,level,xspace,yspace,startlon,endlon,startlat,endlat,xnum,ynum
read(10,*) cint,cstart,cend,smooth,jiacu
do i=1,y
read(10,*) (r1h(j,i),j=1,x)
enddo
close(10)
111 continue
return
end
相应的readm490.stub文件内容:
C NCLFORTSTART
subroutine readm4(filename,x,y,&
r1h,diamond,num,title,yy,&
mm,dd,starthr,ybhr,level,xspace,yspace,&
startlon,endlon,startlat,endlat,xnum,ynum,&
cint,cstart,cend,smooth,jiacu)
character(16) filename
integer x,y,num,yy,mm,dd,starthr,ybhr,level,xnum,ynum
integer i,j,k,m
character(8) diamond
character(40) title
real r1h(x,y),xspace,yspace,startlon,endlon,startlat,endlat,cint,cstart,cend,smooth,jiacu
C NCLEND
ncl脚本内容如下:
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
external READ "/home/jxlc/ncl/ncl-fortran/readm490.so"
begin
;
; Calculate three values of a quadraticequation
;
filename="16070108.001"
x=351
y=301
r1h=new((/x,y/),float)
diamond="20160808"
num1=1
yy=1
mm=1
dd=1
starthr=1
ybhr=1
level=1
xnum=1
ynum=1
title="20160808"
xspace=0.1
yspace=0.1
startlon=0.1
endlon=0.1
startlat=0.1
endlat=0.1
cint=0.1
cstart=0.1
cend=0.1
smooth=0.1
jiacu=0.1
READ::readm4(filename,x,y,r1h,diamond,num1,title,yy,mm,dd,starthr,ybhr,level,xspace,yspace,startlon,endlon,startlat,endlat,xnum,ynum,cint,cstart,cend,smooth,jiacu) ; Call the NCL version of
end
东西有点乱,请大神指导
|
|