10 CLS:PRINT"*ARTICULADAS PLANAS*":CLEAR:ANGLE1:GOSUB 1030 20 INPUT"N.nudos";N:M=N*2 30 INPUT"N.barras";B 40 INPUT"N.apoyos";A,"Mod.elasticidad[T/m^2]=";ME 50 INPUT"Seccion constante(S/N)=";D$:IF D$="S" THEN INPUT"Seccion[m^2]=";SC ELSE 60 60 DIM X(N),Y(N),F(B),D(B),G(B),K(B) 70 IF D$="S" THEN FOR I=1 TO B:K(I)=SC:NEXT I 80 FOR I=1 TO N:CLS:PRINT"Nudo";I 90 INPUT"Coordenada X=";X(I) 100 INPUT"Coordenada Y=";Y(I):NEXTI:W=1 110 CLS:INPUT"Poner rigidez de cada barra (S/N)";PRCB$ 120 CLS:INPUT"Ver rigidez de cada barra (S/N)";RCB$ 130 FOR I=1 TO B:CLS:PRINT "Barra";I 140 INPUT" Nd=";D(I):D=D(I) 150 INPUT" Nf=";F(I):F=F(I) 160 IF PRCB$="S" THEN 180 170 IF D$="N" THEN INPUT"Seccion[m^2]=";K(I) 180 IF F-D>W THEN W=F-D 190 X1=X(F)-X(D):Y=Y(F)-Y(D) 200 X=SQR(X1^2+Y^2):IF X1=0 AND Y(F)>Y(D) THEN Y=PI/2:GOTO 270 210 IF X1=0 AND Y(D)>Y(F) THEN Y=-PI/2:GOTO 270 220 IF X1>0 AND Y>0 THEN Y=ATN(Y/X1):GOTO 270 230 IF X1>0 AND Y<0 THEN Y=ATN(Y/X1):GOTO 270 240 IF X1<0 AND Y<0 THEN Y=ATN(Y/X1)+PI:GOTO 270 250 IF X1<0 AND Y>0 THEN Y=ATN(Y/X1)+PI:GOTO 270 260 IF X1<0 AND Y=0 THEN Y=-PI:GOTO 270 270 CLS:PRINT"Barra";I:PRINT"L[m]=";:PRINT USING"###.###";X:PRINT"ANG(grados)=";:PRINT USING"###.###";Y*180/PI 280 GOSUB 1030 290 IF PRCB$="N" THEN K(I)=K(I)*ME/X 300 IF PRCB$="S" THEN PRINT"K(";I;")=";:INPUT K(I) 310 G(I)=Y 320 IF RCB$="S" THEN CLS:PRINT"Barra";I:PRINT"Rigidez=";:PRINT USING"#####.###";K(I):GOSUB 1030 330 NEXT I 340 W=(W+1)*2 350 ERASE X,Y:DIM R(A) 360 FOR I=1 TO A:CLS:PRINT"Apoyo";I 370 INPUT"Impedido en X,n.nudo";R:IF R>0 THEN R(I)=2*R-1:I=I+1 380 INPUT"Impedido en Y,n.nudo";R:IF R>0 THEN R(I)=2*R 390 IF R=0 THEN I=I-1 400 NEXT I 410 ERASE A,C,V,AXIL:CLS:PRINT" Forma matriz":DIM A(M,W),C(M),V(M),AXIL(B) 420 FOR I=1 TO B:D=D(I):F=F(I) 430 Z=2*D:V=(F-D+1)*2:S=SIN G(I):Q=COS G(I) 440 A(Z-1,1)=A(Z-1,1)+K(I)*Q*Q:A(Z-1,2)=A(Z-1,2)+K(I)*S*Q 450 A(Z,1)=A(Z,1)+K(I)*S*S:A(Z-1,V-1)=-K(I)*Q*Q 460 A(Z-1,V)=-K(I)*Q*S:A(Z,V-1)=-K(I)*S*S 470 A(Z,V-2)=-K(I)*Q*S:Z=Z+V-2:A(Z-1,1)=A(Z-1,1)+K(I)*Q*Q 480 A(Z-1,2)=A(Z-1,2)+K(I)*Q*S:A(Z,1)=A(Z,1)+K(I)*S*S 490 NEXT I 500 CLS:INPUT"Ver matriz de rigidez(S/N)";VMR$ 510 IF VMR$="N" THEN 560 520 FOR T=1 TO M:FOR G=1 TO W 530 PRINT"K(";T;",";G;")=";A(T,G) 540 GOSUB1030 550 NEXT G:NEXT T 560 FOR I=1 TO A:A(R(I),1)=0:NEXT I 570 H=H+1:CLS:BEEP:PRINT"Hipotesis";H:GOSUB 1030 580 FOR I=1 TO N:CLS:PRINT"Nudo";I 590 INPUT"Carga nodal Fx=";C(I*2-1) 600 INPUT"Carga nodal Fy=";C(I*2):NEXT I 610 CLS:PRINT" Resolviendo sistema"; 620 FOR I=1 TO M-1:IF ABS A(I,1)<1E-7 THEN 690 630 X=M-I:IF X>W-1 THEN X=W-1 640 FOR K=1 TO X:P=A(I,K+1)/A(I,1) 650 O=1:IF A(I+K,1)=0 THEN O=0 660 FOR J=1 TO W-K:A(I+K,J)=A(I+K,J)-A(I,J+K)*P:NEXTJ 670 C(I+K)=C(I+K)-C(I)*P:IF O=0 THEN A(I+K,1)=0 680 NEXTK 690 NEXTI:R=0:CLS:PRINT"Reacciones:":GOSUB 1030 700 FOR I=M TO 1 STEP -1:P=A(I,1) 710 O=M-I:IF O>=W THEN O=W-1 720 V(I)=C(I):IF O=0 THEN 740 730 FOR J=1 TO O:V(I)=V(I)-A(I,J+1)*V(I+J):NEXTJ 740 IF P<>0 THEN V(I)=V(I)/P:GOTO790 750 R=R+1:PRINT"R(";A-R+1;")="; 760 PRINT USING"###.###";-V(I):V(I)=0 770 GOSUB 1030 780 CLS 790 NEXTI:IF R>A THEN PRINT"Estructura falta de apoyos":GOSUB 1030 800 REM SALIDA AXILES 810 CLS:INPUT"Axiles S(1)/N(2)";XI 820 IF XI=2 THEN 900 830 CLS:PRINT"Axiles:":GOSUB 1030:FOR I=1 TO B 840 D=D(I):F=F(I):CLS:PRINT"Barra";I;"(";D;"->";F;") N="; 850 D=D*2:F=F*2 860 AXIL(I)=K(I)*((V(F)-V(D))*SIN G(I)+(V(F-1)-V(D-1))*COS G(I)) 870 PRINT USING"###.###";AXIL(I):GOSUB 1030 880 CLS 890 NEXTI 900 INPUT"Alargamientos (S/N)";VA$ 910 IF VA$="N"THEN 940 920 FOR Q=1 TO B:CLS:PRINT"Barra";Q:PRINT"Alargamiento=";:PRINT USING"#.######";AXIL(Q)/K(Q):GOSUB 1030 930 NEXTQ 940 REM SALIDA DESPLAZAMIENTOS 950 CLS:INPUT"Desplazamientos S(1)/N(2)";DP 960 IF DP=2 THEN 410 970 CLS:PRINT" Desplazamientos":GOSUB 1030:R=0:Q=1 980 R=R+1:CLS:IF R=N+1 THEN 1010 990 PRINT"Nudo";R,"dx(m)=";V(Q):Q=Q+1:PRINT"dy(m)=";V(Q):GOSUB 1030:Q=Q+1 1000 GOTO 980 1010 GOTO 410 1020 END 1030 IF INKEY$=""THEN 1030 ELSE RETURN