Está en la página 1de 9

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%
% TEMA: DES, DMO Y ZAPATAS
% AUTOR: JUAN SEBASTIAN RAMIREZ MARTINEZ
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Close all
clear all
clc
p=1;
while p==1
clear;
clc;

fprintf('Chequeos en vigas y/o columnas para diferentes requerimientos de


disipación de energía. \n');

disp('1. DMI')
disp('2. DMO')
disp('3. DES')
disp(' ');

menu=input('Seleccione un tema \n\n','s');

switch menu
case'1'
fprintf('DMI \n');
disp('1. Separación entre estribos [S].')
disp('2. Área de refuerzo transversal (Cortante) [Av].')
disp(' ');

dmi=input('¿Qué chequeo desea realizar? \n\n','s');


switch dmi
case '1'
fprintf('Separación entre estribos [S]. \n');
As1=input('Ingresar refuerzo longitudinal superior (cm2):
');
As2=input('Ingresar refuerzo longitudinal inferior (cm2):
');
Cv=input('Ingresar carga viva (kgf/m): ');
Cm=input('Ingresar carga muerta (kgf/m): ');
fy=input('Ingresar fy (kgf/cm2): ');
fc=input('Ingresar f´c (kgf/cm2): ');
L=input('Ingresar longitud de la viga(m): ');
d=input('Ingresar distancia d (cm): ');
b=input('Ingresar ancho b (cm): ');
h=input('Ingresar altura h (cm): ');
Av=input('Ingresar refuerzo transversal (cm2): ');
Wu=1*Cv+1.2*Cm;
Mn1=As1*fy*(d-((As1*fy)/(1.7*fc*b)));
Mn2=As2*fy*(d-((As2*fy)/(1.7*fc*b)));
Ve=(((Mn1/100)+(Mn2/100))/L)+(Wu*L/2);
Vu=Wu*L/2;
Pvc=0.75*0.53*1*sqrt(fc)*b*d;
S=(0.75*Av*fy*d)/(Vu-Pvc);

fprintf('Distancia entre estribos: %7.2f (cm)',S);

case '2'
fprintf(' Área de refuerzo transversal (Cortante)
[Av]. \n');
As1=input('Ingresar refuerzo longitudinal superior (cm2):
');
As2=input('Ingresar refuerzo longitudinal inferior (cm2):
');
Cv=input('Ingresar carga viva (kgf/m): ');
Cm=input('Ingresar carga muerta (kgf/m): ');
fy=input('Ingresar fy (kgf/cm2): ');
fc=input('Ingresar f´c (kgf/cm2): ');
L=input('Ingresar longitud de la viga(m): ');
d=input('Ingresar distancia d (cm): ');
b=input('Ingresar ancho b (cm): ');
h=input('Ingresar altura h (cm): ');
S=input('Ingresar distancia entre estribos (cm): ');
Wu=1*Cv+1.2*Cm;
Mn1=As1*fy*(d-((As1*fy)/(1.7*fc*b)));
Mn2=As2*fy*(d-((As2*fy)/(1.7*fc*b)));
Ve=((Mn1+Mn2)/L)+(Wu*L/2);
Vu=Wu*L/2;
Pvc=0.75*0.53*1*sqrt(fc)*b*d;
Av=(S*(Vu-Pvc))/(0.75*fy*d);

fprintf('Área de refuerzo transversal: %7.2f (cm2)',Av);

end

case '2'
fprintf('DMO \n');
disp('1. Cortante plástico en vigas.')
disp('2. Cortante plástico en columnas.')
disp('3. Resistencia mínima a flexión en columnas.')
disp(' ');

dmo=input(''¿Qué chequeo desea realizar? \n\n','s');


switch dmo
case '1'
fprintf('Cortante plástico en vigas. \n');
As1=input('Ingresar refuerzo longitudinal superior (cm2):
');
As2=input('Ingresar refuerzo longitudinal inferior (cm2):
');
Cv=input('Ingresar carga viva (kgf/m): ');
Cm=input('Ingresar carga muerta (kgf/m): ');
Cs=input('Ingresar carga sismica (kgf/m): ');
fy=input('Ingresar fy (kgf/cm2): ');
fc=input('Ingresar f´c (kgf/cm2): ');
L=input('Ingresar longitud de la viga(m): ');
d=input('Ingresar distancia d (cm): ');
b=input('Ingresar ancho b (cm): ');
h=input('Ingresar altura h (cm): ');
Av=input('Ingresar refuerzo transversal (cm2): ');
S=input('Ingresar distancia entre estribos (cm): ');
Wu=1*Cv+1.2*Cm+2*Cs;
Mn1=As1*fy*(d-((As1*fy)/(1.7*fc*b)));
Mn2=As2*fy*(d-((As2*fy)/(1.7*fc*b)));
Ve=(((Mn1/100)+(Mn2/100))/L)+(Wu*L/2);
Vs=(0.75*Av*fy*d)/S;
Pvc=0.75*0.53*1*sqrt(fc)*b*d;
Vu=Vs+Pvc;
fprintf('Ve= %7.2f (kgf)\n',Ve);
fprintf('Vu= %7.2f (kgf)\n',Vu);

if Ve>=(Vu/2)
S1=(0.75*Av*fy*d)/(Ve);
else Ve<(Vu/2)
S1=(0.75*Av*fy*d)/(Ve-Pvc);
end

fprintf('Distancia entre estribos: %7.2f (cm)\n',S1);


fprintf('Aproximar este valor a una distancia
constructiva, preferiblemente por debajo. \n');

case '2'
fprintf('Cortante plástico en columnas. \n');
Mn=input('Ingresar momento (kgf*m): ');
Pn=input('Ingresar carga axial (kgf): ');
fy=input('Ingresar fy (kgf/cm2): ');
fc=input('Ingresar f´c (kgf/cm2): ');
L=input('Ingresar longitud de la columna(m): ');
d=input('Ingresar distancia d (cm): ');
b=input('Ingresar ancho b (cm): ');
h=input('Ingresar altura h (cm): ');
Av=input('Ingresar refuerzo transversal (cm2): ');
S=input('Ingresar distancia entre estribos (cm): ');
Ve=((Mn*2)/L);
Vs=(0.65*Av*fy*d)/S;
Pvc=0.65*0.53*1*sqrt(fc)*b*d;
Vu=Vs+Pvc;
Pr=0.1*b*h*fc;
fprintf('Ve= %7.2f (kgf)\n',Ve);
fprintf('Vu= %7.2f (kgf)\n',Vu);
fprintf('Pu= %7.2f (kgf)\n',Pn);
fprintf('Pr= %7.2f (kgf)\n',Pr);

if Ve>=(Vu/2)
if Pn<=Pr
S1=(0.65*Av*fy*d)/(Ve);
fprintf('Cumple con las dos condiciones. \n');
else Pn>Pr
S1=(0.65*Av*fy*d)/(Ve-Pvc);
fprintf('No cumple con la condición axial. \n');
end
else Ve<(Vu/2)
S1=(0.65*Av*fy*d)/(Ve-Pvc);
fprintf('No cumple con la condición de cortante.
\n');
end

fprintf('Distancia entre estribos: %7.2f (cm)\n',S1);


fprintf('Aproximar este valor a una distancia
constructiva, preferiblemente por debajo. \n');

case '3'
fprintf('Resistencia mínima a flexión en columnas. \n');
Mnc=input('Ingresar momento de columna (kgf*m): ');
As1=input('Ingresar refuerzo longitudinal superior (cm2):
');
As2=input('Ingresar refuerzo longitudinal inferior (cm2):
');
fy=input('Ingresar fy (kgf/cm2): ');
fc=input('Ingresar f´c (kgf/cm2): ');
d=input('Ingresar distancia d de viga(cm): ');
b=input('Ingresar ancho b de viga(cm): ');
h=input('Ingresar altura h de viga(cm): ');
Mnv1=(As1*fy*(d-((As1*fy)/(1.7*fc*b))))/100;
Mnv2=(As2*fy*(d-((As2*fy)/(1.7*fc*b))))/100;
SUMCOL=2*Mnc;
SUMVIG=Mnv1+Mnv2;
SUMVIG120=SUMVIG*1.2;
fprintf('Momentos en columna= %7.2f (kgf*m)\n',SUMCOL);
fprintf('Momentos en viga= %7.2f (kgf*m)\n',SUMVIG);
fprintf('1.2 veces Momentos en viga= %7.2f
(kgf*m)\n',SUMVIG120);

if SUMCOL>=1.2*SUMVIG
fprintf('Cumple con el chequeo de los 6/5. \n');
else SUMCOL<1.2*SUMVIG
fprintf('NO cumple con el chequeo de los 6/5. \n');

end
end

case '3'
fprintf('DES \n');
disp('1. Cortante plástico en vigas.')
disp('2. Cortante plástico en columnas.')
disp('3. Resistencia mínima a flexión en columnas.')
disp('4. Nudos.')
disp(' ');

des=input('¿Qué chequeo desea realizar? \n\n','s');


switch des
case '1'
fprintf('Cortante plástico en vigas. \n');
As1=input('Ingresar refuerzo longitudinal superior (cm2):
');
As2=input('Ingresar refuerzo longitudinal inferior (cm2):
');
Cv=input('Ingresar carga viva (kgf/m): ');
Cm=input('Ingresar carga muerta (kgf/m): ');
fy=input('Ingresar fy (kgf/cm2): ');
fc=input('Ingresar f´c (kgf/cm2): ');
L=input('Ingresar longitud de la viga(m): ');
d=input('Ingresar distancia d (cm): ');
b=input('Ingresar ancho b (cm): ');
h=input('Ingresar altura h (cm): ');
Av=input('Ingresar refuerzo transversal (cm2): ');
S=input('Ingresar distancia entre estribos (cm): ');
Wu=1*Cv+1.2*Cm;
Mpr1=As1*1.25*fy*(d-((As1*1.25*fy)/(1.7*fc*b)));
Mpr2=As2*1.25*fy*(d-((As2*1.25*fy)/(1.7*fc*b)));
Ve=(((Mpr1/100)+(Mpr2/100))/L)+(Wu*L/2);
Vs=(0.75*Av*fy*d)/S;
Pvc=0.75*0.53*1*sqrt(fc)*b*d;
Vu=Vs+Pvc;
fprintf('Ve= %7.2f (kgf)\n',Ve);
fprintf('Vu= %7.2f (kgf)\n',Vu);

if Ve>=(Vu/2)
S1=(0.75*Av*fy*d)/(Ve);
else Ve<(Vu/2)
S1=(0.75*Av*fy*d)/(Ve-Pvc);
end

fprintf('Distancia entre estribos: %7.2f (cm)\n',S1);


fprintf('Aproximar este valor a una distancia
constructiva, preferiblemente por debajo. \n');

case '2'
fprintf('Cortante plástico en columnas. \n');
Mpr=input('Ingresar momento (kgf*m): ');
Ppr=input('Ingresar carga axial (kgf): ');
fy=input('Ingresar fy (kgf/cm2): ');
fc=input('Ingresar f´c (kgf/cm2): ');
L=input('Ingresar longitud de la columna(m): ');
d=input('Ingresar distancia d (cm): ');
b=input('Ingresar ancho b (cm): ');
h=input('Ingresar altura h (cm): ');
Av=input('Ingresar refuerzo transversal (cm2): ');
S=input('Ingresar distancia entre estribos (cm): ');
Ve=((Mpr*2)/L);
Vs=(0.65*Av*fy*d)/S;
Pvc=0.65*0.53*1*sqrt(fc)*b*d;
Vu=Vs+Pvc;
Pr=0.05*b*h*fc;
fprintf('Ve= %7.2f (kgf)\n',Ve);
fprintf('Vu= %7.2f (kgf)\n',Vu);
fprintf('Pu= %7.2f (kgf)\n',Ppr);
fprintf('Pr= %7.2f (kgf)\n',Pr);

if Ve>=(Vu/2)
if Ppr<=Pr
S1=(0.65*Av*fy*d)/(Ve);
fprintf('Cumple con las dos condiciones. \n');
else Ppr>Pr
S1=(0.65*Av*fy*d)/(Ve-Pvc);
fprintf('No cumple con la condición axial. \n');
end
else Ve<(Vu/2)
S1=(0.65*Av*fy*d)/(Ve-Pvc);
fprintf('No cumple con la condición de cortante.
\n');
end

fprintf('Distancia entre estribos: %7.2f (cm)\n',S1);


fprintf('Aproximar este valor a una distancia
constructiva, preferiblemente por debajo. \n');

case '3'
fprintf('Resistencia mínima a flexión en columnas. \n');
Mnc=input('Ingresar momento de columna (kgf*m): ');
As1=input('Ingresar refuerzo longitudinal superior (cm2):
');
As2=input('Ingresar refuerzo longitudinal inferior (cm2):
');
fy=input('Ingresar fy (kgf/cm2): ');
fc=input('Ingresar f´c (kgf/cm2): ');
d=input('Ingresar distancia d de viga(cm): ');
b=input('Ingresar ancho b de viga(cm): ');
h=input('Ingresar altura h de viga(cm): ');
Mnv1=(As1*fy*(d-((As1*fy)/(1.7*fc*b))))/100;
Mnv2=(As2*fy*(d-((As2*fy)/(1.7*fc*b))))/100;
SUMCOL=2*Mnc;
SUMVIG=Mnv1+Mnv2;
SUMVIG120=SUMVIG*1.2;
fprintf('Momentos en la columna= %7.2f
(kgf*m)\n',SUMCOL);
fprintf('Momentos en la viga= %7.2f (kgf*m)\n',SUMVIG);
fprintf('1.2 veces Momentos en la viga= %7.2f
(kgf*m)\n',SUMVIG120);

if SUMCOL>=1.2*SUMVIG
fprintf('Cumple con el chequeo de los 6/5. \n');
else SUMCOL<1.2*SUMVIG
fprintf('NO cumple con el chequeo de los 6/5. \n');
end

case '4'
fprintf('Nudos. \n');
As1=input('Ingresar refuerzo longitudinal superior (cm2):
');
As2=input('Ingresar refuerzo longitudinal inferior (cm2):
');
fy=input('Ingresar fy (kgf/cm2): ');
fc=input('Ingresar f´c (kgf/cm2): ');
bc=input('Ingresar ancho b de columna(cm): ');
hc=input('Ingresar altura h de columna(cm): ');
bv=input('Ingresar ancho b de viga(cm): ');
hv=input('Ingresar altura h de viga(cm): ');
fprintf('Seleccione segun el caso: \n');
fprintf('1. Nudos confinados a 4 caras. \n');
fprintf('2. Nudos confinados a 2 o 3 caras. \n');
fprintf('3. Otros casos de confinamiento. \n');
NC=input('Ingresar caso de confinamiento: ');

if NC==1
factor=5.3;
elseif NC==2
factor=4;
else NC==3
factor=3.2;
end

T1=As1*1.25*fy;
T2=As2*1.25*fy;
Aj=bv*hc;
Vn=factor*Aj*sqrt(fc);
SUMT=T1+T2;
fprintf('Sumatoria de tensiones= %7.2f (kgf)\n',SUMT);
fprintf('Capacidad del nudo a cortante Vn= %7.2f
(kgf)\n',Vn);

if Vn>SUMT
fprintf('El nudo cumple con el chequeo. \n');
else Vn<SUMT
fprintf('El nudo NO cumple con el chequeo. \n');
end

end

end

p=input('\n\n\n Para continuar presione 1, para finalizar presione


<Enter>: ');
end
clc

clear all
clc
fprintf('ZAPATAS RECTANGULARES \n');

syms d;
b=input('Ingresar ancho de la columna (cm): ');
h=input('Ingresar largo de la columna (cm): ');
qa=input('Ingresar capacidad admisible del suelo qa (kgf/cm2): ');
Df=input('Ingresar profundidad de la zapata Df (cm): ');
Pcm=input('Ingresar carga muerta (kgf): ');
Pcv=input('Ingresar carga viva (kgf): ');
fc=input('Ingresar f´c (kgf/cm2): ');
fy=input('Ingresar fy (kgf/cm2): ');
B=input('Ingresar un valor supuesto de B (cm): ');

Pu=1.2*Pcm+1.6*Pcv;
Ps=Pcm+Pcv;
FC=Pu/Ps;
qu=FC*qa;
Az=Pu/qu;
L=Az/B;

%CHEQUEOS EN 1D
%EJE X
Dx=vpasolve((qu*((L/2)-(h/2)-d)*B) == 0.75*0.53*sqrt(fc)*(B*d),d);
dx=double(Dx);
fprintf('Chequeo en una dirección dx: %7.2f (cm)\n',dx);

%EJE Y
Dy=vpasolve((qu*((B/2)-(b/2)-d)*L) == 0.75*0.53*sqrt(fc)*(L*d),d);
dy=double(Dy);
fprintf('Chequeo en una dirección dy: %7.2f (cm)\n',dy);

%CHEQUEOS EN 2D
if h>b
Beta=h/b;
else b>h
Beta=b/h;
end

fprintf('Seleccione alpha s segun el caso: \n');


fprintf('Columna interior = 40 \n');
fprintf('Columna de borde = 30 \n');
fprintf('Columna de esquina = 20 \n');
as=input('alpha s: ');

D12=vpasolve(qu*(((L*B)-((h+d)*(b+d)))) ==
0.75*0.53*(1+(2/Beta))*1*sqrt(fc)*(2*(b+d+h+d))*d,d);
d12=double(D12);
fprintf('Chequeo en dos direcciones d12: %7.2f (cm)\n',d12);
D22=vpasolve(qu*(((L*B)-((h+d)*(b+d)))) ==
0.75*0.27*(((as*d)/(2*(b+d+h+d)))+2)*1*sqrt(fc)*(2*(b+d+h+d))*d,d);
d22=double(D22);
fprintf('Chequeo en dos direcciones d12: %7.2f (cm)\n',d22);

D32=vpasolve(qu*(((L*B)-((h+d)*(b+d)))) ==
0.75*1*sqrt(fc)*(2*(b+d+h+d))*d,d);
d32=double(D32);
fprintf('Chequeo en dos direcciones d12: %7.2f (cm)\n',d32);

También podría gustarte