SUBROUTINE VISTR (Z1,S1,S2,S3,Z2,NX,MX,NY,MY,US,VS,VD,L,IS,PL) C [TRIPLE SURFACE] C US,VS TOTAL SHEARS IN U AND V DIRECTIONS C VD VERTICAL DISPLACEMENT BETWEEN FUNCION SEGMENTS C L DIRECTION OF VIEW (1=WEST, -1=EAST) C IS SEPARATION OPTION (1=YES, -1=NO) C PL PEN MOVEMENT SUBROUTINE C [16-MAY-74] EXTERNAL PL DIMENSION S1(1),S2(1),S3(1) DIMENSION G1(275),G2(275),G3(275),H1(275),H2(275),H3(275) DIMENSION U1(275),U2(275),U3(275),F1(275),F2(275),F3(275) DIMENSION X1(275),X2(275),X3(275) DIMENSION B1(275),T1(275),B2(275),T2(275),B3(275),T3(275) DIMENSION U(275),V1(275),V2(275),V3(275) DATA M,MK/1,275/ IX(J,I)=(I-1)*MX+J SC(Z)=ZS*(Z-Z1) N1=0 N2=0 N3=0 N=L*M DD=2.0*VD EF=1.0-2.0*VD EL=FLOAT(L) EM=FLOAT(M) TE=0.5*(EL+1.0) ZS=(1.0-VS)/(Z2-Z1) DUI=-(EL*US)/FLOAT(MY-1) DUJ=(1.0-US)/FLOAT(MX-1) DVI=VS/FLOAT(MY-1) I0=(NY+1-M*(NY-3))/2 J0=(NX+1-L*(NX-1))/2 K0=((MK+1)*(1-N))/2 10 K=K0 I=MAX0(MIN0(I0,NY+1),0) J=J0 EU=TE*US+DUI*FLOAT(I-1)+DUJ*FLOAT(J-1) VE= DVI*FLOAT(I-1) 20 IF ((I.LT.1).OR.(I.GT.NY)) GO TO 22 K=MAX0(MIN0(K+N,MK),1) U(K)=EU V1(K)=VE+SC(S1(IX(J,I))) V2(K)=VE+SC(S2(IX(J,I))) V3(K)=VE+SC(S3(IX(J,I))) 22 I=I-M EU=EU-DUI VE=VE-EM*DVI IF ((I.LT.1).OR.(I.GT.NY)) GO TO 30 K=MAX0(MIN0(K+N,MK),1) U(K)=EU V1(K)=VE+SC(S1(IX(J,I))) V2(K)=VE+SC(S2(IX(J,I))) V3(K)=VE+SC(S3(IX(J,I))) J=J+L EU=EU+EL*DUJ IF ((J.GE.1).AND.(J.LE.NX)) GO TO 20 30 IF (L.GT.0) GO TO 32 NK=MK-K+1 DO 31 KK=1,NK II=K+KK-1 U(KK)=U(II) V1(KK)=V1(II) V2(KK)=V2(II) V3(KK)=V3(II) 31 II=II+1 K=NK 32 CALL VISRB (G1,H1,NG1,MK,U,V1,K,U,V2,K,1.0) CALL VISRB (U3,F3,NU3,MK,G1,H1,NG1,U,V3,K,1.0) CALL VISRB (G1,H1,NG1,MK,U,V2,K,U,V3,K,-1.0) CALL VISRB (G2,H2,NG2,MK,U,V3,K,U,V1,K,-1.0) CALL VISRB (G3,H3,NG3,MK,U,V1,K,U,V2,K,-1.0) CALL VISRB (U1,F1,NU1,MK,G1,H1,NG1,G2,H2,NG2,1.0) CALL VISRB (U2,F2,NU2,MK,U1,F1,NU1,G3,H3,NG3,1.0) CALL VISRB (U1,F1,NU1,MK,G3,H3,NG3,U,V3,K,-1.0) IF (IS.LT.0) GO TO 40 DO 36 KK=1,NU1 36 F1(KK)=EF*F1(KK) DO 37 KK=1,NU2 37 F2(KK)=EF*F2(KK)+VD DO 38 KK=1,NU3 38 F3(KK)=EF*F3(KK)+DD 40 CALL VISRB (G1,H1,NG1,MK,U1,F1,NU1,X2,B2,N2,-1.0) CALL VISHH (X1,B1,T1,N1,G1,H1,NG1, 1,PL) CALL VISRB (G1,H1,NG1,MK,U2,F2,NU2,X1,T1,N1, 1.0) CALL VISRB (G2,H2,NG2,MK,G1,H1,NG1,X3,B3,N3,-1.0) CALL VISHH (X2,B2,T2,N2,G2,H2,NG2,-1,PL) CALL VISRB (G1,H1,NG1,MK,U3,F3,NU3,X2,T2,N2, 1.0) CALL VISHH (X3,B3,T3,N3,G1,H1,NG1, 1,PL) I0=I0+M IF ((I0.GE.0).AND.(I0.LE.NY+1)) GO TO 10 J0=J0+L IF ((J0.GE.1).AND.(J0.LE.NX)) GO TO 10 RETURN END