1 REM Ins{nd av Stefan Westman <4969> 1985-04-18 13.25.56
1 EXTEND
10 ! ***********************************************************
20 ! ** **
30 ! ** PROGRAM F\R BER[KNING AV INFLUENSLINJER **
40 ! ** VERSION 1:1 **
50 ! ** KONSTRUERAT AV : THOMAS BERTILSSON **
60 ! ** STEFAN WESTMAN (MNR:4969) **
70 ! ** **
80 ! ** **
90 ! ** 84-11-28 **
92 ! ** **
99 ! ***********************************************************
110 ! ** DIMENSIONERING AV MATRISER *****************************
115 ; FNRadera$
120 EXTEND
125 GOSUB 10100 ! ** SKRIVER LEDTEXT TILL PROGRAM *****************
127 ; CHR$(12)
128 Hopp=1 : ON ERROR GOTO 30000
130 INPUT "ANTAL ST\D ?";N
131 IF N<3 OR N>12 GOTO 127
135 ; CHR$(12)
140 DIM St|d(N),L(N+1,N+1)
150 DIM C(N+2),B|j(N)
160 DIM E(N+1,N+1),K(N-2,N-2)
170 DIM K1(N-2,N-2)
180 DIM M0(N-2,(N-1)*10+1),H(N-2,(N-1)*10+1)
190 DIM Sjunk(N)
200 DIM W1(11),W2(11),V1(11),V2(11)
205 ; CHR$(12)
210 ! ** INMATNING AV BASDATA ***********************************
220 ! ** INMATNING AV FACKL[NGDER *******************************
225 Konst=1
230 ; "FACKL[NGDER (I METER)"
240 FOR I=1 TO N-1
245 Hopp=2
250 ; CUR(2*I+1,0) "FACKL[NGD: NR:";I;"(";Konst;")" : INPUT Konst$;
255 IF LEN(Konst$)<>0 THEN St|d(I)=VAL(Konst$) ELSE St|d(I)=Konst : ; St|d(I)
258 Konst=St|d(I)
260 LET L(I-1,I)=St|d(I) : St|d(0)=St|d(0)+St|d(I)
270 NEXT I
275 ; CHR$(12)
280 ! ** INMATNING AV B\JSTYVHETER *******************************
290 ; "B\JSTYVHETER ( EI )"
295 Konst=1
300 FOR I=1 TO N-1
305 Hopp=3
310 ; CUR(2*I+1,0) "B\JSTYVHET: NR:";I;"(";Konst;")" : INPUT Konst$;
315 IF LEN(Konst$)<>0 THEN B|j(I)=VAL(Konst$) ELSE B|j(I)=Konst : ; B|j(I)
318 Konst=B|j(I)
320 LET E(I-1,I)=B|j(I)
330 NEXT I
335 ; CHR$(12)
340 ! ** INMATNING AV ST\DSJUNKNINGSKONSTANTER *******************
350 ; "ST\DSJUNKNINGSKONSTANTER (L[NGD / KRAFT)"
355 Konst=0
360 FOR I=0 TO N-1
365 Hopp=4
366 IF I=12 THEN ; CUR(23,0) "ST\DSJUNKNINGEN: NR:12";"(";Konst;")" : INPUT Konst$
367 IF LEN(Konst$)<>0 THEN St|d(I)=VAL(Konst$) : GOTO 380
370 ; CUR(2*I+1,0) "ST\DSJUNKNING: NR:";I+1;"(";Konst;")" : INPUT Konst$;
375 IF LEN(Konst$)<>0 THEN Sjunk(I)=VAL(Konst$) ELSE Sjunk(I)=Konst : ; Sjunk(I)
378 Konst=Sjunk(I)
380 LET C(I)=Sjunk(I)
390 NEXT I
395 ON ERROR GOTO 40000 : GOSUB 11000 ! ** RITA KOORDINATAXLAR OCH BRO
397 GOSUB 14600 ! ** SKRIV BER[KNINGSTIDER
398 ON ERROR GOTO 40000
400 ! ** UPPBYGGNAD AV K-MATRIS *************
500 IF N<7 THEN 833
600 ! RAD 1=ST\D 1.
610 I=1
620 GOSUB 5200
630 GOSUB 5300
640 GOSUB 5400
650 ! RAD 2=ST\D 2.
660 I=2
670 GOSUB 5100
680 GOSUB 5200
690 GOSUB 5300
700 GOSUB 5400
710 ! RAD 3 TILL N-4 = ST\D 3 TILL N-4.
720 FOR I=3 TO N-4
730 GOSUB 5000
740 GOSUB 5100
750 GOSUB 5200
760 GOSUB 5300
770 GOSUB 5400
780 NEXT I
785 ! RAD N-3 = ST\D N-3.
787 I=N-3
790 GOSUB 5000
795 GOSUB 5100
800 GOSUB 5200
810 GOSUB 5300
815 ! RAD N-2 = ST\D N-2 .
820 I=N-2
822 GOSUB 5000
824 GOSUB 5100
826 GOSUB 5200
828 GOTO 1480
830 ! ** MATRISUPPBYGGNAD VID STORT ANTAL ST\D AVSLUTAD **********************
832 ! ** ST\DANTALET MINDRE [N 7 *************************
833 IF N<6 THEN 1110
834 ! ** BALK P] 6 ST\D **********************************
835 ;
836 ! RAD 1 = ST\D 1
837 I=1
838 GOSUB 5200
840 GOSUB 5300
841 GOSUB 5400
849 ! RAD 2 = ST\D 2
850 I=2
860 GOSUB 5100
880 GOSUB 5200
900 GOSUB 5300
920 GOSUB 5400
930 ! RAD 3 = ST\D 3
940 I=3
950 GOSUB 5000
970 GOSUB 5100
990 GOSUB 5200
1010 GOSUB 5300
1020 ! RAD 4 = ST\D 4
1030 I=4
1040 GOSUB 5000
1060 GOSUB 5100
1080 GOSUB 5200
1100 GOTO 1480
1101 ! ** UPP BYGGNAD AV K-MATRIS F\R BALK P] SEX ST\D AVSLUTAD **************
1102 !
1105 ! ** ST\DANTALET MINDRE [N 6 ********************************
1110 IF N<5 THEN 1340
1118 ! ** BALK P] 5 ST\D *****************************************
1119 ! RAD 1 = ST\D 1
1120 I=1
1130 GOSUB 5200
1140 GOSUB 5300
1150 GOSUB 5400
1160 ! RAD 2 = ST\D 2
1190 I=2
1200 GOSUB 5100
1220 GOSUB 5200
1240 GOSUB 5300
1250 ! RAD 3 = ST\D 3
1260 I=3
1270 GOSUB 5000
1290 GOSUB 5100
1300 GOSUB 5200
1330 GOTO 1480
1331 ! ** UPPBYGGNAD AV K-MATRIS F\R BALK P] 5 ST\D AVSLUTAD *****************
1332 !
1333 ! ** ST\DANTALET MINDRE [N 5 *****************************
1340 IF N<4 THEN 1449
1343 ! ** BALK P] 4 ST\D **************************************
1348 !
1349 ! RAD 1 = ST\D 1
1350 I=1
1360 GOSUB 5200
1370 GOSUB 5300
1380 ! RAD 2 = ST\D 2
1400 I=2
1410 GOSUB 5100
1430 GOSUB 5200
1445 GOTO 1480
1446 !
1447 ! ** UPPBYGGNAD AV K-MATRIS F\R BALK P] 4 ST\D AVSLUTAD *****************
1448 !
1449 ! ** BALK P] 3 ST\D ************************************
1450 I=1
1460 GOSUB 5200
1470 !
1471 ! ** UPPBYGGNAD AV K-MATRIS F\R BALK P] TRE ST\D AVSLUTAD ***************
1479 !
1480 ! ** K-MATRISUPPBYGGNAD AVSLUTAD **********************
1482 ! ** INVERTERING AV K-MATRIS K1= INV(K) **************
1483 GOSUB 12000
1999 !
2000 ! ** ANTAL FACK BER[KNAS *****************************
2010 F=N-1
2020 ! ** BER[KNING AV LASTKONSTANTER W1 = WA/L, W2 = WB/L, V1 = RV OCH V2 = RH
2025 ! ** I TIONDELSPUNKTERNA **
2030 ! ** AV ETT GODTYCKLIGT FACK *************************
2040 FOR I=0 TO 10
2050 J=I/10
2060 W1(I)=J*(1-J)*(2-J)
2070 W2(I)=J*(1-J)*(1+J)
2080 V1(I)=-(1-J)
2090 V2(I)=-J
2100 NEXT I
2110 I=N-2
2120 J=F*10+1
2140 IF N<6 THEN 2580
2150 ! ** BER[KNING AV H\GERLEDEN F\R BALK P] STORT ANTAL ST\D ( 6 ELLER FLER)
2155 !
2160 ! ** BELASTNING I F\RSTA FACKET **************
2170 J=1
2180 FOR I=O TO 10
2190 GOSUB 5900
2200 GOSUB 5700
2210 GOSUB 5800
2220 NEXT I
2230 ! ** BELASTNING I ANDRA FACKET ***************
2240 J=2
2250 FOR I=0 TO 10
2260 GOSUB 5900
2270 GOSUB 5600
2280 GOSUB 5700
2290 GOSUB 5800
2300 NEXT I
2310 ! ** BELASTNING I FACK 3 TILL F-2 ***********
2320 FOR J=3 TO F-2
2330 FOR I=0 TO 10
2340 GOSUB 5900
2350 GOSUB 5500
2360 GOSUB 5600
2370 GOSUB 5700
2380 GOSUB 5800
2390 NEXT I
2400 NEXT J
2410 ! ** BELASTNING I N[ST SISTA FACKET *********
2420 J=F-1
2430 FOR I=0 TO 10
2440 GOSUB 5900
2450 GOSUB 5500
2460 GOSUB 5600
2470 GOSUB 5700
2480 NEXT I
2490 ! ** BELASTNING I SISTA FACKET **************
2500 J=F
2510 FOR I=0 TO 10
2520 GOSUB 5900
2530 GOSUB 5500
2540 GOSUB 5600
2550 NEXT I
2560 ! ** BER[KNING AV H\GERLEDEN F\R BALK P] M]NGA ST\D AVSLUTAD ************
2570 GOTO 3280
2580 ! ** BER[KNING AV H\GERLEDEN F\R BALK P] FEM ST\D ***********************
2590 IF N<5 THEN 2920
2600 ! ** BELASTNING I F\RSTA FACKET *************
2610 J=1
2620 FOR I=0 TO 10
2630 GOSUB 5900
2640 GOSUB 5700
2650 GOSUB 5800
2660 NEXT I
2670 ! ** BELASTNING I ANDRA FACKET **************
2680 J=2
2690 FOR I=0 TO 10
2700 GOSUB 5900
2710 GOSUB 5600
2720 GOSUB 5700
2730 GOSUB 5800
2740 NEXT I
2750 ! ** BELASTNING I TREDJE FACKET *************
2760 J=3
2770 FOR I=0 TO 10
2780 GOSUB 5900
2790 GOSUB 5500
2800 GOSUB 5600
2810 GOSUB 5700
2820 NEXT I
2830 ! ** BELASTNING I FJ[RDE OCH SISTA FACKET ***
2840 J=4
2850 FOR I=0 TO 10
2860 GOSUB 5900
2870 GOSUB 5500
2880 GOSUB 5600
2890 NEXT I
2900 ! ** BER[KNING AV H\GERLEDEN F\R BALK P] FEM ST\D AVSLUTAD **************
2910 GOTO 3280
2920 ! ** BER[KNING AV H\GERLEDEN F\R BALK P] FYRA ST\D **********************
2930 IF N<4 THEN 3150
2940 ! ** BELASTNING I F\RSTA FACKET *************
2950 J=1
2960 FOR I=0 TO 10
2970 GOSUB 5900
2980 GOSUB 5700
2990 GOSUB 5800
3000 NEXT I
3010 ! ** BELASTNING I ANDRA FACKET **************
3015 J=2
3020 FOR I=0 TO 10
3030 GOSUB 5900
3040 GOSUB 5600
3050 GOSUB 5700
3060 NEXT I
3070 ! ** BELASTNING I TREDJE OCH SISTA FACKET ***
3080 J=3
3090 FOR I=0 TO 10
3100 GOSUB 5900
3110 GOSUB 5500
3120 GOSUB 5600
3125 NEXT I
3130 ! ** BER[KNING AV H\GERLEDEN F\R BALK P] FYRA ST\D AVSLUTAD *************
3140 GOTO 3280
3150 ! ** BER[KNING AV H\GERLEDEN F\R BALK P] TRE ST\D ***********************
3160 ! ** BELASTNING I F\RSTA FACKET ************
3170 J=1
3180 FOR I=0 TO 10
3190 GOSUB 5900
3200 GOSUB 5700
3210 NEXT I
3220 ! ** BELASTNING I ANDRA OCH SISTA FACKET ****
3230 J=2
3240 FOR I=0 TO 10
3250 GOSUB 5900
3260 GOSUB 5600
3265 NEXT I
3270 ! ** BER[KNING AV H\GERLEDEN F\R BALK P] TRE ST\D AVSLUTAD **************
3280 ! ** BER[KNING AV H\GERLED AVSLUTAD *********
3285 !
3290 ! ** BER[KNING AV MOMENTMATRIS **************
3300 I=N-2
3310 J=F*10+1
3320 GOSUB 13000
3330 !
3340 !
3350 GOTO 6000
5000 K(I,I-2)=-6/L(I-2,I-1)/L(I-1,I)*C(I-1)
5010 RETURN
5100 R1=1/L(I-1,I)*(1/L(I-2,I-1)+1/L(I-1,I))*C(I-1)
5110 R2=1/L(I-1,I)*(1/L(I-1,I)+1/L(I,I+1))*C(I)
5120 K(I,I-1)=6*(R1+R2)-L(I-1,I)/E(I-1,I)
5130 RETURN
5200 R1=(1/L(I-1,I))^2*C(I-1)+(1/L(I-1,I)+1/L(I,I+1))^2*C(I)
5210 R2=(1/L(I,I+1))^2*C(I+1)
5220 K(I,I)=-(6*(R1+R2)+2*(L(I-1,I)/E(I-1,I)+L(I,I+1)/E(I,I+1)))
5230 RETURN
5300 R1=1/L(I,I+1)*(1/L(I-1,I)+1/L(I,I+1))*C(I)
5310 R2=1/L(I,I+1)*(1/L(I,I+1)+1/L(I+1,I+2))*C(I+1)
5320 K(I,I+1)=6*(R1+R2)-L(I,I+1)/E(I,I+1)
5330 RETURN
5400 K(I,I+2)=-6/L(I,I+1)/L(I+1,I+2)*C(I+1)
5410 RETURN
5500 H(J-2,N1)=-6/L(J-2,J-1)*C(J-1)*V1(I)
5510 RETURN
5600 R1=W1(I)*L(J-1,J)^2/E(J-1,J)
5610 R2=(1/L(J-2,J-1)+1/L(J-1,J))*C(J-1)*V1(I)-1/L(J-1,J)*C(J)*V2(I)
5620 H(J-1,N1)=R1+6*R2
5630 RETURN
5700 R1=W2(I)*L(J-1,J)^2/E(J-1,J)
5710 R2=-1/L(J-1,J)*C(J-1)*V1(I)+(1/L(J-1,J)+1/L(J,J+1))*C(J)*V2(I)
5720 H(J,N1)=R1+6*R2
5730 RETURN
5800 H(J+1,N1)=-6/L(J,J+1)*C(J)*V2(I)
5810 RETURN
5900 N1=(J-1)*10+I+1
5910 RETURN
6000 ON ERROR GOTO 30000 : GOSUB 14000 ! **V[LJ OCH RITA INFLUENSLINJE **********
6010 GOSUB 14100 ! ** V[LJ OCH UTF\R PRESENTATION ****
6020 IF H=1 GOSUB 14200
6030 IF H=2 GOSUB 14300
6040 IF H=3 GOTO 6000
6045 IF H=4 THEN STOP
6050 GOTO 6010
10000 ! ************** RADERA.DEF *********
10010 DEF FNRadera$
10020 ; CHR$(12)
10030 FGCTL BLK+RED+YEL+BLU
10040 FGPOINT 0,0,0
10050 FGFILL 511,239
10060 RETURN Ingenting$
10070 FNEND
10100 ! ** LEDTEXT TILL PROGRAM ************
10101 ; DBLE BLU " INFLUENSLINJE"
10105 ;
10110 ; DBLE YEL " ============="
10120 ; " DETTA PROGRAM BER[KNAR INFLUENSLINJEN F\R ST\DMOMENT P] "
10130 ; " FASTA ELLER FLYTANDE ST\D."
10140 ;
10142 ; " ANTAL ST\D: 3-12"
10143 ;
10150 ; " INMATNING: SI-ENHETER. \nskas v{rde inom parantes tryck RETURN."
10151 ;
10152 ; " ING]NGSVARIABLER: ANTAL ST\D"
10153 ; " FACKL[NGDER ( I METER )"
10154 ; " B\JSTYVHETER ( E*I=N/METERTV] * METERFYRA )"
10155 ; " ST\DSJUNKNINGSKONSTANT ( METER / N )"
10156 ;
10160 ; " PRESENTATION: INFLUENSLINJEN P] SK[RM"
10170 ; " V[RDEN P] SK[RM "
10171 ; " ELLER P] SKRIVARE"
10180 ; CUR(23,0);"TRYCK TANGENT "; : GET A$
10185 RETURN
11000 EXTEND
11010 ; FNRadera$
11015 ; CHR$(12)
11020 FGPOINT 0,100,1
11030 FGLINE 0,239,3
11040 FGPOINT 0,170,2
11045 B=0
11050 FOR X=1 TO N-1
11060 IF (X/2-INT(X/2))<>0 THEN A=2 ELSE A=3
11070 B=B+St|d(X)
11080 FGLINE B/St|d(0)*511,170,A
11090 FGPOINT B/St|d(0)*511,169 : FGPOINT B/St|d(0)*511,167 : FGPOINT B/St|d(0)*511,168
11100 FGPOINT B/St|d(0)*511,170
11110 NEXT X
11120 RETURN
12000 ! ** INVERTERA MATRIS K OCH LAGRA SVARET I K1 ******
12010 FOR I=1 TO N-2
12020 K1(I,I)=1
12030 NEXT I
12040 FOR J=1 TO N-2
12050 FOR I=J TO N-2
12060 IF K(I,J)<>0 THEN 12100
12070 NEXT I
12080 ; CHR$(12) : ; "MATRISEN G]R EJ ATT INVERTERA: DU HAR ANV[NT ORIMLIGT IN-"
12085 ; "G]NGSV[RDE: B\RJA OM"
12090 END
12100 FOR K=1 TO N-2
12110 S=K(J,K)
12120 K(J,K)=K(I,K)
12130 K(I,K)=S
12140 S=K1(J,K)
12150 K1(J,K)=K1(I,K)
12160 K1(I,K)=S
12170 NEXT K
12180 T=1/K(J,J)
12190 FOR K=1 TO N-2
12200 K(J,K)=T*K(J,K)
12210 K1(J,K)=T*K1(J,K)
12220 NEXT K
12230 FOR L=1 TO N-2
12240 IF L=J THEN 12300
12250 T=-K(L,J)
12260 FOR K=1 TO N-2
12270 K(L,K)=K(L,K)+T*K(J,K)
12280 K1(L,K)=K1(L,K)+T*K1(J,K)
12290 NEXT K
12300 NEXT L
12310 NEXT J
12320 RETURN
13000 ! ** MULT. MATRIS K1 MED H OCH LAGRA I M0 **********
13010 FOR J=1 TO N-2
13020 FOR I=1 TO (N-1)*10+1
13030 S=0
13040 FOR K=1 TO N-2
13050 S=S+K1(J,K)*H(K,I)
13060 NEXT K
13070 M0(J,I)=S
13080 NEXT I
13090 NEXT J
13100 RETURN
14000 ! ** LEDTEXT F\R ST\DMOMENTVAL OCH RITNING *********
14003 GOSUB 11010
14006 ; CUR(15,1);"INFLUENSLINJER F\R ST\DMOMENT F\R YTTERST\DEN (1 OCH ";N;") [R ALLTID NOLL"
14008 Hopp=5
14009 ; " V[LJ DET ST\D DU \NSKAR HA INFLUENSLINJE F\R (2-";N-1;")" : INPUT I
14012 IF I<2 OR I>N-1 THEN 14006
14013 ; CUR(2,2);"INFLUENSLINJE F\R ST\D : ";I+1
14014 GOSUB 11000
14015 I=I-1
14018 FOR X=1 TO (N-1)*10+1
14021 IF M0(I,0)