1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
SUBROUTINE MBMODE(INPUT,OUT,ICOR,NCOR,Z,NI,ND,XD,YD,IS,CR)
C
C MBMODE BUILDS THE MODE LIKE DATA ON OUT FROM SURFACE SPLINE INTER
C
DIMENSION Z(1),XD(1),YD(1),NAME(2)
DATA NAME /4HMBMO,4HDE /
NNI = NI*2
NND = ND*2
IF(ICOR+NNI+NND.GT.NCOR) CALL MESAGE(-8,0,NAME)
CALL FREAD(INPUT,Z(ICOR),NNI,0)
IDP = ICOR + NNI
L = 0
DO 10 I=1,ND
Z(IDP+L) = XD(I)
Z(IDP+L+1) = YD(I)
L = L+2
10 CONTINUE
ICC = IDP+L
NCORE = NCOR-ICC
C
C CALL SSPLIN TO INTERPOLATE
C
CALL SSPLIN(NI,Z(ICOR),ND,Z(IDP),0,0,1,0,0.0,Z(ICC),NCORE,IS)
IF(IS.EQ.2) GO TO 1000
C
C REORDER INTO MACH BOX ORDER
C
M = IDP+ND
ICC = ICC-1
DO 30 I=1,NI
L = 0
DO 20 J=1,NND,2
Z(IDP+L) = Z(ICC+J)
Z(M+L) = Z(ICC+J+1) * CR
L = L+1
20 CONTINUE
CALL WRITE(OUT,Z(IDP),NND,0)
ICC = ICC + NND
30 CONTINUE
1000 RETURN
END
|