構造力学 構造工学特論
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