4 CLS
5 INPUT "    1>DSRF 2>DC 3>DPT 4>DFC               OPCION -> ",OO
6 IF OO>4 THEN 5
7 IF OO=1 THEN 11 ELSE IF OO=2 THEN 410 ELSE IF OO=3 THEN 605 ELSE 1205
11 CLS: PRINT"       DIMENSIONAMIENTO          SECC RECTA A FLEXION (AEH<600)"
20 INPUT"b(m)";b,"h(m)";h,"Recubrimiento(cm)";rc,"Diametro barras(cm)";fb,"Diam. barras compresion(cm)";fbc,"Diametro cercos(cm)";ft,"Separacion barras(cm)";sb,"fyd(T/cm2)";fyd,"fcd(T/m2)";fcd,"Md(mT)";md
30 nbf=INT((b*100-2*rc-2*ft+sb)/(fb+sb)):PRINT "Numero de barras por fila =";nbf:z=(4*md/.81/h/fyd/PI/(fb^2)):nbn=INTz+1:IF FRACz=0 THEN nbn=nbn-1
35 PRINT "No. de barras necesarias =";nbn
40 INPUT "No. de barras necesarias";nbn
55 CC=INT(nbn/nbf)*nbf:BB=((fb*CC/nbf)+((CC/nbf-1)*sb))/2:AA=BB+ft+rc:r=(CC*AA+(nbn-CC)*(AA+BB+sb+fb/2))/nbn
90 d=h-r/100:dp=(rc+ft+fbc/2)/100:uc=fcd*b*d:mt=.35*uc*d:IF fyd>4 THEN fycd=4 ELSE fycd=fyd
100 PRINT "r=";r;"cm","d=";d;"m","d'=";dp;"m","Uc=";uc;"T","Mt=";mt;"mT","fycd=";fycd;"T/cm2"
105 INPUT"Conocemos numero de barras en    compresion(s1/n0)";n
106 IF n=1 GOTO 170 ELSE GOTO 110
110 IF md<mt GOTO 115 ELSE GOTO 260
115 PRINT"Md<Mt => no necesitamos armadura de compresion":us2=0:ss2=0
116 GOTO 180
170 INPUT"No. de barras en compresion";nbc:ss2=nbc*PI*fbc^2/4:us2=ss2*fycd
175 IF us2<(md-mt)/(d-dp) THEN PRINT "Us2=Md-Mt/d-d' ,que es la minima" ELSE GOTO 180
177 us2=(md-mt)/(d-dp)
180 us1=uc*(1-SQR(1-((2*md-2*us2*(d-dp))/uc/d)))+us2
200 ss1=us1/fyd:t=ss1*4/PI/(fb^2):nbt=INTt+1:v=ss2/PI/(fbc^2)*4:nbc=INTv+1
205 IF FRACt=0 THEN nbt=nbt-1
206 IF FRACv=0 THEN nbc=nbc-1
210 PRINT "Us2=";us2;"T","As2=";ss2;"cm2","No. barras traccion=";nbt,"No. barras compresion=";nbc,"Cuantias mecanicas minimas:   "
212 IF us1<.04*uc THEN PRINT "Us1 no cumple minimos mec" ELSE PRINT "Us1 si cumple minimos mec"
215 IF us2>md/(d-dp) THEN PRINT "Hay excesiva arm. de compresion" ELSE PRINT "Us2 es correcta"
218 PRINT "Cuantias geometricas minimas :"
220 INPUT "Tanto por mil";tpm:ssm=tpm*10*b*h:nbm=INT(ssm*4/PI/fb/fb)+1:PRINT "As min=";ssm;"cm2","No. de barras min=";nbm
230 IF nbt<nbm THEN nbt=nbm ELSE GOTO 240
232 ss1=ssm
240 PRINT "Por minimos geometricos:        No. barras traccion=";nbt,"As2=0.3*Asm=";.3*ssm;"cm2","No. minimo barras comp=";INT(4*.3*ssm/PI/(fbc^2))+1
245 wc=ft+rc+fbc/2:kc=sb+fbc:IF nbc>nbf THEN dp=(nbf*wc+(nbc-nbf)*(wc+kc))/nbc
250 IF nbt=nbn THEN END ELSE GOTO 40
260 PRINT "Md>Mt y Us2 desconocida"
270 us21=(md-mt)/(d-dp):ss21=us21/fycd:nbc=INT(ss21*4/PI/(fbc^2))+1:us22=nbc*PI*(fbc^2)/4*fycd:ss22=nbc*PI*(fbc^2)/4:us1=uc*(1-SQR(1-(2*md-2*us22*(d-dp))/(uc*d)))+us22:ss1=us1/fyd:nbt=INT(ss1*4/PI/(fb^2))+1
300 PRINT"Us2 teorico=";us21;"T","As2 teorica=";ss21;"cm2","No. barras en comp=";nbc,"Us2 real=";us22;"T","As2 real=";ss22;"cm2","Us1=";us1;"T","As1=";ss1;"cm2","No. barras en traccion:";nbt,"Cuantias mecanicas:"
305 IF us1>.04*uc THEN PRINT "Us1 cumple minimos mec" ELSE PRINT "Us1 no cumple minimos mec"
310 IF us22>(md-mt)/(d-dp) THEN PRINT "Us2 cumple minimos mec" ELSE PRINT "Us2 no cumple minimos mec"
320 PRINT "Cuantias geometricas:"
330 INPUT "Tanto por mil";tpm:ssm=10*tpm*b*h:nbm=INT(ssm/PI*4/(fb^2))+1:PRINT "As min=";ssm;"cm2","No. de barras min=";nbm
340 IF nbt<nbm THEN nbt=nbm ELSE GOTO 350
342 ss1=ssm
350 PRINT "Por minimos geometricos:","No. barras traccion=";nbt,"As2=0.3*Asm=";.3*ssm;"cm2","No. barras comp minimo=";INT(4*.3*ssm/PI/(fbc^2))+1
355 GOTO 245
360 IF nbt=nbn THEN END ELSE GOTO 40
410 CLS: PRINT "  DIMENSIONAMIENTO A CORTANTE  "
420 CLS:INPUT "b(m)";b,"d(m)";d,"diametro cercos trans(cm)";ft,"fcd(T/m2)";fcd,"fyd(T/cm2)";fyd,"inclinacion armaduras";xx,"Vd(T)";vd,"num de ramas";n,"apoyo(s1/n0)";ap
421 IF ap=1 THEN INPUT "Vd1(T)[en el borde]";vd1,"Vd2(T)[a distancia d del borde]";vd2
422 IF ap=0 THEN vd1=vd:vd2=vd
425 IF fyd>4.2 THEN fyad=4.2 ELSE fyad=fyd
429 y=.3*(1+(1/TAN(xx+1E-5)))*fcd*b*d
435 PRINT "Vu1=";ROUND(y,-3);"T"
440 IF y>vd1 THEN PRINT " No se agota por compresion     oblicua en el alma " ELSE PRINT "Se agota por compresion oblicua en el alma"
450 fcv=5*SQR(fcd/10):vcu=fcv*b*d:vsu=vd2-vcu:aa=vsu/.9/d/fyad/(SINxx+COSxx):st=1/aa*n*PI*(ft^2)/4:IF vsu<=0 THEN  PRINT "oJo! Vsu<0 => ir a MINIMOS":GOTO 470
460 PRINT "fy";CHR$(136);"d=";fyad;"T/cm2","fcv=";ROUND(fcv,-3);"T/m2","Vcu=fcv*b*d=";ROUND(vcu,-3);"T","Vsu>Vd-Vcu=";ROUND(vsu,-3);"T","A";CHR$(136);"=";ROUND(aa,-3);"cm2/ml","St=";  ROUND(st,-4);"m"
465 INPUT "St definitivo(m)=",st
470 IF st>.3 THEN PRINT "St=";.3;"m por St<30 cm" ELSEPRINT "Cumple St<30 cm"
480 IF  st>.85*d THEN PRINT "St=";.85*d;"m por St<.85*d" ELSE PRINT "Cumple St<.85*d"
490 IF st>3*b THEN PRINT "St=";3*b;"m por St<3*b" ELSE PRINT "Cumple St<3*b"
500 aam=.02*fcd*b/fyad*SINxx :stm=1/aam*n*PI*ft*ft/4:IF st>stm THEN PRINT "St=";stm;"m por A";CHR$(136) ELSE PRINT "Cumple A";CHR$(136);"> .02*fcd*b*sen";CHR$(136);"/fy";CHR$(136);"d"
505 INPUT "diam barras compre (cm) =";fbc
510 IF st>fbc*.15 THEN PRINT "St="; fbc*.15;"m por St<fbc*15"ELSE PRINT "Cumple St<fbc*15"
520 END
605 CLS
610 PRINT "     DIMENSIONAMIENTO                DE PIEZAS EN 'T'":INPUT "Canto pieza inf(m)";a,"Canto pieza sup(m)";b,"Ancho pieza inf(m)";c,"Ancho pieza sup(m)";e,"Recubrimiento(cm)";rc,"Diam cercos(cm)";ft,"Diam barras(cm)";fb,"Diam barras comp(cm)";fbc
620 INPUT "Sep barras(cm)";sb,"fyd(T/cm2)";fyd,"fcd(T/m2)";fcd,"Md(mT)";md
630 nbf=INT((c*100-2*rc-2*ft+sb)/(fb+sb)):nbfc=INT((e*100-2*rc-2*ft+sb)/(sb+fb):nbn=INT(md*4/.81/(a+b)/fyd/PI/(fb^2))+1:dp=(rc+ft+fbc/2)/100
640 PRINT "Num barras fila tracc=";nbf,"Num barras fila comp=";nbfc,"Num barras necesarias=";nbn
645 INPUT "Num barras necesarias";nbn
652 cc=INT(nbn/nbf)*nbf:bb=(fb*cc/nbf+(cc/nbf-1)*sb)/2:aa=bb+ft+rc:r=(cc*aa+(nbn-cc)*(aa+bb+sb+fb/2))/nbn
700 d=(a+b)-r/100:IF fyd>4 THEN fycd=4 ELSE fycd=fyd
710 mt=.7*fcd*(e*b*(d-b/2)+c/2*((d-b)^2)):yl=.75*d/(1+0.136*fyd):mtan=fcd*b*e*(d-b/2):p=mtan-mt-fcd*c*(b*d-b^2/2)
720 IF mtan>mt THEN yt=d-SQR(d^2-2*mt/fcd/e) ELSE yt=d-SQR(d^2+2*p/fcd/c)
730 PRINT "r=";r;"cm","d=";d;"m","d'=";dp;"m","fycd=";fycd;"T/m2","Mt=";mt;"mT","y tope=";yt;"m","y lim=";yl;"m"
740 IF yt<yl THEN PRINT "y tope < y lim" ELSE GOTO 900
750 IF  md<mt THEN PRINT "     Md<Mtope => y<y tope =>    no necesitamos armadura de comp" ELSE GOTO 240
760 us2=0:ss2=0:nbc=0:y=d-SQR(d^2-2*md/fcd/e):p=mtan-md-fcd*c*(b*d-b^2/2)
770 IF y>b THEN y=d-SQR(d^2+2*p/fcd/c)
780 PRINT "y=";y;"m"
790 IF y<b THEN us1=fcd*e*y ELSE us1=fcd*(e*b+c*(y-b))
800 ss1=us1/fyd:nbt=INT(ss1*4/PI/fb^2)+1:PRINT "Us2= 0 T","As2= 0 cm2","Num barras comp= 0","Us1=";us1;"T","As1=";ss1;"cm2","Num barras tracc=";nbt
810 kc=sb+fbc:wc=ft+rc+fbc/2
820 IF nbc>nbfc THEN dp=((nbfc*wc+(nbc-nbfc)*(wc+kc))/nbc)/100
830 IF nbt=nbn THEN END ELSE GOTO 645
840 PRINT "Md>Mt => y=y tope =>             necesitamos armadurade comp"
843 us2=(md-mt)/(d-dp):ss2=us2/fycd:nbc=INT(ss2*4/PI/fbc^2)+1
850 IF yt<b THEN us1=us2+fcd*e*yt ELSE us1=us2+fcd*(b*e+c*(yt-b))
860 ss1=us1/fyd:nbt=INT(ss1*4/PI/fb^2)+1:PRINT "Us2=";us2;"T","As2=";ss2;"cm2","Num barras comp=";nbc,"Us1=";us1;"T","As1=";ss1;"cm2","Num barras tracc=";nbt
870 GOTO 820
900 PRINT "y lim < y tope":INPUT "Por met1 o met2";met
910 IF met=1 GOTO 1000
920 IF yl<b THEN ml=fcd*e*yl*(d-yl/2) ELSE ml=mtan+fcd*c*(yl-b)*(d-b/2-yl/2)
930 IF md<ml GOTO 940 ELSE GOTO 950
940 PRINT "Md<Mlim => no armadura de comp":GOTO 760
950 PRINT "Md>Mlim","Mlim=";ml;"mT":yt=yl:mt=ml:GOTO 843
1000 IF md<mtTHEN PRINT "     Md<Mt => y<y tope =>       no necesitamos armadura de comp" ELSE GOTO 1100
1010 us2=0:ss2=0:nbc=0:y=d-SQR(d^2-2*md/fcd/e):p=mtan-md-fcd*c*(b*d-b^2/2):IF y>b THEN y=d-SQR(d^2+2*p/fcd/c)
1020 IF y<yl THEN PRINT "sigma = fyd" ELSE GOTO 1040
1030 GOTO 760
1040 es=(2.625*d/yt)-3.5:sg=es*2.1
1045 IF y<b THEN ss1=fcd*y*e/sg ELSE ss1=fcd*(b*e+c*(y-b))/sg
1047 nbt=INT(ss1*4/PI/fb^2)+1
1050 PRINT "y=";y;"m","es=";es;"%","sigma=";sg;"T/cm2","As1=";ss1;"cm2","Num barras tracc=";nbt,"Num barras comp=";nbc
1060 GOTO 820
1100 PRINT "Md>Mt => y=y tope":ss2=(md-mt)/fycd/(d-dp):es=(2.625*d/yt)-3.5:sg=es*2.1
1110 IF y<b THEN ss1=(fcd*e*yt+ss2*fycd)/sg ELSE ss1=(fcd*(b*e+c*(yt-b))+ss2*fycd)/sg
1115 nbt=INT(ss1*4/PI/fb^2)+1:nbc=INT(ss2*4/PI/fbc^2)+1
1120 PRINT "As2=";ss2;"cm2",CHR$(139); "s=";es;"%.","sigma=";sg;"T/cm2","As1=";ss1;"cm2","Num barras comp=";nbc,"Num barras tracc=";nbt
1130 GOTO 820
1205 CLS:PRINT "       DIMENSIONAMIENTO               A FLEXO-COMPRESION"
1210 INPUT "b(m)";b,"h(m)";h,"recubrimiento(cm)";rc,"diam. cercos(cm)";ft,"diam. barras(cm)";fb,"sep. barras(cm)";sb,"fyd(T/cm2)";fyd,"fcd(T/m2)";fcd,"eo(m)=";eo,"Nd(T)";nd
1215 IF fyd>4 THEN fycd=4 ELSE fycd=fyd
1218 nbt=1:nbc=1
1220 nbf=INT((b*100-2*rc-2*ft+sb)/(fb+sb)):cc=INT(nbt/nbf)*nbf:bb=(fb*INT(nbt/nbf)+(INT(nbt/nbf)-1)*sb)/2:aa=bb+ft+rc:cct=INT(nbc/nbf)*nbf:bbt=(fb*INT(nbc/nbf)+sb*(INT(nbc/nbf)-1))/2:aat=bbt+ft+rc:rr=(PI*fb^2)/4
1230 r=(cc*aa+(nbt-cc)*(aa+bb+sb+fb/2))/nbt:rt=(cct*aat+(nbc-cct)*(aat+bbt+sb+fb/2))/nbc
1240 d=h-r/100:dp=rt/100:e=eo+(d-dp)/2:uc=fcd*b*d:usc=(nd*e-.35*uc*d)/(d-dp):PRINT "r=";r;"cm","No barras fila=";nbf,"fycd=";fycd;"T/cm2","d=";d;"m","d'=";dp;"m","e=";e;"m","Uc=";uc;"T","Us,crit=";usc;"T","0.05Nd=";.05*nd;"T","0.04Uc=";0.04*uc;"T"
1245 PRINT "0.45Uc=";.45*uc;"T"
1250 us2m=0:IF .05*nd>us2m THEN us2m=.05*nd
1251 IF usc>us2m THEN us2m=usc
1252 PRINT "Us2min=";us2m;"T"
1255 INPUT "Con armadura simetrica(s1/n0)";j:IF j=1 GOTO 1800
1260 INPUT "Conocemos no. barras comp(s1/n0)";n
1265 IF n=1 GOTO 1270 ELSE GOTO 1700
1270 INPUT "No. barras compr";nbc:us2=nbc*rr*fycd
1280 IF us2<us2m THEN us2=us2m
1281 IF us2<us2m THEN PRINT "Us2=Us2min"
1285 IF FRAC(us2/rr/fycd)=0 THEN x=0 ELSE x=1
1286 us2r=(INT(us2/rr/fycd)+x)*rr*fycd:PRINT "Us2real=";us2r;"T":us2=us2r
1290 IF nd-us2>=.7*uc GOTO 1295 ELSE GOTO 1400
1295 PRINT "Nd-Us2 > 0.7Uc"
1296 us1=nd-(.7*uc)-us2
1297 IF us1<.05*nd THEN us1=0.05*nd
1298 IF us1<.05*nd THEN PRINT "Us1 < 0.05Nd"
1300 ss1=us1/fycd:ss2=us2/fycd:nbt=INT(ss1/rr)+1:nbc=INT(ss2/rr):PRINT "Us2=";us2;"T","As2=";ss2;"cm2","no. barras comp=";nbc
1305 PRINT "Us1=";us1;"T","As1=";ss1;"cm2","no. barras traccion=";nbt
1310 GOTO 1220
1400 IF nd-us2<=.45*uc GOTO 1401 ELSE GOTO 1500
1401 IF nd-us2<=.45*uc THEN PRINT "Nd-Us2<0.45Uc"
1402 IF us2>nd*e/(d-dp) THEN PRINT "Us2>Nd*e/(d-d')"
1403 IF us2>nd*e/(d-dp) THEN us2=nd*e/(d-dp)
1408 ll=nd*e-us2*(d-dp):kk=uc*d:ww=SQR(1-(2*ll/kk)):us1=uc*(1-ww)+us2-nd
1410 ss2=us2/fycd:nbc=INT(ss2/rr):PRINT "Us2=";us2;"T","As2=";ss2;"cm2","nbc=";nbc,"Us1=";us1;"T"
1430 IF us1<0 THEN us1=0.05*nd
1435 IF us1<.04*uc THEN us1=.04*uc
1450 ss1=us1/fycd:nbt=INT(ss1/rr)+1:PRINT "Us1=";us1;"T","As1=";ss1;"cm2","nbt=";nbt
1460 GOTO 1220
1500 PRINT "0.7 Uc>Nd-Us2>0.45Uc => solo un minimo de Us1"
1520 us1=.05*nd:IF us1<.04*uc THEN us1=.04*uc:ss1=us1/fycd:nbt=INT(ss1/rr)+1:ss2=us2/fycd:nbc=INT(ss2/rr):PRINT "Us2=";us2;"T","As2=";ss2;"cm2","nbc=";nbc,"Us1=";us1;"T","As1=";ss1;"cm2","nbt=";nbt
1530 GOTO 1220
1700 us2=-1:PRINT "Us2=Us2min=";us2m;"T":GOTO 1280
1800 IF nd<=.45*uc GOTO 1810 ELSE GOTO 1820
1810 PRINT "Nd<0.45Uc":us=.04*uc:zz=nd*e/(d-dp)-nd*d/(d-dp)*(1-nd/2/uc):IF us<.05*nd THEN us=.05*nd
1811 IF us<zz THEN us=zz
1815 ss=us/fycd:nbt=INT(ss/rr)+1:nbc=nbt:PRINT "Us=";us;"T","As=";ss;"cm2","num barras=";nbc:GOTO 1220
1820 PRINT "Nd>0.45Uc":us=.04*uc:zz=nd*e/(d-dp)-.35*uc*d/(d-dp)
1821 IF us<.05*nd THEN us=.05*nd
1822 IF us<zz THEN us=zz
1830 GOTO 1815
