構造力学 構造工学特論

BASICプログラム

単純ねじりの格子桁(剛性マトリックス法)
計算データは橋梁工学176頁参照

5 REM 暫定版 1994.6.22
10 REM SAVE "GRILL",A
20 REM GRILLAGE GIRDER
30 DIM KAKOM(30,2),X(20),Z(20),SM(6,6),TSM(40,40),F(40)
40 DIM NOKXX(18),NOKZZ(18),NOKY(18),INDEX(40),REAC(40),DIS(40)
50 DIM STRE(30,6),QI(30),QJ(30),STR(6,6),WD(40)
55 REM THIS DATA SHOULD BE REFER IN BRIDGE ENGINEERING P176.
60 DATA 10,9,6,0,6,2.1E+6,7.87E+5
70 DATA 1,2,1.323E+5,2.304E+5
80 DATA 2,3,1.323E+5,2.304E+5
90 DATA 4,5,1.323E+5,2.304E+5
100 DATA 5,6,1.323E+5,2.304E+5
110 DATA 7,8,1.323E+5,2.304E+5
120 DATA 8,9,1.323E+5,2.304E+5
125 DATA 9,10,1.323E+5,2.304E+5
130 DATA 2,5,6.615E+4,0.0E+0
140 DATA 5,8,6.615E+4,0.0E+0
150 DATA 0,0,0,0,0
160 DATA 1200,0,0,0,0
170 DATA 1800,0,0,0,0
180 DATA 300,300,0,0,0  
190 DATA 1200,300,0,0,0 
200 DATA 2100,300,0,0,0 
210 DATA 600,600,0,0,0  
220 DATA 1200,600,0,0,0 
225 DATA 1500,600,1,0,0
230 DATA 2400,600,0,0,0
260 DATA 1,3,4,6,7,10
270 DATA 1,3,4,6,7,10
280 READ NODT,NELT,KOY,KOZZ,KOXX,E,G
290 FOR I=1 TO NELT
300 FOR J=1 TO 2
310 READ KAKOM(I,J):NEXT J:READ QI(I),QJ(I)
320 NEXT I
330 FOR I=1 TO NODT
340 I1=3*I-2
350 I2=3*I-1
360 I3=3*I
370 READ X(I),Z(I),F(I1),F(I2),F(I3)
380 NEXT I
390 FOR I=1 TO KOY
400 READ NOKY(I)
410 NEXT I
420 IF KOZZ=0 THEN 470
430 FOR I=1 TO KOZZ
440 READ NOKZZ(I)
450 NEXT I
460 IF KOXX=0 THEN 500
470 FOR I=1 TO KOXX
480 READ NOKXX(I)
490 NEXT I
500 NT=NODT*3
510 FOR I=1 TO NT
520 FOR J=1 TO NT
530 TSM(I,J)=0 :NEXT J,I
535 PRINT "ゴウセイマトリックス ノ ケイサンチュウ"
540 FOR NE=1 TO NELT
550 GOSUB *GRILL
560 LPRINT "NE=";NE;SPC(5) "I="; KAKOM(NE,1);SPC(5) "J=";KAKOM(NE,2)
570 FOR I=1 TO 6
580 FOR J=1 TO 6
590 LPRINT TAB(13*(J-1));USING "##.####^^^^";SM(I,J);
600 NEXT J:LPRINT
610 NEXT I
620 GOSUB *ASMAT
630 NEXT NE
700 PRINT "シテンショリ ノ サギョウチュウ: マトリックス ノ シュクショウ チュウ"
710 FOR I=1 TO NT
720 DIS(I)=0
730 INDEX(I)=I:NEXT I
740 FOR I=1 TO KOY
750 N=3*NOKY(I)-2
760 INDEX(N)=0 :NEXT I
770 IF KOYY=0 THEN 820
780 FOR I=1 TO KOZZ
790 N=3*NOKZZ(I)-1
800 INDEX(N)=0
810 NEXT I
820 IF KOXX=0 THEN 860
830 FOR I=1 TO KOXX
840 N=3*NOKXX(I)
850 INDEX(N)=0: NEXT I
860 MM=0
870 FOR I=1 TO NT
880 IF INDEX(I)=0 THEN 910
890 MM=MM+1
900 INDEX(MM)=INDEX(I)
910 NEXT I
920 FOR I=1 TO MM
930 IA=INDEX(I)
940 F(I)=F(IA)
950 FOR J=1 TO MM
960 JA=INDEX(J)
970 TSM(I,J)=TSM(IA,JA)
980 NEXT J
990 NEXT I
1000 LPRINT :LPRINT :LPRINT "***** SHITENSHORI *****"
1010 FOR I=1 TO MM
1020 FOR K=1 TO MM
1030 AA=13*(K-1): AA=AA-78*INT(AA/78)
1040 LPRINT TAB(AA);USING "##.####^^^^";TSM(I,K);
1050 NEXT K: LPRINT
1060 NEXT I
1065 PRINT "ギャクギョウレツ ノ ケイサンチュウ"
1070 GOSUB *MATI
1150 FOR I=1 TO MM
1160  REAC(I)=0
1170   FOR K=1 TO MM
1180    REAC(I)=REAC(I)+TSM(I,K)*F(K)
1190   NEXT K
1200 NEXT I
1210 FOR I=1 TO MM
1220  IA=INDEX(I)
1230  DIS(IA)=REAC(I)
1240 NEXT
1250 FOR I=1 TO NT
1260  FOR J=1 TO NT
1270   TSM(I,J)=0
1280  NEXT J
1290 NEXT I
1295 PRINT "モウイチド ゴウセイマトリックス ヲ ケイサンシテイマス"
1300 FOR NE=1 TO NELT
1310  GOSUB *GRILL
1320  GOSUB *ASMAT
1330 NEXT NE
1340 FOR I=1 TO NT
1350  REAC(I)=0
1360   FOR K=1 TO NT
1370    REAC(I)=REAC(I)+TSM(I,K)*DIS(K)
1380   NEXT K
1390 NEXT I
1400 LPRINT :LPRINT :LPRINT
1410 LPRINT "          ********** DISPLACEMENT AND REACTION **********"
1420 LPRINT "NODE No.      V           ZZ          XX  ";
1430 LPRINT "        Y            M           T"
1440 FOR I=1 TO NODT
1450 LPRINT TAB(3);I;
1460 LPRINT TAB(8);USING "##.####^^^^";DIS(3*I-2);
1470 LPRINT TAB(20);USING "##.####^^^^";DIS(3*I-1);
1480 LPRINT TAB(32);USING "##.####^^^^";DIS(3*I);
1490 LPRINT TAB(44);USING "##.####^^^^";REAC(3*I-2);
1500 LPRINT TAB(56);USING "##.####^^^^";REAC(3*I-1);
1510 LPRINT TAB(68);USING "##.####^^^^";REAC(3*I);
1520 NEXT
1530 LPRINT :LPRINT
1540 LPRINT "             ********** MOMENTS AND SHEARS **********"
1550 LPRINT "NELT No.     SI           MI          TI         SJ          MJ          TJ"
1555 PRINT "オウリョクマトリックス ノ ケイサンチュウ"
1560 FOR NE=1 TO NELT
1570  GOSUB *STRESS
1580   FOR I=1 TO 2
1590    IA=KAKOM(NE,I)
1600    WD(3*I-2)=DIS(3*IA-2)
1610    WD(3*I-1)=DIS(3*IA-1)
1620    WD(3*I)=DIS(3*IA)
1630   NEXT I
1640   FOR I=1 TO 6
1650    STRE(NE,I)=0
1660    FOR K=1 TO 6
1670     STRE(NE,I)=STRE(NE,I)+STR(I,K)*WD(K)
1680    NEXT K
1690   NEXT I
1700  LPRINT TAB(2);NE;SPC(1);
1710 FOR I=1 TO 6
1720  LPRINT SPC(1);USING "##.####^^^^";STRE(NE,I);
1730 NEXT I
1740 NEXT NE
1750 END
1760 *GRILL
1770 II=KAKOM(NE,1)
1780 JJ=KAKOM(NE,2)
1790 XI=X(II)
1800 XJ=X(JJ)
1810 ZI=Z(II)
1820 ZJ=Z(JJ)
1830 AL=SQR((XJ-XI)^2+(ZJ-ZI)^2)
1840 SN=(ZJ-ZI)/AL
1850 CS=(XJ-XI)/AL
1860 C1=12*E*QI(NE)/AL^3
1870 C2=6*E*QI(NE)/AL^2
1880 C3=4*E*QI(NE)/AL
1890 C4=2*E*QI(NE)/AL
1900 C5=G*QJ(NE)/AL
1910 SM(1,1)=C1
1920 SM(1,2)=CS*C2
1930 SM(1,3)=-SN*C2
1940 SM(1,4)=-C1
1950 SM(1,5)=CS*C2
1960 SM(1,6)=-SN*C2
1970 SM(2,2)=CS*CS*C3+SN*SN*C5
1980 SM(2,3)=-CS*SN*C3+CS*SN*C5
1990 SM(2,4)=-CS*C2
2000 SM(2,5)=CS*CS*C4-SN*SN*C5
2010 SM(2,6)=-CS*SN*C4-CS*SN*C5
2020 SM(3,3)=SN*SN*C3+CS*CS*C5
2030 SM(3,4)=SN*C2
2040 SM(3,5)=-CS*SN*C4-CS*SN*C5
2050 SM(3,6)=SN*SN*C4-CS*CS*C5
2060 SM(4,4)=C1
2070 SM(4,5)=-CS*C2
2080 SM(4,6)=SN*C2
2090 SM(5,5)=CS*CS*C3+SN*SN*C5
2100 SM(5,6)=-CS*SN*C3+CS*SN*C5
2110 SM(6,6)=SN*SN*C3+CS*CS*C5
2120 FOR I=2 TO 6
2130 I1=I-1
2140 FOR J=1 TO I1
2150 SM(I,J)=SM(J,I)
2160 NEXT J,I
2170 RETURN
2180 *ASMAT
2190 FOR I=1 TO 2
2200  FOR J=1 TO 2
2210   KI=(KAKOM(NE,I)-1)*3
2220   KJ=(KAKOM(NE,J)-1)*3
2230   IS=(I-1)*3
2240   JS=(J-1)*3
2250   FOR K=1 TO 3
2260    FOR L=1 TO 3
2270     KIK=KI+K
2280     KJL=KJ+L
2290     ISK=IS+K
2300     JSL=JS+L
2310     TSM(KIK,KJL)=TSM(KIK,KJL)+SM(ISK,JSL)
2320    NEXT L,K
2330  NEXT J,I
2340 RETURN
2350 *MATI
2360 DIM IND(40)
2370 FOR KO=1 TO MM
2380  IND(KO)=KO:NEXT
2390 FOR KO=1 TO MM
2400 W=0
2410  FOR IO=KO TO MM
2420  IF ABS(TSM(IO,1))=IND(IO) THEN 2720
2700   IR=IO
2710   GOTO 2730
2720  NEXT IO
2730  FOR JO=1 TO MM
2740  W=TSM(JO,KO)
2750  TSM(JO,KO)=TSM(JO,IR)
2760  TSM(JO,IR)=W:NEXT
2770  IND(IR)=IND(KO):IND(KO)=KO
2780 NEXT KO
2790 RETURN
2800 *STRESS
2810 II=KAKOM(NE,1)
2820 JJ=KAKOM(NE,2)
2830 XI=X(II)
2840 XJ=X(JJ)
2850 ZI=Z(II)
2860 ZJ=Z(JJ)
2870 AL=SQR((XJ-XI)^2+(ZJ-ZI)^2)
2880 SN=(ZJ-ZI)/AL
2890 CS=(XJ-XI)/AL
2900 C1=12*E*QI(NE)/AL^3
2910 C2=6*E*QI(NE)/AL^2
2920 C3=4*E*QI(NE)/AL
2930 C4=2*E*QI(NE)/AL
2940 C5=G*QJ(NE)/AL
2950 STR(1,1)=C1
2960 STR(1,2)=CS*C2
2970 STR(1,3)=-SN*C2
2980 STR(1,4)=-C1
2990 STR(1,5)=CS*C2
3000 STR(1,6)=-SN*C2
3010 STR(2,1)=C2
3020 STR(2,2)=CS*C3
3030 STR(2,3)=-SN*C3
3040 STR(2,4)=-C2
3050 STR(2,5)=CS*C4
3060 STR(2,6)=-SN*C4
3070 STR(3,1)=0
3080 STR(3,2)=SN*C5
3090 STR(3,3)=CS*C5
3100 STR(3,4)=0
3110 STR(3,5)=-SN*C5
3120 STR(3,6)=-CS*C5
3130 STR(4,1)=-C1
3140 STR(4,2)=-CS*C2
3150 STR(4,3)=SN*C2
3160 STR(4,4)=C1
3170 STR(4,5)=-CS*C2
3180 STR(4,6)=SN*C2
3190 STR(5,1)=C2
3200 STR(5,2)=CS*C4
3210 STR(5,3)=-SN*C4
3220 STR(5,4)=-C2
3230 STR(5,5)=CS*C3
3240 STR(5,6)=-SN*C3
3250 STR(6,1)=0
3260 STR(6,2)=-SN*C5
3270 STR(6,3)=-CS*C5
3280 STR(6,4)=0
3290 STR(6,5)=SN*C5
3300 STR(6,6)=CS*C5
3310 FOR I=1 TO 6
3320 FOR J=1 TO 6
3330 LPRINT TAB(13*(J-1));USING "##.####^^^^";STR(I,J);
3340 NEXT J: LPRINT
3350 NEXT I
3360 RETURN