home *** CD-ROM | disk | FTP | other *** search
- SUBROUTINE LOAD1(LIMIT,NUMEL) MOD03850
- INTEGER AGET,AGETW MOD03851
- LOGICAL IGET,RGET MOD03852
- COMMON A(1) MOD03853
- COMMON/ELARRY/NELAR(4,20) MOD03854
- COMMON/TLOAD1/LTOT1,LCASE,LKEY,NCUR,FAC1,MTOT1 MOD03855
- COMMON/ETITLE/TITLE(20) MOD03856
- COMMON/UNIT/IN,IO,IP,INP,INPF,ITER,IS6,I30,I57 MOD03857
- COMMON/TOTAL/MAXELM,MAXNOD,MAXNDM,MAXGRO MOD03858
- COMMON/SAP6/ISAP6 MOD03859
- DIMENSION ICOM(60),ICC(20) MOD03860
- DATA ICOM(1)/1HL/,ICOM(2)/1HN/ MOD03861
- DATA ICOM(3)/1HL/,ICOM(4)/1HW/ MOD03862
- DATA ICOM(5)/1HL/,ICOM(6)/1HS/ MOD03863
- DATA ICOM(7)/1HL/,ICOM(8)/1HV/ MOD03864
- DATA ICOM(9)/1HL/,ICOM(10)/1HF/ MOD03865
- DATA ICOM(11)/1HC/,ICOM(12)/1HC/ MOD03866
- DATA BLANK/1H /,LLL/1HL/,HELP/4HHELP/ MOD03867
- MTOTAL=25000 MOD03868
- N1=1 MOD03869
- N2=N1+LIMIT MOD03870
- N3=N2+LIMIT MOD03871
- N4=N3+LIMIT MOD03872
- N5=N4+LIMIT MOD03873
- N6=N5+LIMIT MOD03874
- N7=N6+LIMIT MOD03875
- N8=N7+LIMIT MOD03876
- IF(N8.GT.MTOTAL)CALL PRTERR(8) MOD03877
- IF(IGET(LKEY))CALL PRTERR(0) MOD03878
- IF(IGET(LCASE))CALL PRTERR(0) MOD03879
- IF(LKEY.LT.0.OR.LKEY.GT.6)LKEY=0 MOD03880
- IF(LCASE.LE.0)LCASE=1 MOD03881
- IF(ISAP6.EQ.1)GO TO 100 MOD03882
- IF(IGET(NCUR))GO TO 100 MOD03883
- IF(RGET(FAC1))GO TO 100 MOD03884
- 100 CALL GETNL(GET001) MOD03885
- I=AGETW(AG001) MOD03886
- K=AGET(2) MOD03887
- KEY=1 MOD03888
- DO 110 J=1,39,2 MOD03889
- L=J+1 MOD03890
- IF(ICOM(J).EQ.I.AND.ICOM(L).EQ.K)GO TO 120 MOD03891
- KEY=KEY+1 MOD03892
- 110 CONTINUE MOD03893
- WRITE(IO,111)I,K MOD03894
- 111 FORMAT(' ++ F ++ CONTROL KEY = ',A1,A1,' IS ILLEGAL') MOD03895
- STOP MOD03896
- 120 GO TO (1,2,3,4,5,6),KEY MOD03897
- 1 X=AGET(3) MOD03898
- X=AGET(4) MOD03899
- CALL LNODE1(LIMIT,A(N1),A(N2),A(N3),A(N4),A(N5),A(N6),A(N7)) MOD03900
- GO TO 100 MOD03901
- 2 CALL LWRIT1(LIMIT,A(N1),A(N2),A(N3),A(N4),A(N5),A(N6),A(N7)) MOD03902
- RETURN MOD03903
- 3 ID2=2 MOD03904
- CALL LPRE2(ID2,LIMIT,A(N1),A(N2),A(N3),A(N4),A(N5),A(N6),A(N7)) MOD03905
- GO TO 100 MOD03906
- 4 ID2=3 MOD03907
- CALL LPRE2(ID2,LIMIT,A(N1),A(N2),A(N3),A(N4),A(N5),A(N6),A(N7)) MOD03908
- GO TO 100 MOD03909
- 5 CALL LFILL1(LIMIT,A(N1),A(N2),A(N3),A(N4),A(N5),A(N6),A(N7)) MOD03910
- 6 GO TO 100 MOD03911
- END MOD03912
- SUBROUTINE LNODE1(LIMIT,NSTOR,FX,FY,FZ,XM,YM,ZM) MOD03825
- INTEGER AGET,AGETW MOD03826
- LOGICAL IGET,RGET MOD03827
- DIMENSION NSTOR(LIMIT),FX(LIMIT),FY(LIMIT),FZ(LIMIT) MOD03828
- 1,XM(LIMIT),YM(LIMIT),ZM(LIMIT),DUMMY(6) MOD03829
- IF(IGET(N1))CALL PRTERR(0) MOD03830
- DO 10 I=1,6 MOD03831
- IF(RGET(DUMMY(I)))CALL PRTERR(0) MOD03832
- 10 CONTINUE MOD03833
- IF(IGET(N2))CALL PRTERR(0) MOD03834
- IF(IGET(INC))CALL PRTERR(0) MOD03835
- IF(N2.LE.0)N2=N1 MOD03836
- IF(INC.LE.0)INC=1 MOD03837
- DO 20 K=N1,N2,INC MOD03838
- IF(K.GT.LIMIT)CALL PRTERR(7) MOD03839
- NSTOR(K)=K MOD03840
- FX(K)=DUMMY(1) MOD03841
- FY(K)=DUMMY(2) MOD03842
- FZ(K)=DUMMY(3) MOD03843
- XM(K)=DUMMY(4) MOD03844
- YM(K)=DUMMY(5) MOD03845
- ZM(K)=DUMMY(6) MOD03846
- 20 CONTINUE MOD03847
- RETURN MOD03848
- END MOD03849
- SUBROUTINE LWRIT1(LIMIT,NSTOR,X,Y,Z,XM,YM,ZM) MOD03996
- COMMON/UNIT/IN,IO,IPL,INP,INPF,ITER,IS6,I30,I57 MOD03997
- COMMON/SAP6/ISAP6 MOD03998
- COMMON/TLOAD1/LTOT1,LCASE,LKEY,NCUR,FAC1,MTOT1 MOD03999
- COMMON/FORCE/NLC1 MOD04000
- DIMENSION NSTOR(LIMIT),X(LIMIT),Y(LIMIT),Z(LIMIT) MOD04001
- 1,XM(LIMIT),YM(LIMIT),ZM(LIMIT) MOD04002
- IZERO=0 MOD04003
- LTOT1=0 MOD04004
- DO 3 I=1,LIMIT MOD04005
- IF(NSTOR(I).LE.0)GO TO 3 MOD04006
- LTOT1=LTOT1+1 MOD04007
- 3 CONTINUE MOD04008
- IF(ISAP6.EQ.1)WRITE(I57,10)LTOT1,LCASE,LKEY MOD04009
- IF(ISAP6.NE.1)WRITE(I57,11)LTOT1,LCASE,LKEY,NCUR,FAC1 MOD04010
- 11 FORMAT(4I5,E14.7) MOD04011
- 10 FORMAT(3I5) MOD04012
- I=0 MOD04013
- ICO=0 MOD04014
- 20 I=I+1 MOD04015
- IF(I.GT.LIMIT)GO TO 100 MOD04016
- IF(NSTOR(I).LE.0)GO TO 20 MOD04017
- ICO=ICO+1 MOD04018
- J=NSTOR(I) MOD04019
- IF(ISAP6.NE.1)GO TO 70 MOD04020
- WRITE(I57,30)J,X(J),Y(J),Z(J),XM(J),YM(J),ZM(J) MOD04021
- 30 FORMAT(I5,6F15.5) MOD04022
- 31 NSTOR(I)=0 MOD04023
- X(J)=0 MOD04024
- Y(J)=0 MOD04025
- Z(J)=0 MOD04026
- XM(J)=0 MOD04027
- YM(J)=0 MOD04028
- ZM(J)=0 MOD04029
- GO TO 20 MOD04030
- 70 IDIR=0 MOD04031
- JDIR=0 MOD04032
- XOUT=0. MOD04033
- IF(X(J).EQ.0.)GO TO 71 MOD04034
- IDIR=1 MOD04035
- JDIR=JDIR+1 MOD04036
- XOUT=X(J) MOD04037
- 71 IF(Y(J).EQ.0.)GO TO 72 MOD04038
- IDIR=2 MOD04039
- JDIR=JDIR+2 MOD04040
- XOUT=Y(J) MOD04041
- 72 IF(Z(J).EQ.0.)GO TO 73 MOD04042
- IDIR=3 MOD04043
- JDIR=JDIR+3 MOD04044
- XOUT=Z(J) MOD04045
- 73 IF(XM(J).EQ.0.)GO TO 74 MOD04046
- IDIR=4 MOD04047
- JDIR=JDIR+4 MOD04048
- XOUT=XM(J) MOD04049
- 74 IF(YM(J).EQ.0.)GO TO 75 MOD04050
- IDIR=5 MOD04051
- JDIR=JDIR+5 MOD04052
- XOUT=YM(J) MOD04053
- 75 IF(ZM(J).EQ.0.)GO TO 76 MOD04054
- IDIR=6 MOD04055
- JDIR=JDIR+6 MOD04056
- XOUT=ZM(J) MOD04057
- 76 IF(IDIR.EQ.0)WRITE(IO,91)J MOD04058
- 91 FORMAT(' ++ W ++ NODE =',I5,' HAS ZERO COMPONENTS') MOD04059
- IF(IDIR.EQ.JDIR)GO TO 80 MOD04060
- WRITE(IO,92)J MOD04061
- 92 FORMAT(' ++ F ++ MORE THAN ONE COMPONENT WAS GENERATED FOR ' MOD04062
- 1,'NODE NUMBE =',I5) MOD04063
- STOP MOD04064
- 80 WRITE(I57,82)J,X(J),Y(J),Z(J),XM(J),YM(J),ZM(J),IDIR MOD04065
- 82 FORMAT(I5,6F15.5,I5) MOD04066
- GO TO 31 MOD04067
- 100 WRITE(IO,200)LKEY,LCASE,ICO MOD04068
- 200 FORMAT(10X,'FOR KEY=',I2,' LOAD CASE =',I3 MOD04069
- 1,' TOTAL GENERATED =',I5) MOD04070
- WRITE(I57,210)IZERO MOD04071
- 210 FORMAT(I5) MOD04072
- MTOT1=MTOT1+ICO MOD04073
- NLC1=1 MOD04074
- RETURN MOD04075
- END MOD04076
- SUBROUTINE LFILL1(LIMIT,NSTOR,X,Y,Z,XM,YM,ZM) MOD03706
- LOGICAL IGET,RGET MOD03707
- INTEGER AGET,AGETW MOD03708
- DIMENSION NSTOR(LIMIT),X(LIMIT),Y(LIMIT),Z(LIMIT) MOD03709
- 1,XM(LIMIT),YM(LIMIT),ZM(LIMIT) MOD03710
- DATA IBLANK/1H / MOD03711
- IDOUM=AGET(4) MOD03712
- IDOUM=AGET(5) MOD03713
- IF(IGET(NTIM))CALL PRTERR(0) MOD03714
- IF(IGET(N1))CALL PRTERR(0) MOD03715
- IF(IGET(N2))CALL PRTERR(0) MOD03716
- IF(IGET(NFILL))CALL PRTERR(0) MOD03717
- IF(IGET(NSTRT))CALL PRTERR(0) MOD03718
- IF(IGET(INC))CALL PRTERR(0) MOD03719
- IF(IGET(IADD))CALL PRTERR(0) MOD03720
- IF(IGET(IADD2))CALL PRTERR(0) MOD03721
- IF(NTIM.LE.0)NTIM=1 MOD03722
- IF(N1.LE.0)N1=1 MOD03723
- IF(N2.NE.0)GO TO 12 MOD03724
- DO 14 I=1,LIMIT MOD03725
- IF(NSTOR(I).EQ.0)GO TO 14 MOD03726
- IF(NSTOR(I).GT.N2)N2=NSTOR(I) MOD03727
- 14 CONTINUE MOD03728
- 12 IF(N2.GT.N1)GO TO 15 MOD03729
- LAB=N1 MOD03730
- N1=N2 MOD03731
- N2=LAB MOD03732
- 15 IF(NFILL.EQ.0)NFILL=N2-N1-1 MOD03733
- IF(INC.EQ.0)INC=(N2-N1)/(NFILL+1) MOD03734
- IF(NSTRT.EQ.0)NSTRT=N1+INC MOD03735
- IF(IADD.EQ.0)IADD=1 MOD03736
- DO 100 I=1,NTIM MOD03737
- SUM=NFILL+1 MOD03738
- XS=(X(N2)-X(N1))/SUM MOD03739
- YS=(Y(N2)-Y(N1))/SUM MOD03740
- ZS=(Z(N2)-Z(N1))/SUM MOD03741
- XMS=(XM(N2)-XM(N1))/SUM MOD03742
- YMS=(YM(N2)-YM(N1))/SUM MOD03743
- ZMS=(ZM(N2)-ZM(N1))/SUM MOD03744
- N=NSTRT MOD03745
- NSTOR(N)=N MOD03746
- X(N)=X(N1)+XS MOD03747
- Y(N)=Y(N1)+YS MOD03748
- Z(N)=Z(N1)+ZS MOD03749
- XM(N)=XM(N1)+XMS MOD03750
- YM(N)=YM(N1)+YMS MOD03751
- ZM(N)=ZM(N1)+ZMS MOD03752
- IF(NFILL.EQ.1)GO TO 90 MOD03753
- DO 50 J=2,NFILL MOD03754
- N=N+INC MOD03755
- NSTOR(N)=N MOD03756
- X(N)=X(N1)+XS*J MOD03757
- Y(N)=Y(N1)+YS*J MOD03758
- Z(N)=Z(N1)+ZS*J MOD03759
- XM(N)=XM(N1)+XMS*J MOD03760
- YM(N)=YM(N1)+YMS*J MOD03761
- ZM(N)=ZM(N1)+ZMS*J MOD03762
- 50 CONTINUE MOD03763
- 90 N1=N1+IADD MOD03764
- N2=N2+IADD MOD03765
- NSTRT=NSTRT+IADD+IADD2 MOD03766
- 100 CONTINUE MOD03767
- RETURN MOD03768
- END MOD03769
- SUBROUTINE LPRE2(I2D,LIMIT,NSTOR,X,Y,Z,XM,YM,ZM) MOD03913
- LOGICAL IGET,RGET MOD03914
- INTEGER AGET,AGETW MOD03915
- DIMENSION NSTOR(LIMIT),X(LIMIT),Y(LIMIT),Z(LIMIT) MOD03916
- 1,XM(LIMIT),YM(LIMIT),ZM(LIMIT) MOD03917
- DIMENSION XID(20,4),IDUM(20) MOD03918
- DATA BLANK/1H / MOD03919
- ICO=8 MOD03920
- DO 12 I=1,20 MOD03921
- DO 12 J=1,4 MOD03922
- XID(I,J)=0.0 MOD03923
- 12 CONTINUE MOD03924
- IF(I2D.NE.2)GO TO 200 MOD03925
- DO 2 JJ=3,8 MOD03926
- IJS=AGET(JJ) MOD03927
- 2 CONTINUE MOD03928
- IF(IGET(INCS))CALL PRTERR(0) MOD03929
- IF(IGET(INCT))CALL PRTERR(0) MOD03930
- IF(RGET(PERS))CALL PRTERR(0) MOD03931
- IF(RGET(PERT))CALL PRTERR(0) MOD03932
- IF(IGET(KS1))CALL PRTERR(0) MOD03933
- INCR=1 MOD03934
- INCR1=INCR MOD03935
- INCS1=INCS MOD03936
- INCT1=INCT MOD03937
- PERS1=PERS MOD03938
- PERT1=PERT MOD03939
- PERR=100 MOD03940
- PERR1=PERR MOD03941
- 20 CONTINUE MOD03942
- CALL GETNL(GET001) MOD03943
- DO 21 M=1,ICO MOD03944
- IF(IGET(IDUM(M)))CALL PRTERR(0) MOD03945
- 21 CONTINUE MOD03946
- DO 22 M=1,ICO MOD03947
- K=IDUM(M) MOD03948
- XID(M,1)=K MOD03949
- XID(M,2)=X(K) MOD03950
- XID(M,3)=Y(K) MOD03951
- XID(M,4)=Z(K) MOD03952
- 22 CONTINUE MOD03953
- 30 CALL MESHGE(XID,INCS,INCT,INCR,PERS,PERT,PERR,I2D,KS1 MOD03954
- 1,LIMIT,NSTOR,X,Y,Z) MOD03955
- INCS=INCS1 MOD03956
- INCT=INCT1 MOD03957
- INCT=INCT1 MOD03958
- PERS=PERS1 MOD03959
- PERT=PERT1 MOD03960
- PERR=PERR1 MOD03961
- DO 50 M1M=1,20 MOD03962
- DO 50 M2M=1,4 MOD03963
- XID(M1M,M2M)=0.0 MOD03964
- 50 CONTINUE MOD03965
- DO 24 M=1,ICO MOD03966
- K=IDUM(M) MOD03967
- XID(M,1)=K MOD03968
- XID(M,2)=XM(K) MOD03969
- XID(M,3)=YM(K) MOD03970
- XID(M,4)=ZM(K) MOD03971
- 24 CONTINUE MOD03972
- CALL MESHGE(XID,INCS,INCT,INCR,PERS,PERT,PERR,I2D,KS1 MOD03973
- 1,LIMIT,NSTOR,XM,YM,ZM) MOD03974
- RETURN MOD03975
- 200 CONTINUE MOD03976
- DO 3 JJ=3,7 MOD03977
- IJK=AGET(JJ) MOD03978
- 3 CONTINUE MOD03979
- IF(IGET(INCS))CALL PRTERR(0) MOD03980
- IF(IGET(INCT))CALL PRTERR(0) MOD03981
- IF(IGET(INCR))CALL PRTERR(0) MOD03982
- IF(RGET(PERS))CALL PRTERR(0) MOD03983
- IF(RGET(PERT))CALL PRTERR(0) MOD03984
- IF(RGET(PERR))CALL PRTERR(0) MOD03985
- IF(IGET(KS1))CALL PRTERR(0) MOD03986
- INCS1=INCS MOD03987
- INCT1=INCT MOD03988
- INCR1=INCR MOD03989
- PERS1=PERS MOD03990
- PERT1=PERT MOD03991
- PERR1=PERR MOD03992
- ICO=20 MOD03993
- GO TO 20 MOD03994
- END MOD03995