Pregunta teorica:
$S_{ij}$ la accion requerida en $i$ producto de un desplazamiento unitario en $j$ ciando todos los demas grados de libertad se encuentran restringidos
% Calculo de la rigidez lateral de un portico
% Variacion del Peralte de vigas
clc
clear variables
format longG
% Sistema de unidades [MKS]
% Generamos los nudos y barras del problema
L=[790 850 300]; % Longitud del marco
H=[342 342 342]; % Altura del marco
% Parametros del material
HA=Material(240000,0.2);
% Parametros de las secciones
H_viga=0.01:0.1:100;
Agrietamiento_columna=0.50;
Column=Seccion(50*70,Agrietamiento_columna*50*70^3/12,(5/6)*50*70);
Agrietamiento_viga=0.35;
Beam_base=Seccion(10^5,Agrietamiento_viga*30*65^3/12,(5/6)*30*65);
Beam=repmat(Seccion,1,width(H_viga));
for i=1:width(H_viga)
% Asumimos que la viga es infinitamente rigida
Beam(i)=Seccion(10^5,Agrietamiento_viga*30*H_viga(i)^3/12,(5/6)*30*H_viga(i));
end
numero_por_eje=[4 4 4 3];
% Creamos los nudos
nudos=repmat(nudo,sum(numero_por_eje),1);
numero_nudo=1;
for i=1:width(numero_por_eje)
for j=1:numero_por_eje(i)
if i==4
h=sum(H(1:j));
else
h=sum(H(1:j-1));
end
nudos(numero_nudo,1)=nudo(numero_nudo,[sum(L(1:i-1)),h],["f" "f" "f"],[0 0 0]);
numero_nudo=numero_nudo+1;
end
end
% Estabecemos las condiciones de borde
nudos(1,1).condiciones_borde=["r" "r" "r"];
nudos(5,1).condiciones_borde=["r" "r" "r"];
nudos(9,1).condiciones_borde=["r" "r" "r"];
% Establecemos las cargas de nudos
nudos(2,1).load=[6000,0,0];
nudos(3,1).load=[14000,0,0];
nudos(4,1).load=[23000,0,0];
% Creamos las barras para la viga de 65cm
barras_base=repmat(barra,18,1);
% Creamos las columnas
numero_barra=1;
idx=[1 5 9];
for i=1:3
idx_base=idx(i);
for j=1:3
barras_base(numero_barra,1)=barra(nudos(idx_base,1),nudos(idx_base+1,1),HA,Column,["na" "na"]);
numero_barra=numero_barra+1;
idx_base=idx_base+1;
end
end
% Creamos las vigas
idx=[2 3 4];
idx2=[4 4 3];
for i=1:3
for j=1:3
barras_base(numero_barra,1)=barra(nudos(idx(i)+4*(j-1),1),nudos(idx(i)+4*(j-1)+idx2(j),1),HA,Beam_base,["na" "na"]);
barras_base(numero_barra,1)=barras_base(numero_barra,1).Asignar_Carga_Distribuida(-30,-30,90);
numero_barra=numero_barra+1;
end
end
% Creamos las barras para todas las vigas
barras=repmat(barra,18,width(H_viga));
for k=1:width(H_viga)
% Creamos las columnas
numero_barra=1;
idx=[1 5 9];
for i=1:3
idx_base=idx(i);
for j=1:3
barras(numero_barra,k)=barra(nudos(idx_base,1),nudos(idx_base+1,1),HA,Column,["na" "na"]);
numero_barra=numero_barra+1;
idx_base=idx_base+1;
end
end
% Creamos las vigas
idx=[2 3 4];
idx2=[4 4 3];
for i=1:3
for j=1:3
barras(numero_barra,k)=barra(nudos(idx(i)+4*(j-1),1),nudos(idx(i)+4*(j-1)+idx2(j),1),HA,Beam(k),["na" "na"]);
barras(numero_barra,k)=barras(numero_barra,k).Asignar_Carga_Distribuida(-30,-30,90);
numero_barra=numero_barra+1;
end
end
end
modelo_base=Modelo(nudos,barras_base);
modelo_base=modelo_base.Calculos();
modelo_base=modelo_base.Resultados_Nudos();
modelo_base=modelo_base.Resultados_Barras();
% Generamos el modelos
modelos=repmat(Modelo,1,width(H_viga));
for i=1:width(H_viga)
modelos(i)=Modelo(nudos,barras(:,i));
modelos(i)=modelos(i).Calculos();
modelos(i)=modelos(i).Resultados_Nudos();
modelos(i)=modelos(i).Resultados_Barras();
end
% Calculamos los resultados
delta=zeros(4,width(H_viga));
for i=1:width(H_viga)
delta(1,i)=modelos(i).Nudos(9,1).Dj(1,1);
delta(2,i)=modelos(i).Nudos(10,1).Dj(1,1);
delta(3,i)=modelos(i).Nudos(11,1).Dj(1,1);
delta(4,i)=modelos(i).Nudos(12,1).Dj(1,1);
end
figure
hold on
plot(H_viga,delta(2,:),LineWidth=1.5)
plot(H_viga,delta(3,:),LineWidth=1.5)
plot(H_viga,delta(4,:),LineWidth=1.5)
grid on
title('Desplazamiento del Marco versus Peralte de Viga')
xlabel('Peralte de Viga [cm]')
ylabel('Deformacion [cm]')
figure
hold on
Drift=zeros(3,width(delta));
Drift(1,:)=(5.5/342)*(delta(2,:)-delta(1,:));
Drift(2,:)=(5.5/342)*(delta(3,:)-delta(2,:));
Drift(3,:)=(5.5/342)*(delta(4,:)-delta(3,:));
plot(H_viga,Drift(1,:),LineWidth=1.5)
plot(H_viga,Drift(2,:),LineWidth=1.5)
plot(H_viga,Drift(3,:),LineWidth=1.5)
x=[0 100];
y=[0.020 0.020];
plot(x,y,LineWidth=1.50,LineStyle="--",Color='k')
grid on
title('Deriva del Marco versus Peralte de Viga')
xlabel('Peralte de Viga [cm]')
ylabel('Deriva')
interp1(Drift(1,:),H_viga,0.020)
interp1(Drift(2,:),H_viga,0.020)
interp1(Drift(3,:),H_viga,0.020)
$$ H_{min-P1}=61.50[cm] $$
$$ H_{min-P2}=84.95[cm] $$
$$ H_{min-P3}=76.63[cm] $$
Por lo tanto el peralte minimo para cumplir derivas es:
$$ H_{min}=85[cm] $$
Los resultados solicitados para un peralte de viga de $65[cm]$ son: