home *** CD-ROM | disk | FTP | other *** search
- SUBROUTINE NODE1(LIMIT,NSTOR,X,Y,Z) MOD04520
- LOGICAL IGET,RGET MOD04521
- INTEGER AGET,AGETW MOD04522
- DIMENSION NSTOR(LIMIT),X(LIMIT),Y(LIMIT),Z(LIMIT) MOD04523
- DATA IBLANK/1H / MOD04524
- DO 11 I=3,4 MOD04525
- IDOUM=AGET(I) MOD04526
- IF(IDOUM.EQ.IBLANK)GO TO 12 MOD04527
- 11 CONTINUE MOD04528
- 12 IF(IGET(N))CALL PRTERR(0) MOD04529
- NSTOR(N)=N MOD04530
- IF(RGET(X(N)))CALL PRTERR(0) MOD04531
- IF(RGET(Y(N)))CALL PRTERR(0) MOD04532
- IF(RGET(Z(N)))CALL PRTERR(0) MOD04533
- IF(IGET(KS))CALL PRTERR(0) MOD04534
- IF(IGET(KT))CALL PRTERR(0) MOD04535
- RETURN MOD04536
- END MOD04537
- SUBROUTINE READBN(NODE,ID) MOD05440
- LOGICAL IGET,RGET MOD05441
- INTEGER AGET,AGETW,BL,BLANK MOD05442
- DIMENSION ID(NODE,6) MOD05443
- COMMON/UNIT/IN MOD05444
- INTEGER A(18),C(12) MOD05445
- DATA BLANK/1H / MOD05446
- DATA A/1HD,1HX,1HD,1HY,1HD,1HZ MOD05447
- 1,1HR,1HX,1HR,1HY,1HR,1HZ MOD05448
- 2,1HN,1HD,1HN,1HR,1HN,1HM/ MOD05449
- 10 DO 2 L=1,12 MOD05450
- C(L)=BLANK MOD05451
- 2 CONTINUE MOD05452
- DO 3 I=3,5 MOD05453
- DOM=AGET(I) MOD05454
- IF(DOM.EQ.BLANK)GO TO 6 MOD05455
- 3 CONTINUE MOD05456
- 6 IF(IGET(I))CALL PRTERR(0) MOD05457
- IF(IGET(J))CALL PRTERR(0) MOD05458
- IF(IGET(K))CALL PRTERR(0) MOD05459
- DO 8 IB=1,11,2 MOD05460
- BL=AGETW(AGE001) MOD05461
- IF(BL.EQ.BLANK)GO TO 8 MOD05462
- C(IB)=BL MOD05463
- C(IB+1)=AGET(2) MOD05464
- 8 CONTINUE MOD05465
- IF(I.LE.0)RETURN MOD05466
- IF(J.LE.0)J=I MOD05467
- IF(K.LE.0)K=1 MOD05468
- DO 200 N=I,J,K MOD05469
- DO 30 M=1,11,2 MOD05470
- M0=1 MOD05471
- DO 30 MM=1,11,2 MOD05472
- IF(C(M).EQ.A(MM).AND.C(M+1).EQ.A(MM+1))ID(N,M0)=1 MOD05473
- M0=M0+1 MOD05474
- 30 CONTINUE MOD05475
- DO 40 M=1,11,2 MOD05476
- IF(C(M).EQ.A(13).AND.C(M+1).EQ.A(14))GO TO 41 MOD05477
- IF(C(M).EQ.A(15).AND.C(M+1).EQ.A(16))GO TO 43 MOD05478
- IF(C(M).EQ.A(17).AND.C(M+1).EQ.A(18))GO TO 45 MOD05479
- GO TO 40 MOD05480
- 41 DO 42 KK=1,3 MOD05481
- ID(N,KK)=1 MOD05482
- 42 CONTINUE MOD05483
- GO TO 40 MOD05484
- 43 DO 44 KK=4,6 MOD05485
- ID(N,KK)=1 MOD05486
- 44 CONTINUE MOD05487
- GO TO 40 MOD05488
- 45 DO 46 KK=1,6 MOD05489
- ID(N,KK)=1 MOD05490
- 46 CONTINUE MOD05491
- 40 CONTINUE MOD05492
- 200 CONTINUE MOD05493
- RETURN MOD05494
- END MOD05495
- SUBROUTINE FILL1(LIMIT,NSTOR,X,Y,Z) MOD02563
- LOGICAL IGET,RGET MOD02564
- INTEGER AGET,AGETW MOD02565
- DIMENSION NSTOR(LIMIT),X(LIMIT),Y(LIMIT),Z(LIMIT) MOD02566
- DATA IBLANK/1H / MOD02567
- IDOUM=AGET(4) MOD02568
- IF(IGET(NTIM))CALL PRTERR(0) MOD02569
- IF(IGET(N1))CALL PRTERR(0) MOD02570
- IF(IGET(N2))CALL PRTERR(0) MOD02571
- IF(IGET(NFILL))CALL PRTERR(0) MOD02572
- IF(IGET(NSTRT))CALL PRTERR(0) MOD02573
- IF(IGET(INC))CALL PRTERR(0) MOD02574
- IF(IGET(IADD))CALL PRTERR(0) MOD02575
- IF(IGET(IADD2))CALL PRTERR(0) MOD02576
- IF(NTIM.LE.0)NTIM=1 MOD02577
- IF(N1.LE.0)N1=1 MOD02578
- IF(N2.NE.0)GO TO 12 MOD02579
- DO 14 I=1,LIMIT MOD02580
- IF(NSTOR(I).EQ.0)GO TO 14 MOD02581
- IF(NSTOR(I).GT.N2)N2=NSTOR(I) MOD02582
- 14 CONTINUE MOD02583
- 12 IF(N2.GT.N1)GO TO 15 MOD02584
- LAB=N1 MOD02585
- N1=N2 MOD02586
- N2=LAB MOD02587
- 15 IF(NFILL.EQ.0)NFILL=N2-N1-1 MOD02588
- IF(INC.EQ.0)INC=(N2-N1)/(NFILL+1) MOD02589
- IF(NSTRT.EQ.0)NSTRT=N1+INC MOD02590
- IF(IADD.EQ.0)IADD=1 MOD02591
- DO 100 I=1,NTIM MOD02592
- SUM=NFILL+1 MOD02593
- XS=(X(N2)-X(N1))/SUM MOD02594
- YS=(Y(N2)-Y(N1))/SUM MOD02595
- ZS=(Z(N2)-Z(N1))/SUM MOD02596
- N=NSTRT MOD02597
- NSTOR(N)=N MOD02598
- X(N)=X(N1)+XS MOD02599
- Y(N)=Y(N1)+YS MOD02600
- Z(N)=Z(N1)+ZS MOD02601
- IF(NFILL.EQ.1)GO TO 90 MOD02602
- DO 50 J=2,NFILL MOD02603
- N=N+INC MOD02604
- NSTOR(N)=N MOD02605
- X(N)=X(N1)+XS*J MOD02606
- Y(N)=Y(N1)+YS*J MOD02607
- Z(N)=Z(N1)+ZS*J MOD02608
- 50 CONTINUE MOD02609
- 90 N1=N1+IADD MOD02610
- N2=N2+IADD MOD02611
- NSTRT=NSTRT+IADD+IADD2 MOD02612
- 100 CONTINUE MOD02613
- RETURN MOD02614
- END MOD02615
- SUBROUTINE ELEM1(LIMIT,NUMEL,MTYP,IPS,MATRI,THICK,BETA,ICON,IELD MOD02053
- 1,IELX,NTEMP,NODOLD,DENSIT,AREA,CDIS,CVEL) MOD02054
- LOGICAL IGET,RGET,EOL,EOS,EOF,ERROR MOD02055
- INTEGER AGET,AGETW,SECT MOD02056
- COMMON/ELARRY/NELAR(4,20) MOD02057
- COMMON/NONLIN/INON,ITHIS MOD02058
- COMMON/UNIT/INNN,IOO MOD02059
- COMMON/SAP6/ISAP6 MOD02060
- COMMON/TOTAL/MAXELM,MAXNOD,MAXNDM MOD02061
- COMMON/SIZE/IFRNDM MOD02062
- COMMON/EGROUP/ITYPEL,NONTYP MOD02063
- COMMON/FRECNT/LINE(80),SECT,EOL,EOS,EOF,ERROR MOD02064
- DIMENSION MTYP(NUMEL),IPS(NUMEL),THICK(NUMEL),BETA(NUMEL) MOD02065
- 1,ICON(NUMEL,20),MATRI(NUMEL),IELD(NUMEL),IELX(NUMEL) MOD02066
- 2,NTEMP(NUMEL),NODOLD(LIMIT),DENSIT(NUMEL),AREA(NUMEL) MOD02067
- 3,CDIS(NUMEL),CVEL(NUMEL) MOD02068
- DATA BLANK/1H /,ISHELL/1HS/,IGENER/1HC/,IPLAT/1HP/ MOD02069
- DATA ITRUSS/1HT/,IBEAM/1HB/,I2D/1H2/,I3D/1H3/,IGAP/1HG/ MOD02070
- DATA LLL/1HL/,IPPP/1HP/,IELBO/1HE/,NONN/1HN/ MOD02071
- IFRNDM=MAXNDM MOD02072
- DO 10 I=3,8 MOD02073
- X=AGET(I) MOD02074
- IF(X.EQ.BLANK)GO TO 20 MOD02075
- 10 CONTINUE MOD02076
- 20 IF(IGET(N))CALL PRTERR(0) MOD02077
- IF(N.GT.NUMEL)CALL PRTERR(9) MOD02078
- IF(N.LE.0)CALL PRTERR(10) MOD02079
- IF(ISAP6.EQ.1)GO TO 290 MOD02080
- IWHO=AGETW(AGE001) MOD02081
- IWHO2=AGET(2) MOD02082
- IF(IWHO.EQ.IGENER)MTYP(N)=17 MOD02083
- IF(IWHO.EQ.IGENER)GO TO 140 MOD02084
- DO 30 I=3,5 MOD02085
- X=AGET(I) MOD02086
- IF(X.EQ.BLANK)GO TO 40 MOD02087
- 30 CONTINUE MOD02088
- 40 IF(IWHO.EQ.ITRUSS)MTYP(N)=1 MOD02089
- IF(IWHO.EQ.IELBO)MTYP(N)=2 MOD02090
- IF(IWHO.EQ.IBEAM)MTYP(N)=2 MOD02091
- IF(IWHO.EQ.I2D)MTYP(N)=11 MOD02092
- IF(IWHO.EQ.I3D)MTYP(N)=10 MOD02093
- IF(IWHO.EQ.IGAP)MTYP(N)=1 MOD02094
- IF(IWHO.EQ.ISHELL)MTYP(N)=18 MOD02095
- IF(IWHO.EQ.IPLAT)MTYP(N)=16 MOD02096
- IF(IWHO.EQ.ITRUSS)ITYPEL=1 MOD02097
- IF(IWHO.EQ.IBEAM)ITYPEL=4 MOD02098
- IF(IWHO.EQ.I2D)ITYPEL=2 MOD02099
- IF(IWHO.EQ.I3D)ITYPEL=3 MOD02100
- IF(IWHO.EQ.IGAP)ITYPEL=5 MOD02101
- IF(IWHO.EQ.ISHELL)ITYPEL=6 MOD02102
- IF(IWHO.EQ.IPLAT)ITYPEL=6 MOD02103
- IF(IWHO.EQ.IELBO)ITYPEL=7 MOD02104
- IF(MTYP(N).NE.0)GO TO 60 MOD02105
- WRITE(IOO, 50)N MOD02106
- 50 FORMAT(' ++ F ++ ILLEGAL ELEMENT TYPE FOR ELEMENT NUMER = ',I4) MOD02107
- STOP MOD02108
- 60 IF(MTYP(N).NE.1)GO TO 100 MOD02109
- IF(IGET(ICON(N,1)))CALL PRTERR(0) MOD02110
- IF(IGET(ICON(N,2)))CALL PRTERR(0) MOD02111
- IF(IGET(MATRI(N)))CALL PRTERR(0) MOD02112
- IF(RGET(BETA(N)))CALL PRTERR(0) MOD02113
- IF(IGET(IPS(N)))CALL PRTERR(0) MOD02114
- IF(MATRI(N).LE.0)MATRI(N)=1 MOD02115
- IF(IWHO.EQ.IGAP)MTYP(N)=-1 MOD02116
- IF(IWHO.EQ.IGAP)GO TO 70 MOD02117
- IF(RGET(DENSIT(N)))CALL PRTERR(0) MOD02118
- IF(RGET(AREA(N)))CALL PRTERR(0) MOD02119
- IWNON=AGETW(GET001) MOD02120
- IF(IWNON.EQ.NONN)NONTYP=1 MOD02121
- GO TO 80 MOD02122
- 70 AREA(N)=-1.0 MOD02123
- IF(IGET(IELD(N)))CALL PRTERR(0) MOD02124
- IF(RGET(CDIS(N)))CALL PRTERR(0) MOD02125
- IF(IGET(IELX(N)))CALL PRTERR(0) MOD02126
- IF(RGET(THICK(N)))CALL PRTERR(0) MOD02127
- 80 IF(ITHIS.EQ.0)GO TO 90 MOD02128
- NODOLD(ICON(N,1))=-ICON(N,1) MOD02129
- NODOLD(ICON(N,2))=-ICON(N,2) MOD02130
- ITHIS=0 MOD02131
- RETURN MOD02132
- 90 NODOLD(ICON(N,1))=ICON(N,1) MOD02133
- NODOLD(ICON(N,2))=ICON(N,2) MOD02134
- ITHIS=0 MOD02135
- RETURN MOD02136
- 100 IF(MTYP(N).NE.2)GO TO 130 MOD02137
- DO 110 J=1,3 MOD02138
- IF(IGET(ICON(N,J)))CALL PRTERR(0) MOD02139
- 110 CONTINUE MOD02140
- IF(IGET(MATRI(N)))CALL PRTERR(0) MOD02141
- IF(IGET(IPS(N)))CALL PRTERR(0) MOD02142
- IF(RGET(BETA(N)))CALL PRTERR(0) MOD02143
- IF(RGET(THICK(N)))CALL PRTERR(0) MOD02144
- IF(RGET(DENSIT(N)))CALL PRTERR(0) MOD02145
- IF(RGET(AREA(N)))CALL PRTERR(0) MOD02146
- IF(MATRI(N).LE.0)MATRI(N)=1 MOD02147
- DO 120 J=1,3 MOD02148
- NODOLD(ICON(N,J))=ICON(N,J) MOD02149
- IF(ITHIS.EQ.1)NODOLD(ICON(N,J))=-ICON(N,J) MOD02150
- 120 CONTINUE MOD02151
- ITHIS=0 MOD02152
- RETURN MOD02153
- 130 IF(MTYP(N).NE.17)GO TO 160 MOD02154
- 140 IF(IGET(IPS(N)))CALL PRTERR(0) MOD02155
- IF(RGET(BETA(N)))CALL PRTERR(0) MOD02156
- IF(IGET(MATRI(N)))CALL PRTERR(0) MOD02157
- IF(IGET(IELD(N)))CALL PRTERR(0) MOD02158
- IF(IELD(N).LE.0.AND.IWHO2.EQ.LLL)IELD(N)=3 MOD02159
- IF(IELD(N).LE.0.AND.IWHO2.EQ.ISHELL)IELD(N)=8 MOD02160
- IF(IELD(N).LE.0.AND.IWHO2.EQ.IPPP)IELD(N)=2 MOD02161
- IF(BETA(N).LE.0)BETA(N)=10.E+09 MOD02162
- CALL GETNL(GET001) MOD02163
- DO 150 I=1,20 MOD02164
- IF(IGET(ICON(N,I)))CALL PRTERR(0) MOD02165
- 150 CONTINUE MOD02166
- GO TO 270 MOD02167
- 160 IF(IGET(IPS(N)))CALL PRTERR(0) MOD02168
- IF(MTYP(N).EQ.3.OR.MTYP(N).EQ.4)GO TO 200 MOD02169
- IF(MTYP(N).EQ.8.OR.MTYP(N).EQ.11)GO TO 200 MOD02170
- IF(MTYP(N).EQ.12.OR.MTYP(N).EQ.13)GO TO 200 MOD02171
- IF(IGET(MATRI(N)))CALL PRTERR(0) MOD02172
- IF(MTYP(N).EQ.18)GO TO 162 MOD02173
- IF(MTYP(N).EQ.16)GO TO 162 MOD02174
- IF(RGET(BETA(N)))CALL PRTERR(0) MOD02175
- 162 IF(IGET(IELD(N)))CALL PRTERR(0) MOD02176
- IF(MTYP(N).EQ.18)GO TO 190 MOD02177
- IF(IGET(IELX(N)))CALL PRTERR(0) MOD02178
- IF(MTYP(N).EQ.16)GO TO 170 MOD02179
- IF(MTYP(N).NE.10)GO TO 163 MOD02180
- IF(RGET(THICK(N)))CALL PRTERR(0) MOD02181
- 163 CONTINUE MOD02182
- IF(RGET(DENSIT(N)))CALL PRTERR(0) MOD02183
- 170 MT12=MTYP(N) MOD02184
- IF(IELD(N).EQ.0)IELD(N)=NELAR(1,MT12) MOD02185
- IF(MTYP(N).EQ.16)GO TO 180 MOD02186
- IF(IELX(N).EQ.0)IELX(N)=NELAR(1,MT12) MOD02187
- 180 IF(MTYP(N).NE.16)GO TO 210 MOD02188
- IF(RGET(THICK(N)))CALL PRTERR(0) MOD02189
- IF(IGET(NTEMP(N)))CALL PRTERR(0) MOD02190
- IF(RGET(DENSIT(N)))CALL PRTERR(0) MOD02191
- IF(RGET(AREA(N)))CALL PRTERR(0) MOD02192
- MAXNDM=9 MOD02193
- IFRNDM=MAXNDM MOD02194
- GO TO 210 MOD02195
- 190 CONTINUE MOD02196
- BETA(N)=0 MOD02197
- IF(RGET(THICK(N)))CALL PRTERR(0) MOD02198
- IF(IGET(NTEMP(N)))CALL PRTERR(0) MOD02199
- IF(RGET(DENSIT(N)))CALL PRTERR(0) MOD02200
- IF(RGET(AREA(N)))CALL PRTERR(0) MOD02201
- MAXNDM=16 MOD02202
- IFRNDM=MAXNDM MOD02203
- GO TO 210 MOD02204
- 200 IF(RGET(BETA(N)))CALL PRTERR(0) MOD02205
- IF(RGET(THICK(N)))CALL PRTERR(0) MOD02206
- IF(IGET(MATRI(N)))CALL PRTERR(0) MOD02207
- IF(IGET(IELD(N)))CALL PRTERR(0) MOD02208
- IF(RGET(DENSIT(N)))CALL PRTERR(0) MOD02209
- AREA(N)=THICK(N) MOD02210
- 210 IF(MATRI(N).EQ.0)MATRI(N)=1 MOD02211
- CALL GETNL(GET001) MOD02212
- IF(MTYP(N).NE.18)GO TO 230 MOD02213
- DO 220 I=1,16 MOD02214
- IF(IGET(ICON(N,I)))CALL PRTERR(0) MOD02215
- 220 CONTINUE MOD02216
- GO TO 270 MOD02217
- 230 DO 240 I=1,9 MOD02218
- IF(IGET(ICON(N,I)))CALL PRTERR(0) MOD02219
- 240 CONTINUE MOD02220
- IF(MTYP(N).NE.10)GO TO 270 MOD02221
- IF(IELD(N).LE.8)GO TO 270 MOD02222
- IF(IELX(N).LE.8)GO TO 270 MOD02223
- CALL GETNL(GET001) MOD02224
- IF(IGET(IDUM))GO TO 260 MOD02225
- ICON(N,9)=IDUM MOD02226
- DO 250 I=10,20 MOD02227
- IF(IGET(ICON(N,I)))CALL PRTERR(0) MOD02228
- 250 CONTINUE MOD02229
- MAXNDM=20 MOD02230
- IFRNDM=MAXNDM MOD02231
- GO TO 270 MOD02232
- 260 BACKSPACE INNN MOD02233
- ERROR=.FALSE. MOD02234
- 270 DO 280 I=1,20 MOD02235
- KAB=ICON(N,I) MOD02236
- IF(KAB.EQ.0)GO TO 280 MOD02237
- NODOLD(KAB)=KAB MOD02238
- IF(ITHIS.EQ.1)NODOLD(KAB)=-KAB MOD02239
- 280 CONTINUE MOD02240
- RETURN MOD02241
- 290 IF(IGET(MTYP(N)))CALL PRTERR(0) MOD02242
- IF(IGET(N1))CALL PRTERR(0) MOD02243
- IF(IGET(N2))CALL PRTERR(0) MOD02244
- IF(IGET(N3))CALL PRTERR(0) MOD02245
- IF(IGET(N4))CALL PRTERR(0) MOD02246
- IF(IGET(NDMX))CALL PRTERR(0) MOD02247
- IF(RGET(DENSIT(N)))CALL PRTERR(0) MOD02248
- IF(RGET(AREA(N)))CALL PRTERR(0) MOD02249
- MATRI(N)=N1 MOD02250
- THICK(N)=N2 MOD02251
- BETA(N)=N3 MOD02252
- IPS(N)=N4 MOD02253
- IELD(N)=NDMX MOD02254
- IF(NDMX.GT.MAXNDM)MAXNDM=NDMX MOD02255
- IFRNDM=MAXNDM MOD02256
- IF(MTYP(N).EQ.7)RETURN MOD02257
- CALL GETNL(GET001) MOD02258
- DO 300 I=1,8 MOD02259
- IF(IGET(ICON(N,I)))CALL PRTERR(0) MOD02260
- 300 CONTINUE MOD02261
- IF(MTYP(N).EQ.10.OR.MTYP(N).EQ.16)GO TO 310 MOD02262
- RETURN MOD02263
- 310 IF(NDMX.LE.8)RETURN MOD02264
- CALL GETNL(GET001) MOD02265
- DO 320 I=9,20 MOD02266
- IF(IGET(ICON(N,I)))CALL PRTERR(0) MOD02267
- 320 CONTINUE MOD02268
- RETURN MOD02269
- END MOD02270
- SUBROUTINE REPEA1(LIMIT,NUMEL,MTYP,IPS,MATRI,THICK,BETA,ICON,IELD MOD05961
- 1,IELX,NTEMP,NODOLD,DENSIT,AREA,CDIS,CVEL) MOD05962
- INTEGER AGET,AGETW MOD05963
- LOGICAL IGET,RGET MOD05964
- COMMON/SAP6/ISAP6 MOD05965
- COMMON/BEAM3/IGEN3 MOD05966
- DIMENSION MTYP(NUMEL),IPS(NUMEL),MATRI(NUMEL),THICK(NUMEL) MOD05967
- 1,BETA(NUMEL),ICON(NUMEL,20),IELD(NUMEL),IELX(NUMEL),NTEMP(NUMEL) MOD05968
- 2,NODOLD(LIMIT),DENSIT(NUMEL),AREA(NUMEL),CDIS(NUMEL) MOD05969
- 3,CVEL(NUMEL) MOD05970
- DO 10 I=3,6 MOD05971
- IX=AGET(I) MOD05972
- 10 CONTINUE MOD05973
- IF(IGET(NTIM))CALL PRTERR(0) MOD05974
- IF(IGET(IELM1))CALL PRTERR(0) MOD05975
- IF(IGET(IELM2))CALL PRTERR(0) MOD05976
- IF(IGET(INCR))CALL PRTERR(0) MOD05977
- IF(IGET(IADD))CALL PRTERR(0) MOD05978
- IF(ISAP6.NE.1)GO TO 12 MOD05979
- IF(IGET(IN1))CALL PRTERR(0) MOD05980
- IF(IGET(IN2))CALL PRTERR(0) MOD05981
- IF(IGET(IN3))CALL PRTERR(0) MOD05982
- IF(IGET(IN4))CALL PRTERR(0) MOD05983
- GO TO 14 MOD05984
- 12 IF(RGET(TINC))CALL PRTERR(0) MOD05985
- IF(RGET(BINC))CALL PRTERR(0) MOD05986
- IF(IGET(MINC))CALL PRTERR(0) MOD05987
- IF(IGET(LINC))CALL PRTERR(0) MOD05988
- IF(IGET(INTEMP))CALL PRTERR(0) MOD05989
- 14 IF(NTIM.EQ.0)NTIM=1 MOD05990
- IF(IADD.EQ.0)IADD=1 MOD05991
- IF(IELM1.LE.0)IELM1=1 MOD05992
- IF(INCR.EQ.0)INCR=1 MOD05993
- IF(IELM2.LE.0)IELM2=IELM1 MOD05994
- IF(IELM2.GE.IELM1)GO TO 15 MOD05995
- IDOM=IELM1 MOD05996
- IELM1=IELM2 MOD05997
- IELM2=IDOM MOD05998
- 15 CONTINUE MOD05999
- J=IELM1 MOD06000
- I=1 MOD06001
- 16 CONTINUE MOD06002
- IELMX=0 MOD06003
- DO 17 L=1,NUMEL MOD06004
- IF(MTYP(L).LE.0)GO TO 21 MOD06005
- IELMX=L MOD06006
- 17 CONTINUE MOD06007
- 21 CONTINUE MOD06008
- IELM1=J MOD06009
- INTM=I MOD06010
- DO 30 I=INTM,NTIM MOD06011
- M=0 MOD06012
- DO 20 J=IELM1,IELM2,INCR MOD06013
- M=M+1 MOD06014
- N=M+IELMX MOD06015
- IF(N.GT.NUMEL)CALL PRTERR(9) MOD06016
- IF(MTYP(N).GT.0) GO TO 16 MOD06017
- MTYP(N)=MTYP(J) MOD06018
- IF(ISAP6.NE.1)GO TO 32 MOD06019
- MATRI(N)=MATRI(J)+IN1 MOD06020
- THICK(N)=THICK(J)+IN2 MOD06021
- BETA(N)=BETA(J)+IN3 MOD06022
- IPS(N)=IPS(J)+IN4 MOD06023
- GO TO 33 MOD06024
- 32 IPS(N)=IPS(J) MOD06025
- IF(MTYP(N).EQ.16)GO TO 35 MOD06026
- BETA(N)=BETA(J)+BINC MOD06027
- THICK(N)=THICK(J)+TINC MOD06028
- MATRI(N)=MATRI(J)+MINC MOD06029
- NTEMP(N)=NTEMP(J)+INTEMP MOD06030
- GO TO 33 MOD06031
- 35 THICK(N)=THICK(J)+LINC MOD06032
- MATRI(N)=MATRI(J)+MINC MOD06033
- AREA(N)=AREA(J)+TINC MOD06034
- NTEMP(N)=NTEMP(J) MOD06035
- 33 IELD(N)=IELD(J) MOD06036
- IELX(N)=IELX(J) MOD06037
- DENSIT(N)=DENSIT(J) MOD06038
- IF(MTYP(N).NE.16)AREA(N)=AREA(J) MOD06039
- CDIS(N)=CDIS(J) MOD06040
- CVEL(N)=CVEL(J) MOD06041
- IF(MTYP(N).NE.2)GO TO 28 MOD06042
- IF(IGEN3.EQ.1)GO TO 28 MOD06043
- DO 27 K=1,2 MOD06044
- IF(ICON(J,K).LE.0)GO TO 27 MOD06045
- ICON(N,K)=ICON(J,K)+IADD MOD06046
- 27 CONTINUE MOD06047
- IF(IGEN3.EQ.0)ICON(N,3)=ICON(J,3) MOD06048
- IF(IGEN3.EQ.2)ICON(N,3)=ICON(J,3)-IADD MOD06049
- GO TO 19 MOD06050
- 28 DO 18 K=1,20 MOD06051
- IF(ICON(J,K).EQ.0)GO TO 18 MOD06052
- ICON(N,K)=ICON(J,K)+IADD MOD06053
- KAB0=ICON(J,K) MOD06054
- KAB1=ICON(N,K) MOD06055
- NODOLD(KAB1)=KAB1 MOD06056
- IF(NODOLD(KAB0).LT.0)NODOLD(KAB1)=-KAB1 MOD06057
- 18 CONTINUE MOD06058
- 19 CONTINUE MOD06059
- 20 CONTINUE MOD06060
- IELM1=IELMX+1 MOD06061
- IELM2=IELM1+M-1 MOD06062
- IELMX=N MOD06063
- INCR=1 MOD06064
- 30 CONTINUE MOD06065
- RETURN MOD06066
- END MOD06067
- SUBROUTINE ROTAT1(LIMIT,NSTOR,X,Y,Z) MOD06104
- LOGICAL IGET,RGET MOD06105
- INTEGER AGET,AGETW MOD06106
- DIMENSION NSTOR(LIMIT),X(LIMIT),Y(LIMIT),Z(LIMIT),IX(4) MOD06107
- COMMON/UNIT/IN,IO MOD06108
- DATA IX/1HX,1HY,1HZ,1HA/ MOD06109
- DATA IBLANK/1H / MOD06110
- DO 10 I=3,7 MOD06111
- IDOM=AGET(I) MOD06112
- IF(IDOM.EQ.IBLANK)GO TO 11 MOD06113
- 10 CONTINUE MOD06114
- 11 IF(IGET(NTIM))CALL PRTERR(0) MOD06115
- IF(IGET(N1))CALL PRTERR(0) MOD06116
- IF(IGET(N2))CALL PRTERR(0) MOD06117
- IF(IGET(INC))CALL PRTERR(0) MOD06118
- IF(IGET(IADD))CALL PRTERR(0) MOD06119
- IF(RGET(DEGR))CALL PRTERR(0) MOD06120
- IAX=AGETW(AG001) MOD06121
- IF(IAX.NE.IX(4))GO TO 230 MOD06122
- CALL GETNL(GET001) MOD06123
- IF(RGET(X1))CALL PRTERR(0) MOD06124
- IF(RGET(Y1))CALL PRTERR(0) MOD06125
- IF(RGET(Z1))CALL PRTERR(0) MOD06126
- IF(RGET(X2))CALL PRTERR(0) MOD06127
- IF(RGET(Y2))CALL PRTERR(0) MOD06128
- IF(RGET(Z2))CALL PRTERR(0) MOD06129
- AA=ABS(Z2-Z1) MOD06130
- BB=ABS(X2-X1) MOD06131
- CC=ABS(Y2-Y1) MOD06132
- RR=SQRT(AA**2+BB**2+CC**2) MOD06133
- R=SQRT(BB**2+CC**2) MOD06134
- IF(R.EQ.0.0)GO TO 200 MOD06135
- ALFA=ARCOS(BB/R) MOD06136
- GO TO 210 MOD06137
- 200 ALFA=0.0 MOD06138
- 210 IF(RR.EQ.0.0)GO TO 220 MOD06139
- BET=ARSIN(AA/RR) MOD06140
- GO TO 230 MOD06141
- 220 BET=0.0 MOD06142
- 230 CONTINUE MOD06143
- PI=4.0*ATAN(1.0) MOD06144
- IF(NTIM.LE.0)NTIM=1 MOD06145
- IF(INC.EQ.0)INC=1 MOD06146
- IF(DEGR.NE.0.0)GO TO 15 MOD06147
- DEGR=360.0/(NTIM+1) MOD06148
- 15 DEGR=DEGR*PI/180.0 MOD06149
- DO 20 I=1,4 MOD06150
- IF(IX(I).EQ.IAX)GO TO 30 MOD06151
- 20 CONTINUE MOD06152
- WRITE(IO,24)IAX MOD06153
- 24 FORMAT(' ++ F ++ AXES FOR ROTATION = ',A4,' IS ILLEGAL MOD06154
- 1CHECK ROTATION PARAMETERS ') MOD06155
- STOP MOD06156
- 30 IF(N1.LE.0)N1=1 MOD06157
- IF(N2.NE.0)GO TO 55 MOD06158
- N2=1 MOD06159
- DO 40 J=1,LIMIT MOD06160
- IF(NSTOR(J).LE.0)GO TO 40 MOD06161
- IF(NSTOR(J).GT.N2)N2=NSTOR(J) MOD06162
- 40 CONTINUE MOD06163
- WRITE(IO,56)N1,N2 MOD06164
- 56 FORMAT(' ++ W ++ NODE GENERATION IS DONE FROM ',I5,' TO ',I5 MOD06165
- 1,' FOR ROTATION ') MOD06166
- 55 IADDRE=IADD MOD06167
- DEGR1=DEGR MOD06168
- DO 100 M=1,NTIM MOD06169
- DO 60 K=N1,N2,INC MOD06170
- NOD=K+IADDRE MOD06171
- IF(NOD.GT.LIMIT)CALL PRTERR(7) MOD06172
- NSTOR(NOD)=NOD MOD06173
- GO TO (61,62,63,64),I MOD06174
- 61 ZT=Z(K)*COS(DEGR1)-Y(K)*SIN(DEGR1) MOD06175
- Y(NOD)=Y(K)*COS(DEGR1)+Z(K)*SIN(DEGR1) MOD06176
- Z(NOD)=ZT MOD06177
- X(NOD)=X(K) MOD06178
- GO TO 60 MOD06179
- 62 XT=X(K)*COS(DEGR1)-Z(K)*SIN(DEGR1) MOD06180
- Z(NOD)=Z(K)*COS(DEGR1)+X(K)*SIN(DEGR1) MOD06181
- X(NOD)=XT MOD06182
- Y(NOD)=Y(K) MOD06183
- GO TO 60 MOD06184
- 63 XT=X(K)*COS(DEGR1)+Y(K)*SIN(DEGR1) MOD06185
- Y(NOD)=Y(K)*COS(DEGR1)-X(K)*SIN(DEGR1) MOD06186
- X(NOD)=XT MOD06187
- Z(NOD)=Z(K) MOD06188
- GO TO 60 MOD06189
- 64 XNE=X(K)-X1 MOD06190
- YNE=Y(K)-Y1 MOD06191
- ZNE=Z(K)-Z1 MOD06192
- IF(ALFA.EQ.0.0)GO TO 300 MOD06193
- XT=XNE*COS(ALFA)+YNE*SIN(ALFA) MOD06194
- YNE=YNE*COS(ALFA)-XNE*SIN(ALFA) MOD06195
- XNE=XT MOD06196
- 300 IF(BET.EQ.0.0)GO TO 310 MOD06197
- XT=XNE*COS(-BET)-ZNE*SIN(-BET) MOD06198
- ZNE=ZNE*COS(-BET)+XNE*SIN(-BET) MOD06199
- XNE=XT MOD06200
- 310 ZT=ZNE*COS(DEGR1)-YNE*SIN(DEGR1) MOD06201
- YNE=YNE*COS(DEGR1)+ZNE*SIN(DEGR1) MOD06202
- ZNE=ZT MOD06203
- IF(BET.EQ.0.0)GO TO 340 MOD06204
- XT=XNE*COS(BET)-ZNE*SIN(BET) MOD06205
- ZNE=ZNE*COS(BET)+XNE*SIN(BET) MOD06206
- XNE=XT MOD06207
- 340 IF(ALFA.EQ.0.0)GO TO 350 MOD06208
- XT=XNE*COS(-ALFA)+YNE*SIN(-ALFA) MOD06209
- YNE=YNE*COS(-ALFA)-XNE*SIN(-ALFA) MOD06210
- XNE=XT MOD06211
- 350 X(NOD)=XNE+X1 MOD06212
- Y(NOD)=YNE+Y1 MOD06213
- Z(NOD)=ZNE+Z1 MOD06214
- 60 CONTINUE MOD06215
- IADDRE=IADDRE+IADD MOD06216
- DEGR1=DEGR1+DEGR MOD06217
- 100 CONTINUE MOD06218
- RETURN MOD06219
- END MOD06220
- SUBROUTINE TRANS1(LIMIT,NSTOR,X,Y,Z) MOD07052
- INTEGER AGET,AGETW MOD07053
- LOGICAL IGET,RGET MOD07054
- DIMENSION NSTOR(LIMIT),X(LIMIT),Y(LIMIT),Z(LIMIT) MOD07055
- DO 10 I=3,9 MOD07056
- IDOM=AGET(I) MOD07057
- IF(IDOM.EQ.IBLANK)GO TO 11 MOD07058
- 10 CONTINUE MOD07059
- 11 IF(IGET(NTIM))CALL PRTERR(0) MOD07060
- IF(IGET(N1))CALL PRTERR(0) MOD07061
- IF(IGET(N2))CALL PRTERR(0) MOD07062
- IF(IGET(INCR))CALL PRTERR(0) MOD07063
- IF(IGET(IADD))CALL PRTERR(0) MOD07064
- IF(RGET(DX))CALL PRTERR(0) MOD07065
- IF(RGET(DY))CALL PRTERR(0) MOD07066
- IF(RGET(DZ))CALL PRTERR(0) MOD07067
- IF(NTIM.EQ.0)NTIM=1 MOD07068
- IF(INCR.EQ.0)INCR=1 MOD07069
- IF(N1.LE.0)N1=1 MOD07070
- IF(N2.NE.0)GO TO 30 MOD07071
- DO 14 J=1,LIMIT MOD07072
- IF(NSTOR(J).EQ.0)GO TO 14 MOD07073
- IF(NSTOR(J).GT.N2)N2=NSTOR(J) MOD07074
- 14 CONTINUE MOD07075
- WRITE(IO,21)N1,N2 MOD07076
- 21 FORMAT(' ++ W ++ TRANSLATION IS DONE FROM NODE = ',I5,' TO' MOD07077
- 1,I5) MOD07078
- 30 CONTINUE MOD07079
- TX=DX MOD07080
- TY=DY MOD07081
- TZ=DZ MOD07082
- IADDRE=IADD MOD07083
- DO 100 M=1,NTIM MOD07084
- DO 50 K=N1,N2,INCR MOD07085
- NOD=K+IADDRE MOD07086
- IF(NOD.GT.LIMIT)CALL PRTERR(7) MOD07087
- NSTOR(NOD)=NOD MOD07088
- X(NOD)=X(K)+TX MOD07089
- Y(NOD)=Y(K)+TY MOD07090
- Z(NOD)=Z(K)+TZ MOD07091
- 50 CONTINUE MOD07092
- IADDRE=IADDRE+IADD MOD07093
- TX=TX+DX MOD07094
- TY=TY+DY MOD07095
- TZ=TZ+DZ MOD07096
- 100 CONTINUE MOD07097
- RETURN MOD07098
- END MOD07099
- SUBROUTINE MERGE1(LIMIT,NUMEL,NSTOR,X,Y,Z,IBON,ICON,IOLD,NEW MOD04175
- 1,NODOLD) MOD04176
- LOGICAL IGET,RGET MOD04177
- INTEGER AGET,AGETW MOD04178
- COMMON/SAP6/ISAP6 MOD04179
- DIMENSION NSTOR(LIMIT),X(LIMIT),Y(LIMIT),Z(LIMIT),IBON(LIMIT,6) MOD04180
- 1,ICON(NUMEL,20),IOLD(LIMIT),NEW(LIMIT),NODOLD(LIMIT) MOD04181
- COMMON/UNIT/IN,IO MOD04182
- DATA IBLANK/1H / MOD04183
- DO 10 I=3,5 MOD04184
- IDOM=AGET(I) MOD04185
- IF(IDOM.EQ.IBLANK)GO TO 11 MOD04186
- 10 CONTINUE MOD04187
- 11 IF(RGET(ZONE))CALL PRTERR(0) MOD04188
- IF(IGET(IECHO))CALL PRTERR(0) MOD04189
- IF(ZONE.EQ.0.0)ZONE=0.0001 MOD04190
- ICO=0 MOD04191
- ITOTN=0 MOD04192
- LL=LIMIT-1 MOD04193
- IF(LL.LE.0)RETURN MOD04194
- DO 21 I=1,LL MOD04195
- IF(NSTOR(I).EQ.0.OR.NSTOR(I).EQ.-1)GO TO 20 MOD04196
- J=I+1 MOD04197
- DO 19 K=J,LIMIT MOD04198
- IF(NSTOR(K).EQ.0.OR.NSTOR(K).EQ.-1)GO TO 18 MOD04199
- A=ABS(X(I)-X(K)) MOD04200
- B=ABS(Y(I)-Y(K)) MOD04201
- C=ABS(Z(I)-Z(K)) MOD04202
- IF(A.LE.ZONE.AND.B.LE.ZONE.AND.C.LE.ZONE)GO TO 22 MOD04203
- GO TO 18 MOD04204
- 22 ICO=ICO+1 MOD04205
- ITOTN=ITOTN+1 MOD04206
- IF(NODOLD(K).LT.0)NODOLD(I)=-IABS(NODOLD(I)) MOD04207
- NEW(ICO)=NSTOR(I) MOD04208
- IOLD(ICO)=NSTOR(K) MOD04209
- M1=NSTOR(I) MOD04210
- M2=NSTOR(K) MOD04211
- DO 28 MM=1,6 MOD04212
- IF(IBON(M1,MM).EQ.1)GO TO 27 MOD04213
- IBON(M1,MM)=IBON(M1,MM)+IBON(M2,MM) MOD04214
- 27 CONTINUE MOD04215
- 28 CONTINUE MOD04216
- NSTOR(K)=-1 MOD04217
- 18 CONTINUE MOD04218
- 19 CONTINUE MOD04219
- 20 CONTINUE MOD04220
- 21 CONTINUE MOD04221
- IF(ICO.NE.0)GO TO 30 MOD04222
- WRITE(IO,23)ZONE MOD04223
- 23 FORMAT(' ++ W ++ THERE WERE NO COINCIDENT NODES WITH ZONE = ' MOD04224
- 1,F15.7) MOD04225
- RETURN MOD04226
- 30 ISUB=0 MOD04227
- KI=1 MOD04228
- DO 40 I=1,LIMIT MOD04229
- IF(NSTOR(I).NE.-1)GO TO 35 MOD04230
- ISUB=ISUB+1 MOD04231
- NODOLD(I)=0 MOD04232
- NSTOR(I)=0 MOD04233
- GO TO 40 MOD04234
- 35 IF(ISUB.EQ.0)GO TO 36 MOD04235
- ICO=ICO+1 MOD04236
- IOLD(ICO)=NSTOR(I) MOD04237
- NEW(ICO)=NSTOR(I)-ISUB MOD04238
- 36 NSTOR(KI)=NSTOR(I)-ISUB MOD04239
- IF(KI.NE.I)NSTOR(I)=0 MOD04240
- MP=1 MOD04241
- IF(NODOLD(I).LT.0)MP=-1 MOD04242
- NODOLD(KI)=(IABS(NODOLD(I))-ISUB)*MP MOD04243
- IF(KI.NE.I)NODOLD(I)=0 MOD04244
- X(KI)=X(I) MOD04245
- Y(KI)=Y(I) MOD04246
- Z(KI)=Z(I) MOD04247
- DO 37 MM=1,6 MOD04248
- IBON(KI,MM)=IBON(I,MM) MOD04249
- 37 CONTINUE MOD04250
- KI=KI+1 MOD04251
- 40 CONTINUE MOD04252
- IF(IECHO.EQ.1)WRITE(IO,299) MOD04253
- DO 300 I=1,ICO MOD04254
- IF(IOLD(I).EQ.0)GO TO 300 MOD04255
- 299 FORMAT(10X,'OLD NODE',3X,'NEW NODE') MOD04256
- WRITE(61,310)IOLD(I),NEW(I) MOD04257
- IF(IECHO.EQ.1)WRITE(IO,311)IOLD(I),NEW(I) MOD04258
- 300 CONTINUE MOD04259
- 310 FORMAT(2I5) MOD04260
- 311 FORMAT(10X,I5,8X,I5) MOD04261
- DO 100 I=1,NUMEL MOD04262
- DO 60 J=1,20 MOD04263
- IF(ICON(I,J).EQ.0)GO TO 60 MOD04264
- DO 70 K=1,ICO MOD04265
- IF(ICON(I,J).NE.IOLD(K))GO TO 70 MOD04266
- ICON(I,J)=NEW(K) MOD04267
- 70 CONTINUE MOD04268
- 60 CONTINUE MOD04269
- 100 CONTINUE MOD04270
- WRITE(IO,101)ITOTN MOD04271
- 101 FORMAT(' ++ W ++ ',I5,' COINCIDENT NODES DELETED ') MOD04272
- RETURN MOD04273
- END MOD04274
- SUBROUTINE SCALE1(LIMIT,NSTOR,X,Y,Z) MOD06252
- INTEGER AGET,AGETW MOD06253
- LOGICAL IGET,RGET MOD06254
- DIMENSION NSTOR(LIMIT),X(LIMIT),Y(LIMIT),Z(LIMIT) MOD06255
- DO 10 I=3,5 MOD06256
- IDOM=AGET(I) MOD06257
- IF(IDOM.EQ.IBLANK)GO TO 11 MOD06258
- 10 CONTINUE MOD06259
- 11 IF(IGET(NTIM))CALL PRTERR(0) MOD06260
- IF(IGET(N1))CALL PRTERR(0) MOD06261
- IF(IGET(N2))CALL PRTERR(0) MOD06262
- IF(IGET(INCR))CALL PRTERR(0) MOD06263
- IF(IGET(IADD))CALL PRTERR(0) MOD06264
- IF(RGET(DX))CALL PRTERR(0) MOD06265
- IF(RGET(DY))CALL PRTERR(0) MOD06266
- IF(RGET(DZ))CALL PRTERR(0) MOD06267
- IF(NTIM.EQ.0)NTIM=1 MOD06268
- IF(INCR.EQ.0)INCR=1 MOD06269
- IF(N1.LE.0)N1=1 MOD06270
- IF(N2.NE.0)GO TO 30 MOD06271
- DO 14 J=1,LIMIT MOD06272
- IF(NSTOR(J).EQ.0)GO TO 14 MOD06273
- IF(NSTOR(J).GT.N2)N2=NSTOR(J) MOD06274
- 14 CONTINUE MOD06275
- WRITE(IO,21)N1,N2 MOD06276
- 21 FORMAT(' ++ W ++ SCALING IS DONE FROM NODE = ',I5,' TO' MOD06277
- 1,I5) MOD06278
- 30 CONTINUE MOD06279
- IF(DX.EQ.0)DX=1 MOD06280
- IF(DY.EQ.0)DY=1 MOD06281
- IF(DZ.EQ.0)DZ=1 MOD06282
- TX=DX MOD06283
- TY=DY MOD06284
- TZ=DZ MOD06285
- IADDRE=IADD MOD06286
- DO 100 M=1,NTIM MOD06287
- DO 50 K=N1,N2,INCR MOD06288
- NOD=K+IADDRE MOD06289
- IF(NOD.GT.LIMIT)CALL PRTERR(7) MOD06290
- NSTOR(NOD)=NOD MOD06291
- X(NOD)=X(K)*TX MOD06292
- Y(NOD)=Y(K)*TY MOD06293
- Z(NOD)=Z(K)*TZ MOD06294
- 50 CONTINUE MOD06295
- IADDRE=IADDRE+IADD MOD06296
- TX=TX*DX MOD06297
- TY=TY*DY MOD06298
- TZ=TZ*DZ MOD06299
- 100 CONTINUE MOD06300
- RETURN MOD06301
- END MOD06302
- SUBROUTINE DNODE1(LIMIT,NUMEL,NSTOR,X,Y,Z,IBON,ICON) MOD02006
- LOGICAL IGET,RGET MOD02007
- INTEGER AGET,AGETW MOD02008
- DIMENSION NSTOR(LIMIT),X(LIMIT),Y(LIMIT),Z(LIMIT),IBON(LIMIT,6) MOD02009
- 1,ICON(NUMEL,20) MOD02010
- COMMON/UNIT/IN,IO MOD02011
- DATA IBLANK/1H / MOD02012
- DO 10 I=3,5 MOD02013
- IDOM=AGET(I) MOD02014
- IF(IDOM.EQ.IBLANK)GO TO 11 MOD02015
- 10 CONTINUE MOD02016
- 11 IF(IGET(NN1))CALL PRTERR(0) MOD02017
- IF(IGET(NN2))CALL PRTERR(0) MOD02018
- IF(IGET(INC12))CALL PRTERR(0) MOD02019
- ICO=0 MOD02020
- ITOTN=0 MOD02021
- IF(NN1.LE.0)NN1=1 MOD02022
- IF(INC12.LE.0)INC12=1 MOD02023
- LL=LIMIT MOD02024
- IF(NN2.LE.LL)GO TO 12 MOD02025
- WRITE(IO,13)NN2 MOD02026
- 13 FORMAT(' ++ F ++ THE LAST NODE TO BE DELETED =',I4,' IS MOD02027
- 1GREATER THAN TOTAL NODES ') MOD02028
- STOP MOD02029
- 12 DO 20 I=NN1,NN2,INC12 MOD02030
- NSTOR(I)=-1 MOD02031
- 20 CONTINUE MOD02032
- 30 ISUB=0 MOD02033
- KI=1 MOD02034
- DO 40 I=1,LIMIT MOD02035
- IF(NSTOR(I).NE.-1)GO TO 35 MOD02036
- ISUB=ISUB+1 MOD02037
- NSTOR(I)=0 MOD02038
- GO TO 40 MOD02039
- 35 NSTOR(KI)=NSTOR(I)-ISUB MOD02040
- IF(KI.NE.I)NSTOR(I)=0 MOD02041
- X(KI)=X(I) MOD02042
- Y(KI)=Y(I) MOD02043
- Z(KI)=Z(I) MOD02044
- KI=KI+1 MOD02045
- 40 CONTINUE MOD02046
- RETURN MOD02047
- END MOD02048
- SUBROUTINE SYMET1(LIMIT,NSTOR,X,Y,Z) MOD07012
- INTEGER AGET,AGETW,RX,RY,RZ,PX,PY,PZ MOD07013
- LOGICAL IGET,RGET MOD07014
- DIMENSION NSTOR(LIMIT),X(LIMIT),Y(LIMIT),Z(LIMIT) MOD07015
- DATA PX/1HX/,PY/1HY/,PZ/1HZ/ MOD07016
- DO 10 I=3,5 MOD07017
- IDOM=AGET(I) MOD07018
- IF(IDOM.EQ.IBLANK)GO TO 11 MOD07019
- 10 CONTINUE MOD07020
- 11 IF(IGET(N1))CALL PRTERR(0) MOD07021
- IF(IGET(N2))CALL PRTERR(0) MOD07022
- IF(IGET(INCR))CALL PRTERR(0) MOD07023
- IF(IGET(IADD))CALL PRTERR(0) MOD07024
- RX=AGETW(AG001) MOD07025
- RY=AGETW(AG001) MOD07026
- RZ=AGETW(AG001) MOD07027
- IF(INCR.EQ.0)INCR=1 MOD07028
- IF(N1.LE.0)N1=1 MOD07029
- IF(N2.NE.0)GO TO 30 MOD07030
- DO 14 J=1,LIMIT MOD07031
- IF(NSTOR(J).EQ.0)GO TO 14 MOD07032
- IF(NSTOR(J).GT.N2)N2=NSTOR(J) MOD07033
- 14 CONTINUE MOD07034
- WRITE(IO,21)N1,N2 MOD07035
- 21 FORMAT(' ++ W ++ TRANSLATION IS DONE FROM NODE = ',I5,' TO' MOD07036
- 1,I5) MOD07037
- 30 CONTINUE MOD07038
- DO 50 K=N1,N2,INCR MOD07039
- NOD=K+IADD MOD07040
- IF(NOD.GT.LIMIT)CALL PRTERR(7) MOD07041
- NSTOR(NOD)=NOD MOD07042
- X(NOD)=X(K) MOD07043
- Y(NOD)=Y(K) MOD07044
- Z(NOD)=Z(K) MOD07045
- IF(RX.EQ.PX.OR.RY.EQ.PX.OR.RZ.EQ.PX)X(NOD)=-X(K) MOD07046
- IF(RX.EQ.PY.OR.RY.EQ.PY.OR.RZ.EQ.PY)Y(NOD)=-Y(K) MOD07047
- IF(RX.EQ.PZ.OR.RY.EQ.PZ.OR.RZ.EQ.PZ)Z(NOD)=-Z(K) MOD07048
- 50 CONTINUE MOD07049
- RETURN MOD07050
- END MOD07051
- SUBROUTINE TRIAN1(LIMIT,NODE,X,Y,Z) MOD07133
- LOGICAL IGET,RGET MOD07134
- DIMENSION NODE(LIMIT),X(LIMIT),Y(LIMIT),Z(LIMIT) MOD07135
- 1,NCO(6),AN(6),XX(6),YY(6),ZZ(6) MOD07136
- IF(IGET(NDI))CALL PRTERR(0) MOD07137
- CALL GETNL(GET001) MOD07138
- DO 10 I=1,6 MOD07139
- IF(IGET(NCO(I)))CALL PRTERR(0) MOD07140
- 10 CONTINUE MOD07141
- IF(NDI.EQ.0)NDI=NCO(2)-NCO(1) MOD07142
- IF(NDI.EQ.0)GO TO 999 MOD07143
- INC=(NCO(2)-NCO(1))/NDI MOD07144
- IF(INC.LE.0)GO TO 999 MOD07145
- DO 20 I=1,6 MOD07146
- XX(I)=X(NCO(I)) MOD07147
- YY(I)=Y(NCO(I)) MOD07148
- ZZ(I)=Z(NCO(I)) MOD07149
- 20 CONTINUE MOD07150
- DO 30 I=4,6 MOD07151
- II=I-2 MOD07152
- IF(II.EQ.4)II=1 MOD07153
- IF(NCO(I).NE.0)GO TO 30 MOD07154
- XX(I)=(XX(I-3)+XX(II))/2.0 MOD07155
- YY(I)=(YY(I-3)+YY(II))/2.0 MOD07156
- ZZ(I)=(ZZ(I-3)+ZZ(II))/2.0 MOD07157
- 30 CONTINUE MOD07158
- M=NDI MOD07159
- NOD=NCO(1) MOD07160
- LLL=M+1 MOD07161
- DO 40 J=1,LLL MOD07162
- KK=M+2-J MOD07163
- DO 40 I=1,KK MOD07164
- AL3=J-1 MOD07165
- AL2=I-1 MOD07166
- AL1=M-AL2-AL3 MOD07167
- AM=M MOD07168
- AL1=AL1/AM MOD07169
- AL2=AL2/AM MOD07170
- AL3=AL3/AM MOD07171
- AN(1)=(2.*AL1-1.)*AL1 MOD07172
- AN(2)=(2.*AL2-1.)*AL2 MOD07173
- AN(3)=(2.*AL3-1.)*AL3 MOD07174
- AN(4)=4.*AL1*AL2 MOD07175
- AN(5)=4.*AL2*AL3 MOD07176
- AN(6)=4.*AL3*AL1 MOD07177
- AX=0.0 MOD07178
- AY=0.0 MOD07179
- AZ=0.0 MOD07180
- DO 35 K=1,6 MOD07181
- AX=AX + AN(K)*XX(K) MOD07182
- AY=AY+AN(K)*YY(K) MOD07183
- AZ=AZ+AN(K)*ZZ(K) MOD07184
- 35 CONTINUE MOD07185
- X(NOD)=AX MOD07186
- Y(NOD)=AY MOD07187
- Z(NOD)=AZ MOD07188
- NODE(NOD)=NOD MOD07189
- NOD=NOD+INC MOD07190
- 40 CONTINUE MOD07191
- RETURN MOD07192
- 999 WRITE(IO,998) MOD07193
- 998 FORMAT(' ++ F ++ TRIANGULAT SURFACE GENERATION WILL BE MOD07194
- 1TERMINATED BECAUSE : ',/ MOD07195
- 2,12X,'EITHER NUMBER OF DIVISIONS OR NODE INCREMENT ARE WRONG') MOD07196
- STOP MOD07197
- END MOD07198