Documentos de Académico
Documentos de Profesional
Documentos de Cultura
APLICADO A GEOTECNIA”
1
Práctica: Cimentaciones superficiales
Introducción
Posiblemente esta sea una de las prácticas más complejas que se desarrollan en este curso. Sin
embargo, esta dificultad no se debe al código escrito o a la programación en si, sino a la
complejidad del problema a resolver para el cual se escribe este programa.
Por eso, se recuerda que deben tratar de aprender los fundamentos de la programación, y que si
hay algún problema con la teoría de fondo traten de apartarlo en la medida de lo posible. Sin
embargo, se aportará documentación y bibliografía referente a la base teórica en que nos
apoyamos para dar solución al problema.
El problema se ha simplificado en la medida de lo posible para hacer la programación lo más
fácil posible, y que se centre en aprender y practicar los conocimientos aprendidos en este
módulo.
Objetivo
Enunciado del problema
Se pide el desarrollo de un programa (script) el cual deberá calcular las tensiones bajo una
cimentación superficial (zapata aislada) así como los asientos producidos por las cargas según la
teoría de la elasticidad. Una vez calculado esto, también deberá calcularse la carga ultima que
producirá el fallo de la cimentación según el método de cálculo de Brinch-Hansen.
Para cualquier duda en relación a las teorías usadas para dar solución al problema consulten la
bibliografía.
Los datos iniciales deberán ser tomados de una hoja de cálculo Excel que encontrarán en el
espacio destinado a este módulo. Además, deberá crearse un archivo .txt que incluya los valores
obtenidos a modo de resumen de cálculos.
Para la resolución del problema, se debe adecuar a lo establecido en el documento
“instrucciones del programa”. Donde se especifica que:
La zapata será rectangular o circular
La zapata estará en superficie
No habrá inclinación de la carga y ésta será concéntrica
No habrá inclinación de la zapata
No habrá inclinación del terreno
La zapata estará suficientemente alejada de taludes para no tenerlo en cuenta en
coeficientes correctores
2
Curso “Programación en Matlab aplicado a geotecnia”
Los datos que deberán incluirse en el archive resumen serán:
Zapatas rectangulares (condiciones no drenadas):
o Tensión vertical y asientos en:
Centro del lado “B”
Esquina
Centro de la zapata
o Tensión última admisible
Zapatas circulares (condiciones drenadas y no drenadas):
o Tensión vertical y asientos
Centro de la zapata
Lado de la zapata
o Tensión última admisible
Información adicional
Para el caso no drenado el coeficiente de Poison será 0.5 y el ángulo φ será 0.
Desarrollo de la practica
Carga de de variables
Abra un nuevo script.
En primer lugar, se establecerán las variables de entrada. Éstas serán tomadas del Excel adjunto
mediante la función xlsread().
%% Datos
[datos_num,datos_texto] = xlsread('entrada_datos.xlsx');
%definición de variables
b=datos_num(2,1);
L=datos_num(3,1);
Z=datos_num(1,4);
E=datos_num(6,1);
poisson=datos_num(5,1);
p=datos_num(2,4);
a=datos_num(8,1);
cohesion=datos_num(3,4);
phi_prima=datos_num(4,4);
Como se puede observar, los datos se separarán en dos variables: datos_num y datos_texto.
Cada una de ellas contendrá los datos que son de tipo numérico y de tipo texto respectivamente.
En esta ocasión no se ha establecido el rango de datos a cargar en la función ya que
automáticamente MatLab tomará el rango de datos ajustado a los valores que son no nulos. Es
decir: de la A2 a la E10.
Cada variable contendrá una matriz y simplemente igualamos cada una de las variables a su
valor correspondiente en la matriz cargada.
3
Curso “Programación en Matlab aplicado a geotecnia”
Estructura de selección
La solución del problema difiere bastante si se trata de una zapata rectangular o si es circular.
Por tanto, se establece una estructura de selección con dos apartados (uno para cada caso) que
dividirá el código en dos. Para la sentencia de comparación, o la condición para que realice los
cálculos para rectangular o circular, se ha utilizado una función llamada strcmp() que consta de
dos argumentos, los cuales serán cadenas de caracteres que serán comparados y si son iguales
devolverá el valor True, y en caso contrario false.
if strcmp(datos_texto(1,2),'rectangular')
Cálculos para rectangular
elseif strcmp(datos_texto(1,2),'circular')
Cálculos para circular
else
error('ERROR AL INTRODUCIR CIRCULAR O RECTANGULAR EN EL
EXCEL')
end
Cálculos para rectangular
%% Cálculo de tensión vertical esquina de la zapata
R1=(L^2+Z^2)^0.5;
R2=(b^2+Z^2)^0.5;
R3=(L^2+b^2+Z^2)^0.5;
stress_z_esquina=(p/(2*pi))*(atan(L*b/(Z*R3))+(L*b*Z/R3)*((
1/R1^2)+(1/R2^2)));
4
Curso “Programación en Matlab aplicado a geotecnia”
A=(1/(2*pi))*(log((sqrt(1+M1^2+N1^2)+M1)/(sqrt(1+M1^2+N1^2)
-M1))+M1*log((sqrt(1+M1^2+N1^2)+1)/(sqrt(1+M1^2+N1^2)-1)));
B=(N1/(2*pi))*atan(M1/(N1*sqrt(1+M1^2+N1^2)));
asiento_centro=((p*ancho/E)*(1-poisson^2)*(A-((1-
2*poisson)-(1-poisson))*B))*4;
Como se puede observar se comienza con unas variables largo y ancho que son eliminadas a
medida que se realiza cada cálculo porque según la posición donde se quiere hacer el cálculo de
la tensión y asiento, estos valores cambian.
La formulación se establece para el cálculo en esquina. Por lo que, si queremos la tensión o
asiento en el centro de la zapata, se deberá calcular para cuatro zapatas con una esquina
coincidente (sería el centro) y sumar los resultados. Aquí se ha aplicado el teorema de
superposición.
5
Curso “Programación en Matlab aplicado a geotecnia”
Salida de datos al txt
Una vez se han realizado los cálculo, el último paso es volcarlos al archivo .txt. Para ello,
usaremos la función fprintf(), sin olvidarnos abrir antes el archivo con fopen().
%escritura del archivo txt
fi=fopen('solucion.txt','wt');
fprintf(fi,'tensión vertical en la esquina= %2.4f
kPa',stress_z_esquina)
fprintf(fi,'\n')
fprintf(fi,'tensión vertical en el centro del lateral=
%2.4f kPa',stress_z_lateral)
fprintf(fi,'\n')
fprintf(fi,'tensión vertical en el centro de la zapata=
%2.4f kPa',stress_z_centro)
fprintf(fi,'\n')
fprintf(fi,'Asiento bajo la esquina= %2.4f
m',asiento_esquina)
fprintf(fi,'\n')
fprintf(fi,'Asiento bajo el centro del lateral= %2.4f
m',asiento_lateral)
fprintf(fi,'\n')
fprintf(fi,'Asiento bajo el centro= %2.4f
m',asiento_centro)
fprintf(fi,'\n')
fprintf(fi,'Carga última admisible= %2.4f kPa',p_ultima)
st=fclose(fi);
Proceso para zapatas circulares
Ahora queda repetir el mismo proceso para los cálculos de zapatas circulares:
% Cálculo tensión vertical bajo el centro
stress_z_centro=p*(1-(1/(1+(a/Z)^2))^(3/2));
6
Curso “Programación en Matlab aplicado a geotecnia”
if poisson==0.5
p_ultima=5.14*cohesion*(1+s_co)+p;
else
s_carga=1+tan(phi_prima);
N_co=(N_carga-1)/tan(phi_prima);
p_ultima=p*N_carga*s_carga+cohesion*N_co*s_co;
end
La única diferencia que se debe comentar es el cálculo de la carga última, donde se incluye otra
estructura de selección para discernir el caso drenado del no drenado (según el módulo de
Poison)
Resumen
A modo de resumen se incluye a continuación todo el código que debe escribirse para la
solución del problema:
clear all
close all
clc
%% Datos
[datos_num,datos_texto] = xlsread('entrada_datos.xlsx');
%definición de variables
b=datos_num(2,1);
L=datos_num(3,1);
Z=datos_num(1,4);
E=datos_num(6,1);
poisson=datos_num(5,1);
p=datos_num(2,4);
a=datos_num(8,1);
cohesion=datos_num(3,4);
phi_prima=datos_num(4,4);
7
Curso “Programación en Matlab aplicado a geotecnia”
if strcmp(datos_texto(1,2),'rectangular')
%% Cálculo de tensión vertical esquina de la zapata
R1=(L^2+Z^2)^0.5;
R2=(b^2+Z^2)^0.5;
R3=(L^2+b^2+Z^2)^0.5;
stress_z_esquina=(p/(2*pi))*(atan(L*b/(Z*R3))+(L*b*Z/R3)*((
1/R1^2)+(1/R2^2)));
8
Curso “Programación en Matlab aplicado a geotecnia”
*Z/R3)*((1/R1^2)+(1/R2^2))))*2;
9
Curso “Programación en Matlab aplicado a geotecnia”
% Asiento bajo el centro
Asiento_centro=((2*p*a*(1-poisson)^2)/E)*(sqrt(1+(Z/a)^2)-
(Z/a))*(1+((Z/a)/(2*(1-poisson)*sqrt(1+(Z/a)^2))));
else
error('ERROR AL INTRODUCIR CIRCULAR O RECTANGULAR EN EL
EXCEL')
end
Conclusiones y apuntes para tener en cuenta
Recuerde que los archivos de los cuales se extraen los datos deben estar en el mismo directorio
que el archivo script.
10
Curso “Programación en Matlab aplicado a geotecnia”