Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Informe Rectangular
Informe Rectangular
HORMIGÓN III
Tarea Grupal
Desarrollo de programas para la evaluación de capacidad a
flexo-compresión uniaxial en columnas de hormigón armado
Sección Rectangular
Fecha de entrega:
23/07/2020
Perı́odo 2020-A
Miembros que conforman el equipo
Los siguientes miembros del equipo han contribuı́do en esta tarea (Orden Alfábetico):
Averos Vanessa.
Bermeo Carlos.
Castro Andrea.
López Gabriela.
Quel Alexis.
Zapata Jhoselin.
1
2
3. Código
function varargout = InterfazRectangular(varargin)
gui_Singleton = 1;
gui_State = struct(’gui_Name’, mfilename, ...
’gui_Singleton’, gui_Singleton, ...
’gui_OpeningFcn’, @InterfazRectangular_OpeningFcn, ...
’gui_OutputFcn’, @InterfazRectangular_OutputFcn, ...
’gui_LayoutFcn’, [] , ...
’gui_Callback’, []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
%Inicio de la interfaz.
function InterfazRectangular_OpeningFcn(hObject, eventdata, handles, varargin)
%Contribución del acero.
%Variables ’datos’ se asignan en la tabla_acero en la Interfaz.
datos=get(handles.tabla_acero,’Data’);
%Asignar valores a la variable ’datos’ en la tabla_acero.
set(handles.tabla_acero,’Data’, datos);
handles.output=hObject;
guidata(hObject,handles);
%Contribución del acero.
function tabla_acero_CellEditCallback(hObject, eventdata, handles)
%Variables ’datos’ se asignan en la tabla_acero en la Interfaz.
datos=get(handles.tabla_acero,’Data’);
datos(:,:)=[]; %Tabla inicia vacı́a.
%Asignar valores a la variable ’datos’ en la tabla_acero.
set(handles.tabla_acero,’Data’, datos);
handles.output=hObject;
guidata(hObject,handles);
3
function fchormigon_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,’BackgroundColor’), get(0,’defaultUicontrolBackgroundColor’))
set(hObject,’BackgroundColor’,’white’);
end
4
if ispc && isequal(get(hObject,’BackgroundColor’), get(0,’defaultUicontrolBackgroundColor’))
set(hObject,’BackgroundColor’,’white’);
end
%Botón A~
nadir Capas
function anadir_Callback(hObject, eventdata, handles)
datos=get(handles.tabla_acero,’Data’); %Variable ’datos’ se asignan en la tabla_acero.
ncapas1=get(handles.capas,’string’); %Se obtiene el valor del botón ’capas’ como variable string.
ncapas=str2double(ncapas1); %Conversión del valor de capas de string a double.
if isempty(datos) %Verificar que la tabla este vacı́a.
%Lazo for para mostrar los datos del número de capas en la primera columna de la tabla_acero.
for i=1:ncapas
capas=i;
datos{i,1}=capas; %Ubicación de la capa en la fila i columna 1.
end
else
datos{end+i,1}=capas; %Ubicación de las capas en la columna 1.
end
set(handles.tabla_acero,’Data’,datos); %Asiganar valores a la variable ’datos’ en la tabla_acero.
%Boton A~
nadir.
function pb_add_Callback(hObject, eventdata, handles)
% Declaración e ingreso de variables.
datos=get(handles.tabla_acero,’Data’); %Variable ’datos’ se asignan en la tabla_acero.
%Variable ’varillas1’ se asigna en el recuadro de edit_varillas para
varillas1=get(handles.edit_varillas,’string’); a~ nadir a la tabla_acero.
%Variable ’diametro1’ se asigna en el recuadro de edit_diametro para a~ nadir a la tabla_acero.
diametro1=get(handles.edit_diametro,’string’);
%Variable ’ncapas1’ se asignan en el recuadro de capas para a~ nadir a la tabla_acero.
ncapas1=get(handles.capas,’string’);
%Conversión del tipo de variable string a double.
varillas=str2double(varillas1);
diametro=str2double(diametro1);
ncapas=str2double(ncapas1);
%Para a~
nadir datos particulares de cada capa.
if isempty(datos) %Verificar que la tabla este vacia.
5
%Especifı́ca la ubicación de los valores.
datos{1,2}=varillas; %Ubicación del valor del número de varillas en la fila 1, columna 2.
datos{1,3}=diametro; %Ubicación del valor de diámetro de varilla en la fila 1, columna 2.
else
for i=1:ncapas
%Verificar que la tabla este vacı́a para la columna del diámetro y el número de varillas.
if(isempty(datos{i,3})&& isempty(datos{i,2}))
datos{i,2}=varillas; %Ubicación del valor del número de varillas en la fila i, columna 2.
datos{i,3}=diametro; %Ubicación del valor del diámetro de varilla en la fila i, columna 3.
break %Ingreso de datos por fila.
end
end
end
set(handles.tabla_acero,’Data’,datos); %Asiganar valores a la variable ’datos’ en la tabla_acero.
%Botón Calcular
function Calcular_Callback(hObject, eventdata, handles)
datos=get(handles.tabla_acero,’Data’); %Variable ’datos’ se asignan en la tabla_acero.
%Asignación de variables en su respectivo recuadro para a~
nadir a la tabla_acero.
varillas1=get(handles.edit_varillas,’string’);
diametro1=get(handles.edit_diametro,’string’);
ncapas1=get(handles.capas,’string’);
estribo1=get(handles.estribo,’string’);
rec1=get(handles.recubrimiento,’string’);
h1=get(handles.altura,’string’);
b1=get(handles.base,’string’);
fc1=get(handles.fchormigon,’string’);
fy1=get(handles.fyacero,’string’);
factorp1=get(handles.factorp,’string’);
6
datos{i,6}=Esi;
fsi=E*datos{i,6}; %Cálculo del esfuerzo de cada capa de varillas.
datos{i,7}=fsi;
%Correción del esfuerzo de cada capa de varillas.
if datos{i,7}>fy
datos{i,8}=fy;
elseif datos{i,7}<-fy
datos{i,8}=-fy;
else
datos{i,8}=datos{i,7};
end
Fsi=(datos{i,8}*datos{i,4})/1000; %Cálculo de la fuerza interna de cada capa de acero.
datos{i,9}=Fsi;
Zsi=h/2-datos{i,5}; %Cálculo del brazo de palanca.
datos{i,10}=Zsi;
%Cálculo del momento resistente de cada cada de acero en torno
%al centroide de la sección transversal.
Msi=(datos{i,9}*datos{i,10})/100;
datos{i,11}=Msi;
end
%Se inicializa las variables en cero.
sumaArea_1=0;
sumaFsi_1=0;
sumaMsi_1=0;
%Lazo for para obtener las sumatoria total.
for i=1:ncapas
sumaArea_1=sumaArea_1+datos{i,4}; %Sumatoria total de las areas de cada capa de acero.
%Conversión de double a string para que se muestre en el recuadro de la interfaz.
sumaArea=num2str(sumaArea_1);
sumaFsi_1=sumaFsi_1+datos{i,9};%Sumatoria total de las Fuerzas internas de cada capa de acero.
sumaFsi=num2str(sumaFsi_1);
sumaMsi_1=sumaMsi_1+datos{i,11};%Sumatoria total de los Momentos resistentes de cada capa de acero.
sumaMsi=num2str(sumaMsi_1);
end
7
Mc=num2str(Mc_1);
%Iteraciones
cmax=4*h; %c va a variar hasta 4 veces la altura de la sección.
c1=0; %Se inicializa la variable en cero.
incr=1; %c varia de acuerdo al incremento que en este caso es de 1 en 1.
iteraciones=round((cmax-c1)/incr); %Número de ciclos a iterar, round = redondea a entero.
8
espa=(h-2*rec-2*(estribo/10)-datos{i,3}/(10))/(ncapas-1);
%Valor de dsi total a cada capa de varillas.
dstotal=rec+(estribo/10)+datos{i,3}/(2*10)+espa*(i-1);
datos{i,5}=dstotal;
%Cálculo de la deformación unitaria del acero de cada iteración.
Esi=((0.003*(c1-datos{i,5}))/(c1));
datos{i,6}=Esi;
fsi=E*datos{i,6}; %Cálculo del esfuerzo de cada capa de varillas.
datos{i,7}=fsi;
%Correción del esfuerzo de cada capa de varillas.
if datos{i,7}>fy
datos{i,8}=fy;
elseif datos{i,7}<-fy
datos{i,8}=-fy;
else
datos{i,8}=datos{i,7};
end
Fsi=(datos{i,8}*datos{i,4})/1000; %Cálculo de la fuerza interna de cada capa de acero.
datos{i,9}=Fsi;
Zsi=h/2-datos{i,5}; %Cálculo del brazo de palanca.
datos{i,10}=Zsi;
%Cálculo del momento resistente de cada cada de acero en torno al centroide
%de la sección transversal.
Msi=(datos{i,9}*datos{i,10})/100;
datos{i,11}=Msi;
end
%Condición para hallar el factor de reducción en función de la deformación.
%ACI 318-19 Tabla 21.2.2 Factor de Reducción para momento, fuerza axial,
o combinación de momentos.
%Deformación unitaria de la última capa <= 0.002, abs = valor absoluto.
if abs(datos{ncapas,6})<=0.002
phid=0.65; % Factor de reducción - Controlada por compresión.
%Deformación unitaria de la última capa de ser mayor a 0.002 y menor a 0.005
elseif 0.002<abs(datos{ncapas,6})&& abs(datos{ncapas,6})<0.005
phid=0.25*(abs(datos{ncapas,6})-0.002)/(0.005-0.002)+0.65;%Factor de reducción - Transición.
else
phid=0.9; %Factor de reducción - Controlada por tracción.
end
%Se inicializa las variables en cero.
sumaArea_1=0;
sumaFsi_1=0;
sumaMsi_1=0;
%Lazo for para obtener el valor de la sumatoria de Area, Fuerza y Momento del acero
que dependen del valor de c en cada iteración.
for i=1:ncapas
sumaArea_1=sumaArea_1+datos{i,4};
sumaFsi_1=sumaFsi_1+datos{i,9};
sumaMsi_1=sumaMsi_1+datos{i,11};
end
%Contribución del hormigón
Fc_1=(a_1*b*0.85*fc)/1000; %Cálculo de la fuerza interna del bloque de compresión.
Mc_1=Fc_1*Zc_1/100; %Cálculo del momento resistente del bloque de compresión.
P=sumaFsi_1+Fc_1; %Fuerza interna total.
M=sumaMsi_1+Mc_1; %Momento resistente total.
%Condicional para que el último punto se almacene la condición balanceada.
if k==iteraciones
Pb_n=P;
Mb_n=M;
9
end
%Se guardan los resultados en vectores, cargas reducidas y cargas probables.
Pn(k,1)=P; % Carga Axial
Mn(k,1)=M; % Momentos
Pnr(k,1)=P*phid; %Carga axial reducido por deformación del acero.
Mnr(k,1)=M*phid; %Momento reducido por deformación del acero.
Pnp(k,1)=P*factorp; %Carga probable.
Mnp(k,1)=M*factorp; %Momento probable.
%Matriz que almacena los puntos de la carga axial (R1) y momentos (R2) para la gráfica.
R1(k,1)=C(k,1); %Columna 1 valores de c.
R1(k,2)=Pn(k,1); %Columna 2 carga axial.
R1(k,3)=Pnr(k,1); %Columna 3 carga reducida.
R1(k,4)=Pnp(k,1); %Columna 4 carga probable.
10
set(handles.suma_Msi,’String’,sumaMsi);
set(handles.a_c,’String’,a);
set(handles.Fc_c,’String’,Fc);
set(handles.Zc_c,’String’,Zc);
set(handles.Mc_c,’String’,Mc);
set(handles.Ponum,’String’,Po);
set(handles.Tonum,’String’,To);
set(handles.Mbnum,’String’,Mb);
set(handles.Pbnum,’String’,Pb);
11
function Mc_c_Callback(hObject, eventdata, handles)
4. Ejemplo de Aplicación
4.1. Datos y Gráficas de la sección
12
4.2. Resultados Tabulados para Cb
13
5. Reflexión Crı́tica
El programa hecho en Matlab para la realización de los diagramas de Interacción para secciones rectangu-
lares, es de gran utilidad debido a que es una representación matemática que define en su borde la capacidad
nominal máxima que puede tener una sección de hormigón armado, el cual está sometido a acciones combinadas
simultáneas de flexión y compresión, además se puede apreciar la carga axial reducida con su respectivo mo-
mento reducido, de igual forma la carga axial probable con su momento probable, que ayudan a tener una idea
de la capacidad que la sección puede llegar a desarrollar ante un sismo real, ya que la columna es un elemento
muy crı́tico de la estructura.
14
Figura 7: Asistencia
15