home *** CD-ROM | disk | FTP | other *** search
- SUBROUTINE PLTAXS (IM,SC)
- DIMENSION IC(2,3),VC(3),CL(3),XL(3)
- COMMON /BX/BM(3)
- COMMON/RAMTEK/MTEK1
- COMMON/HP21/IHP21,PAT,HI21,X21,Y21
- DATA CL,XL/1HX,1HY,1HZ,4HMODL,4HDEFL,4HLOAD/
- NP=0
- SCALE=0.
- IF (SC .EQ. 0.) GO TO 41
- SCALE=55./ABS(SC)
- 11 IF (SCALE .GE. 1.) GO TO 21
- SCALE=SCALE*10.
- NP=NP+1
- FAC=.1
- GO TO 11
- 21 IF (SCALE .LT. 10.) GO TO 31
- SCALE=0.1*SCALE
- NP=NP+1
- FAC=10.
- GO TO 21
- 31 IF(FAC.EQ.0.0)FAC=1.0
- SCALE=FLOAT(IFIX(SCALE+0.5))*SC/ABS(SC)*FAC**NP
- 41 CALL SCNCD (BM,X,Y)
- DO 61 I=1,3
- DO 51 J=1,3
- 51 VC(J)=BM(J)
- VC(I)=VC(I)+1.
- CALL SCNCD (VC,X1,Y1)
- IC(1,I)=(X1-X)*SC*SCALE
- 61 IC(2,I)=(Y1-Y)*SC*SCALE
- IX=0
- IY=0
- IX1=0
- IY1=0
- DO 71 I=1,3
- IF (IC(1,I) .LT. IX) IX=IC(1,I)
- IF (IC(2,I) .LT. IY) IY=IC(2,I)
- IF (IC(1,I) .GT. IX1) IX1=IC(1,I)
- IF (IC(2,I) .GT. IY1) IY1=IC(2,I)
- 71 CONTINUE
- 81 IDX=70-IX
- IDY=55-IY
- IX1=4
- IX=4
- DO 121 I=1,3
- CALL SETPT (IDX,IDY)
- CALL PLINE(IC(1,I),IC(2,I),1)
- CALL PLINE(4,-7,0)
- 55 X=CL(I)
- 121 CALL TEXT10(X,1)
- RETURN
- END
- SUBROUTINE PROUT(KK,ID,ID2,ID3,ID4,NUMNP,NUMEL,NUMEL2,NADND,NADEL,
- 1NDKOD,NDMX,IES,NRES,NE35,ND35)
- IMPLICIT REAL*8(A-H,O-Z)
- REAL SNGX(3)
- REAL*8 ID,ID2,ID3
- REAL*8 ID4
- DIMENSION ID(NUMNP,3),ID2(NUMEL,5),ID3( 1,9)
- DIMENSION ID4(NE35,ND35)
- COMMON/ELARRY/NELAR(4,20)
- COMMON/PREP/XMX,XAD,KSKIP,NDYN,I1
- COMMON /TRASH/IA(20),ND(100)
- COMMON/JUNK/X(3),CX(6),DX(8),IX(8),JX(5),I,IXX(16),JXX(4), KX(12)
- COMMON/PLOTH/NCPT
- DIMENSION C(8),G(3)
- DATA C/2HDX,2HDY,2HDZ,2HRX,2HRY,2HRZ,2H ,2H**/
- DATA G/2HNM,2HND,2HNR/
- NDD=6
- NCPT=0
- NELMX=0
- NDIFMX=0
- IU=19
- KP=0
- IF(KK.GT.4)KP=1
- IF(KK.GT.4)KK=KK/10
- GO TO (10,100,250,260),KK
- 10 REWIND 28
- READ (28) ((ID(I,J),J=1,3),I=1,NUMNP)
- IF(NRES.EQ.12) GO TO 20
- WRITE (NRES) ((ID(I,J),J=1,3),I=1,NUMNP)
- 20 CONTINUE
- REWIND 19
- DO 90 N=1,NUMNP
- DO 30 I=1,NDD
- 30 CX(I)=C(7)
- MP= MOD(N,2)
- MP=3-3*MP
- MP2=2*MP
- DO 40 I=1,3
- NNN=ID(N,I)
- IF(NNN.LT.0) NNN=NNN-1
- X(I)= ID(N,I)
- DX(I+MP)=X(I)
- NN1= MOD(NNN,I1)
- NN2=NNN/I1
- KX(I+MP2)=NN1
- IF(NN1.GE.10) KX(I+MP2)=0
- KX(I+MP2+3)=NN2
- IF(NN1.GT.0) CX(I)=C(I)
- IF(NN1.GE.100) CX(I)=C(8)
- IF(NN2.GT.0) CX(I+3)=C(I+3)
- IF(NN1.LT.0) CX(I+3)=C(I+3)
- 40 CONTINUE
- NI=N-1
- IF(N.EQ.NUMNP.AND.MP.EQ.0) NI=N
- IF(N.EQ.NUMNP) MP=6
- DO 50 I=1,3
- SNGX(I)=SNGL(X(I))
- 50 CONTINUE
- WRITE(19)SNGX
- IF(MOD(N,2)) 70,80,70
- 70 CONTINUE
- GO TO 90
- 80 CONTINUE
- 90 CONTINUE
- RETURN
- 100 I444=4
- REWIND I444
- READ (I444) ((ID2(I,J),J=1,5),I=1,NUMEL)
- IF(NDKOD.EQ.1)READ(I444) ((ID4(I,J),J=1,NADND),I=1,NUMEL)
- IF(NRES.EQ.12) GO TO 110
- WRITE (NRES) ((ID2(I,J),J=1,5),I=1,NUMEL)
- IF(NDKOD.EQ.1) WRITE(NRES) ((ID4(I,J),J=1,NADND),I=1,NUMEL)
- 110 CONTINUE
- DO 240 I=1,NUMEL
- DO 120 J=1,4
- NN=ID2(I,J)
- IX(J+4)=NN/I1
- 120 IX(J)= MOD(NN,I1)
- XM=100
- T=ID2(I,5)
- DO 130 J=1,5
- JX(J)=DMOD(T,XM)
- 130 T= T/XM
- MIN=100000
- MAX=0
- MP= MOD(I,2)
- MP=8-8*MP
- MT=JX(5)
- DO 140 J=1,8
- IXX(J+MP)=IX(J)
- IF(IX(J).EQ.0) GO TO 140
- IF(J.GT.NELAR(2,MT)) GO TO 140
- IF(IX(J).GT.MAX) MAX=IX(J)
- IF(IX(J).LT.MIN) MIN=IX(J)
- 140 CONTINUE
- NDIF=MAX-MIN
- IF(MT.EQ.7) NDIF=0
- MP=MP/4
- JXX(1+MP)=JX(5)
- JXX(2+MP)=JX(1)
- NI=I-1
- IF(I.EQ.NUMEL.AND.MP.EQ.0) NI=I
- IF(I.EQ.NUMEL) MP=2
- IF(KP.EQ.1.AND.NDKOD.EQ.1) KP=2
- IF(NDKOD.EQ.0.OR.NDMX.LE.8) GO TO 230
- MT=JX(5)
- DO 180 J=9,20
- 180 IA(J)=0
- IF(NELAR(1,MT).LE.8) GO TO 210
- XM=10000
- DO 190 J=1,NADND
- T=ID4(I,J)
- MP=3*(J-1)+8
- DO 190 K=1,3
- MP=MP+1
- IA(MP)=DMOD(T,XM)
- 190 T=T/XM
- DO 200 J=9,NDMX
- IF(IA(J).EQ.0) GO TO 200
- IF(IA(J).GT.MAX) MAX=IA(J)
- IF(IA(J).LT.MIN) MIN=IA(J)
- 200 CONTINUE
- NDIF=MAX-MIN
- 210 CONTINUE
- MT=JX(5)
- 230 CONTINUE
- ITYPE=JX(5)
- CALL PLOTDT(ITYPE,IX,IA,NCP)
- NCPT=NCPT+NCP
- IF(NDIF.GT.NDIFMX) NELMX=I
- IF(NDIF.GT.NDIFMX) NDIFMX=NDIF
- 240 CONTINUE
- KP=0
- WRITE(19)KP
- REWIND 18
- WRITE(18)NUMNP,NUMEL,NCPT
- 250 RETURN
- 260 CONTINUE
- RETURN
- END
- SUBROUTINE PSTRES(IX,IY,SIG)
- COMMON/STRESS/IFLOK,IST1,SCL1,NSIG,IDIR
- COMMON/VS11VA/IVS11,IMOVE,NNSTEP
- COMMON/UNIT/II11,II22
- COMMON/RAMTEK/MTEK1,RAMSCL
- COMMON/MSTREE/STRPOS,STRNEG,KALOR,NCOL
- COMMON/HP21/IHP21,PAT,HI21,X21,Y21
- DATA IVVV/1HV/
- X=FLOAT(IX)
- Y=FLOAT(IY)
- ST=SIG*SCL1
- IF(ABS(ST).LT.2.)RETURN
- ST=ABS(ST)
- BR=ST/2.0
- AR=ST/4.0
- HR=ST/10.0
- ZERO=0.0
- IPEN=2
- CALL SETPT(IX,IY)
- IF(IDIR.EQ.IVVV)GO TO 100
- IF(SIG.LT.0.0)GO TO 50
- CALL PUTAR(BR,ZERO,IPEN)
- CALL PUTAR(-AR,HR,IPEN)
- CALL PUTAR(ZERO,-2.*HR,IPEN)
- CALL PUTAR(AR,HR,IPEN)
- CALL PUTAR(-ST,ZERO,IPEN)
- CALL PUTAR(AR,HR,IPEN)
- CALL PUTAR(ZERO,-2.*HR,IPEN)
- CALL PUTAR(-AR,HR,IPEN)
- RETURN
- 50 CALL PUTAR(BR,ZERO,IPEN)
- CALL PUTAR(ZERO,HR,IPEN)
- CALL PUTAR(-AR,-HR,IPEN)
- CALL PUTAR(AR,-HR,IPEN)
- CALL PUTAR(ZERO,HR,IPEN)
- CALL PUTAR(-ST,ZERO,IPEN)
- CALL PUTAR(ZERO,HR,IPEN)
- CALL PUTAR(AR,-HR,IPEN)
- CALL PUTAR(-AR,-HR,IPEN)
- CALL PUTAR(ZERO,HR,IPEN)
- RETURN
- 100 IF(SIG.LT.0.0)GO TO 300
- CALL PUTAR(ZERO,BR,IPEN)
- CALL PUTAR(HR,-AR,IPEN)
- CALL PUTAR(-2.*HR,ZERO,IPEN)
- CALL PUTAR(HR,AR,IPEN)
- CALL PUTAR(ZERO,-ST,IPEN)
- CALL PUTAR(HR,AR,IPEN)
- CALL PUTAR(-2.*HR,ZERO,IPEN)
- CALL PUTAR(HR,-AR,IPEN)
- RETURN
- 300 CALL PUTAR(ZERO,BR,IPEN)
- CALL PUTAR(HR,ZERO,IPEN)
- CALL PUTAR(-HR,-AR,IPEN)
- CALL PUTAR(-HR,AR,IPEN)
- CALL PUTAR(HR,ZERO,IPEN)
- CALL PUTAR(ZERO,-ST,IPEN)
- CALL PUTAR(HR,ZERO,IPEN)
- CALL PUTAR(-HR,AR,IPEN)
- CALL PUTAR(-HR,-AR,IPEN)
- CALL PUTAR(HR,ZERO,IPEN)
- RETURN
- END
- SUBROUTINE PUTAR(DX,DY,IPEN)
- COMMON/HP21/IHP21,PAT,HI21,X21,Y21
- COMMON/CALCOM/ICAL
- COMMON/STRCLR/ICLR
- IF(ICAL.EQ.1) GOTO 100
- IDX=IFIX(DX)
- IDY=IFIX(DY)
- ICLR=1
- IF(IPEN.EQ.3) CALL LINREL (IDX,IDY,0)
- IF(IPEN.EQ.2) CALL LINREL (IDX,IDY,1)
- GOTO 120
- 100 IF(IPEN.EQ.3)IPN=5
- IF(IPEN.EQ.2)IPN=6
- WRITE(10,110)IPN,DX,DY
- 110 FORMAT(I10,2F10.3)
- 120 RETURN
- END
- SUBROUTINE QUADN(ISX,ISY,IN,I)
- COMMON/IWINDO/IWIND,XM1,XM2,YM1,YM2
- COMMON/CALCOM/ICAL
- IP1=1
- IP2=2
- SX=ISX
- SY=ISY
- CALL CSIZE(IHORZ,IVERT)
- IF(IHORZ.LE.0)IHORZ=14
- IF(IVERT.LE.0)IVERT=22
- XJ24=9.*FLOAT(IVERT)/8.0
- XJ17=5.*FLOAT(IHORZ)/4.0
- H=XJ24
- WI=XJ17
- W=2.*WI
- IF(I.LT.1000)W=3.*WI/2.
- IF(I.LT.100)W=WI
- IF(I.LT.10)W=WI/2.
- CALL V2ST(1,SX,SY,LX,LY)
- LX=LX-W
- ALX=LX
- LY=LY-H/2.
- ALY=LY
- CALL MOVABS(LX,LY)
- IF(ICAL.EQ.1)WRITE(10,10)IP1,ALX,ALY
- LY=LY+H
- ALY=LY
- CALL DRWABS(LX,LY)
- IF(ICAL.EQ.1)WRITE(10,10)IP2,ALX,ALY
- D=4.
- IF(I.LT.1000)D=3.
- IF(I.LT.100)D=2.
- IF(I.LT.10)D=1.
- LX=LX+D*WI
- ALX=LX
- CALL DRWABS(LX,LY)
- IF(ICAL.EQ.1)WRITE(10,10)IP2,ALX,ALY
- LY=LY-H
- ALY=LY
- CALL DRWABS(LX,LY)
- IF(ICAL.EQ.1)WRITE(10,10)IP2,ALX,ALY
- LX=LX-D*WI
- ALX=LX
- CALL DRWABS(LX,LY)
- IF(ICAL.EQ.1)WRITE(10,10)IP2,ALX,ALY
- 10 FORMAT(I10,2F10.3)
- RETURN
- END
- SUBROUTINE READST(IOK1)
- COMMON/STRESS/IFLOK,IST1,SCL1,NSIG,IDIR,SHOST,SIGX(3000)
- COMMON/NSAP6/ISAP6,LOAD6
- COMMON/UNIT/II11,II22
- COMMON/MSTREE/STRPOS,STRNEG,KALOR,NCOL
- COMMON/ELRANG/IRANG
- COMMON/RAMTEK/MTEK1
- DIMENSION DUM(10)
- IOK1=0
- XNCOL=FLOAT(NCOL)
- IF(LOAD6.EQ.0)LOAD6=1
- REWIND 35
- IBO=0
- XMAX=0.0
- STRMAX=0.0
- STRMIN=0.0
- IF(NSIG.GT.10.OR.NSIG.LT.1)GO TO 100
- I=1
- 8 READ(35,20,END=300,ERR=30)N,LTYP,LD,(DUM(J),J=1,10)
- 20 FORMAT(3I5,10E10.3)
- IF(LD.EQ.LOAD6)GO TO 22
- GO TO 8
- 22 IF(IRANG.NE.1)GO TO 24
- CALL SEELM1(N,IKOB)
- IF(IKOB.NE.1)GO TO 26
- 24 XD=ABS(DUM(NSIG))
- IF(DUM(NSIG).GT.STRMAX)STRMAX=DUM(NSIG)
- IF(DUM(NSIG).LT.STRMIN)STRMIN=DUM(NSIG)
- IF(XD.GT.XMAX)XMAX=XD
- SIGX(I)=DUM(NSIG)
- 26 I=I+1
- IBO=1
- GO TO 8
- 300 IF(IBO.EQ.1)GO TO 120
- WRITE(*,40)LOAD6
- 40 FORMAT(' STRESS FOR LOAD CASE =',I5,' DOES NOT EXIST')
- RETURN
- 120 SCL1=90./XMAX
- SHOST=ABS(XMAX)*80.0/63.0
- IOK1=1
- STRPOS=STRMAX/XNCOL
- STRNEG=STRMIN/XNCOL
- RETURN
- 30 WRITE(*,444)
- 444 FORMAT(' INPUT CONVERSION ERROR ON UNIT 35 ')
- 100 IOK1=0
- RETURN
- END
- SUBROUTINE SCALEM
- DIMENSION VC(3)
- COMMON /PLT/IPN,IEN,ILN,XB,YB,SC
- COMMON /BX/BM(3),BL(6)
- XMX=-1.E20
- YMX=-1.E20
- XMN=1.E20
- YMN=1.E20
- DO 11 I=1,2
- DO 11 J=3,4
- DO 11 K=5,6
- VC(1)=BL(I)
- VC(2)=BL(J)
- VC(3)=BL(K)
- CALL SCNCD (VC,XB,YB)
- IF (XB .LT. XMN) XMN=XB
- IF (XB .GT. XMX) XMX=XB
- IF (YB .LT. YMN) YMN=YB
- IF (YB .GT. YMX) YMX=YB
- 11 CONTINUE
- XB=.5*(XMN+XMX)
- YB=.5*(YMN+YMX)
- SC=XMX-XMN
- IF (SC .EQ. 0.) SC=.01
- SC1=YMX-YMN
- IF (SC1 .EQ. 0.) SC1=.01
- SC=700./SC
- SC1=700./SC1
- IF (SC1 .LT. SC) SC=SC1
- RETURN
- END
- SUBROUTINE SCNCD (VC,XC,YC)
- COMMON/ROTAT/IROT
- DIMENSION VC(3),V(3)
- COMMON /BX/BM(3)
- COMMON /ANG/H,SX,SY,CX,CY
- DO 11 I=1,3
- 11 V(I)=VC(I)-BM(I)
- IF(IROT.EQ.1)CALL MEROT(V)
- D=1.+(SY*CX*V(1)-SX*V(2)-CX*CY*V(3))/H
- XC=(CY*V(1)+SY*V(3))/D
- YC=(SX*SY*V(1)+CX*V(2)-SX*CY*V(3))/D
- RETURN
- END
- SUBROUTINE SEELM1(I,IOK)
- COMMON/ELRANG/IRANG,IR0(2,10)
- IOK=0
- DO 100 J=1,10
- DO 10 K=1,2
- IF(IR0(K,J).LE.0)GO TO 100
- 10 CONTINUE
- IF(I.GE.IR0(1,J).AND.I.LE.IR0(2,J))GO TO 200
- IF(I.LE.IR0(1,J).AND.I.GE.IR0(2,J))GO TO 200
- 100 CONTINUE
- RETURN
- 200 IOK=1
- RETURN
- END
- SUBROUTINE SEEND1(I,IOK)
- COMMON/SENOD1/ISEND,IR0(2,10)
- COMMON/HIDDEN/IHIDE,NTHIDE,NHIDE(2000)
- IOK=0
- IF(IHIDE.EQ.1)GO TO 300
- 50 DO 100 J=1,10
- DO 10 K=1,2
- IF(IR0(K,J).LE.0)GO TO 100
- 10 CONTINUE
- IF(I.GE.IR0(1,J).AND.I.LE.IR0(2,J))GO TO 200
- IF(I.LE.IR0(1,J).AND.I.GE.IR0(2,J))GO TO 200
- 100 CONTINUE
- RETURN
- 200 IOK=1
- RETURN
- 300 IF(NTHIDE.LE.0)GO TO 320
- DO 310 J=1,NTHIDE
- IF(NHIDE(J).LE.0)GO TO 310
- IF(I.EQ.NHIDE(J))GO TO 320
- 310 CONTINUE
- IOK=1
- 315 IF(ISEND.EQ.1)GO TO 50
- RETURN
- 320 IOK=0
- GO TO 315
- END
- SUBROUTINE SETPT (IX,IY)
- COMMON/HP21/IHP21
- COMMON/CALCOM/ICAL
- COMMON/IGL100/IGLKEY
- COMMON/RAMTEK/MTEK1,SXRAM,XRAMT,YRAMT
- X=IX
- Y=IY
- LINTYP=0
- IPEN=0
- IF(ICAL.EQ.1)GO TO 20
- CALL MOVEA(X,Y)
- RETURN
- 20 IPN=1
- WRITE(10,21)IPN,X,Y
- 21 FORMAT(I10,2F10.3)
- RETURN
- END
- SUBROUTINE TEXT10(NADE,NCHAR)
- COMMON/BEAPOS/IX,IY
- DIMENSION NADE(1)
- NW=NCHAR/4
- NW1=NW*4
- IF (NW1.NE.NCHAR)NW=NW+1
- CALL TEXTAM(NCHAR,NW,NADE)
- RETURN
- END
- SUBROUTINE TEXTAM(NCHAR,NW,NAME)
- COMMON/BEAPOS/IX1,IY1
- COMMON/UNIT/II11,II22
- COMMON/HP21/IHP21,PAT,HI21,X21,Y21
- COMMON/CALCOM/ICAL
- COMMON/RAMTEK/MTEK1
- DIMENSION NAME(NW),DUM(80)
- DATA BRAKE/1H!/,COEST/1H|/
- I21=21
- IF(ICAL.EQ.1)GO TO 20
- CALL ANSTR(NCHAR,NAME,NW)
- RETURN
- 20 NC1=-NCHAR
- WRITE(10,24)NC1,X21,Y21
- 21 FORMAT(I10)
- WRITE(10,25)NAME
- 25 FORMAT(2X,15A4)
- 24 FORMAT(I10,2F10.3)
- RETURN
- END
- SUBROUTINE TTT
- ENTRY FDATE
- ENTRY WDATE
- ENTRY STIME
- ENTRY TTIME
- ENTRY SECOND
- RETURN
- END