IMPLICIT REAL*8(A-H,O-Z) REAL*4 WIDTH,XSS,ZSS INTEGER KKAT(100) & ,JBO(2,10),NKO(30),IPT(10) REAL*8 RB(30),RR(10) REAL*8 WFF(3),XFU(3,2) REAL*8 XXFU(3,2),XC(3,600),X1(3,600),X2(3,600) & ,XOUT(3,30),BOL(30),VA(3,50) REAL*8 XCC(3),R INTEGER IK(300),JBB(2,600),IBB(600) CHARACTER*1 CMARK(61) DATA CMARK/'1','2','3','4','5','6','7','8','9','A', & 'B','C','D','E','F','G','H','I','J','K','L', & 'M','N','O','P','Q','R','S','T','U','V', & 'W','X','Y','Z','a','b','c','d','e','f', & 'g','h','i','j','k','l','m','n','o','p', & 'q','r','s','t','u','v','w','x','y','z'/ CALL TSPPRP(NAT,NKA,KKAT) READ(5,*) NBO write(6,*) NBO IF(NBO.GT.0) THEN DO 4 I=1,NBO READ(5,*) (JBO(J,I),J=1,2),BOL(I),RB(I) 4 CONTINUE CALL TSBOGN(JBO,BOL,NBO,0) JF=6 CALL TSBOVR(JF) END IF READ(5,*) (RR(I),I=1,NKA) READ(5,*) (IPT(I),I=1,NKA) READ(5,*) MA,MB,MC,KABC READ(5,*) NOUT IF(NOUT.NE.0) THEN DO 5 I=1,NOUT 5 READ(5,*) (XOUT(J,I),J=1,3),NKO(I) END IF CALL TSCSDT(MA,MB,MC,KABC,XOUT,NKO,NOUT & ,XXFU,XC,IK,NNS,JBB,IBB,NBB,X1,X2,NLINE) write(6,*) ' NNS=',NNS,' NBB=',NBB write(6,600) (IK(I),I=1,NNS) write(6,600) (IBB(I),I=1,NBB) write(6,600) ((JBB(J,I),J=1,2),I=1,NBB) 600 FORMAT(20I4) READ(5,*) SIZE,AF,BT,GM,ED,EL READ(5,*) ILF,IPOINT RMAX=0.0 DO 10 I=1,NKA IF(RMAX.LT.RR(I)) RMAX=RR(I) 10 CONTINUE DO 31 I=1,3 XFU(I,1)=XXFU(I,1)*SIZE-RMAX XFU(I,2)=XXFU(I,2)*SIZE+RMAX 31 CONTINUE WFF(1)=XFU(1,2)-XFU(1,1) WFF(2)=XFU(2,2)-XFU(2,1) WFF(3)=XFU(3,2)-XFU(3,1) CALL AYPSTR(ILF) CALL AYORIG(10.0,10.0) CALL TPERSP(XFU,WFF,AF,BT,GM,ED,EL) CALL TPTRAC(1) CALL TPCLEA DO 51 I=1,NNS JP=0 IF(IK(I).NE.0) JP=IPT(KKAT(IK(I))) IF(IK(I).NE.0) R=RR(KKAT(IK(I))) IF(IK(I).EQ.0) R=0.001 XCC(1)=XC(1,I)*SIZE XCC(2)=XC(2,I)*SIZE XCC(3)=XC(3,I)*SIZE CALL TPSETS(XCC,R,JP) IF(IK(I).NE.0.AND.IPOINT.NE.0) THEN XA=XCC(1) YA=XCC(2) ZA=XCC(3) CALL TPPOSI(XA,YA,ZA,XS,ZS) XSS=XS ZSS=ZS CALL NRMARK(IPOINT,CMARK(IK(I)),XSS,ZSS) END IF 51 CONTINUE DO 52 I=1,NBB R=RB(IBB(I)) J1=JBB(1,I) J2=JBB(2,I) CALL TPSETB(J1,J2,R) 52 CONTINUE DO 53 I=1,NNS IF(IK(I).NE.0) THEN WIDTH=1.0D0+KKAT(IK(I))*0.01D0 WRITE(6,601) I,KKAT(IK(I)),WIDTH CALL LINEWD(WIDTH) JJ=I CALL TPDRWS(JJ) END IF 53 CONTINUE DO 54 I=1,NBB JJ=I WIDTH=1.0D0-IBB(I)*0.01D0 WRITE(6,601) I,IBB(I),WIDTH 601 FORMAT(2I4,F6.2) CALL LINEWD(WIDTH) CALL TPDRWB(JJ) 54 CONTINUE CALL LINEWD(1.0) DO 55 I=1,NLINE X11=X1(1,I)*SIZE Y1=X1(2,I)*SIZE Z1=X1(3,I)*SIZE X22=X2(1,I)*SIZE Y2=X2(2,I)*SIZE Z2=X2(3,I)*SIZE CALL TPLINE(X11,Y1,Z1,X22,Y2,Z2,191) 55 CONTINUE CALL AYPEND STOP END SUBROUTINE CLOCKM(ITIME) C C FOR UNIX C DIMENSION TERY(2) C C etime for AIX FORTRAN CALL ETIME_(TERY) C etime for SUN FORTARAN C CALL ETIME(TERY) ITIME=TERY(1)*1000 RETURN END SUBROUTINE PTIME(T) REAL*8 T CALL CLOCKM(IT) T=IT/3600000.0 RETURN END FUNCTION FUNC(XX) IMPLICIT REAL*8 (A-H,O-Z) DIMENSION XX(3) FUNC=0.0 RETURN END FUNCTION FUNCD(XA) IMPLICIT REAL*8 (A-H,O-Z) DIMENSION XA(3) FUNCD=1.0 RETURN END FUNCTION LFUNC(XA) IMPLICIT REAL*8 (A-H,O-Z) COMMON/BZPL/KKG(3,20),NNG,IEOH,INDC,IBR,ICUT DIMENSION XA(3) LFUNC=-1 RETURN END SUBROUTINE TSPPRP(NAT,NKAT,KKAT) C*********************************************************************** C PREPERATION TO CALL TSPACE * C*********************************************************************** IMPLICIT REAL*8 (A-H,O-Z) COMMON/SCL/WX,WY,EO,EM,XM,YM,IPR,ISO DIMENSION JB(2,3),KA(2,100),KION(100),KS(11,100),KKAT(100) DIMENSION VA(3,100) READ(1,*) READ(1,*) IL,NGEN,INV CALL TSPACE(IL) DO 1 I=1,NGEN READ(1,*) JA,((JB(J,K),J=1,2),K=1,3) CALL TSGENR(JA,JB) 1 CONTINUE CALL TSPGRP(INV) CALL TSPGDS READ(1,104) A,B,C READ(1,104) CA,CB,CC 104 FORMAT(3D23.16) CALL TSLATC(A,B,C,CA,CB,CC) READ(1,120) NAT,NKAT,(KION(I),I=1,NKAT) 120 FORMAT(14I5) J=0 DO 20 I=1,NKAT JJ=J+1 DO 23 IA=JJ,KION(I) KKAT(IA)=I 23 CONTINUE KA(1,I)=JJ KA(2,I)=KION(I) J=KION(I) 20 CONTINUE DO 2 I=1,NKA DO 21 J=1,11 IF(J.NE.1) KS(J,I)=0 IF(J.EQ.1) KS(J,I)=1 21 CONTINUE 2 CONTINUE DO 3 I=1,NAT 3 READ(1,*) (VA(J,I),J=1,3) CALL TSCRST(VA,KA,NKAT,NAT,KS) C RM=1.01D0 C CALL TSNBTB(RM,6) RETURN END