SUBROUTINE GRPH3D(ZV,SX,DX,SY,DY,MX,NX,MY,NY,IAX) DIMENSION ZV(NX,NY) COMMON/C3D/ZU(200),AA,BB,CC,HDYN,IN LOGICAL READY CALL COM3D(ZV,SX,DX,SY,DY,MX,NX,MY,NY,IAX,B,C,F,HDY,XM,YM) M=NX-MX M1=M-1 N=200/M N1=N*M1 HDYN=HDY/FLOAT(N) Y=ZV(MX,MY)+B CALL POINT(C,Y) I=MX IN=0 DO 123 I1=1,M1 I=I+1 X2=I1*HDY+C X1=X2-HDY X3=X2+HDY CALL QUADFI(X1,ZV(I-1,MY)+B,X2,ZV(I,MY)+B,X3,ZV(I+1,MY)+B, 1AA,BB,CC) DO 123 I2=1,N 123 CALL CJOIN(C) DO 124 I2=1,N 124 CALL CJOIN(C) IMY=MY+1 DO 150 J=IMY,NY D=(J-MY)*HDY A=B+D D=C+D Y=A+ZV(MX,J) CALL POINT(D,Y) DO 100 IN=1,N1 100 ZU(IN)=ZU(IN+N) READY=Y.GE.ZU(1) I=MX IN=0 DO 149 I1=1,M1 I=I+1 X2=I1*HDY+D X1=X2-HDY X3=X2+HDY CALL QUADFI(X1,ZV(I-1,J)+A,X2,ZV(I,J)+A,X3,ZV(I+1,J)+A,AA,BB,CC) DO 149 I2=1,N IN=IN+1 X=IN*HDYN+D Y=AA*X*X+BB*X+CC IF(Y.LT.ZU(IN)) GOTO 147 ZU(IN)=Y IF(.NOT.READY) GOTO 145 CALL JOIN(X,Y) GOTO 149 145 READY=.TRUE. CALL POINT(X,Y) GOTO 149 147 READY=.FALSE. 149 CONTINUE IF(.NOT.READY) CALL POINT(X,Y) DO 150 I2=1,N CALL CJOIN(D) 150 CONTINUE RETURN END SUBROUTINE CJOIN(C) COMMON/C3D/ZU(200),AA,BB,CC,HDYN,IN IN=IN+1 X=IN*HDYN+C Y=AA*X*X+BB*X+CC ZU(IN)=Y CALL JOIN(X,Y) RETURN END SUBROUTINE QUADFI(X1,Y1,X2,Y2,X3,Y3,A,B,C) T1=X3-X2 T2=X1-X3 T3=X2-X1 T4=-T1*(X2+X3) T5=-T2*(X3+X1) T6=-T3*(X1+X2) D=1.0/(X1*T4+X2*T5+X3*T6) A=D*(Y1*T1+Y2*T2+Y3*T3) B=D*(Y1*T4+Y2*T5+Y3*T6) C=D*(Y1*X2*X3*T1+Y2*X1*X3*T2+Y3*X1*X2*T3) RETURN END