ChinaNet

标题: 运用imsl库作的二维插值 [打印本页]

作者: Evan    时间: 2015-4-8 10:57
标题: 运用imsl库作的二维插值
这是for "compaq visual fortran 6.5" 的,请用其他编译器的朋友稍作改动:

c **************************************************************************
c ** subroutine to do B-spline Interpolation **
c **************************************************************************
c ** **
c ** NOTE: link with option '/IMSL'. **
c ** **
c ** FDATA(NXDATA,NYDATA) -- input array to do interpolation **
c ** VALUE(NXVEC,NYVEC) -- output array to do interpolation **
c ** BGX,BGY -- begin value of x and y grid (in agreement with FDATA) **
c ** VGX,VGY -- begin value of x and y grid (in agreement with VALUE) **
c ** G1 -- the grid interval of x & y dimension (in agreement with FDATA)**
c ** G2 -- the grid interval of x & y dimension (in agreement with FDATA)**
c ** **
c **************************************************************************
SUBROUTINE INTERLIB(FDATA,NXDATA,NYDATA,BGX,BGY,
+ VALUE,NXVEC, NYVEC, VGX,VGY, G1,G2)
DIMENSION FDATA(NXDATA,NYDATA), VALUE(NXVEC,NYVEC)
DIMENSION BSCOEF(NXDATA,NYDATA), XDATA(NXDATA), YDATA(NYDATA)
DIMENSION XKNOT(NXDATA+NXVEC), YKNOT(NYDATA+NYVEC)
DIMENSION XVEC(NXVEC), YVEC(NYVEC)
EXTERNAL BS2GD, BS2IN, BSNAK

KXORD = 5
KYORD = 5
LDF = NXDATA

DO I=1,NXDATA
XDATA(I)=BGX+(I-1)*G1
ENDDO
DO J=1,NYDATA
YDATA(J)=BGY+(J-1)*G1
ENDDO
DO I=1, NXVEC
XVEC(I) = VGX+(I-1)*G2
ENDDO
DO I=1, NYVEC
YVEC(I) = VGY+(I-1)*G2
ENDDO
C
CALL BSNAK (NXDATA, XDATA, KXORD, XKNOT)
CALL BSNAK (NYDATA, YDATA, KYORD, YKNOT)
CALL BS2IN (NXDATA, XDATA, NYDATA, YDATA, FDATA, LDF, KXORD,
& KYORD, XKNOT, YKNOT, BSCOEF)
NXCOEF = NXDATA
NYCOEF = NYDATA
C
CALL BS2GD (0, 0, NXVEC, XVEC, NYVEC, YVEC, KXORD, KYORD, XKNOT,
& YKNOT, NXCOEF, NYCOEF, BSCOEF, VALUE, NXVEC)

RETURN
END


转自52MC





欢迎光临 ChinaNet (http://www.nuclear.net.cn/) Powered by Discuz! X3.1