Diferencia entre revisiones de «Estabilidad de una presa de gravedad»

De MateWiki
Saltar a: navegación, buscar

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/mat/public_html/w/includes/diff/DairikiDiff.php on line 434
Línea 6: Línea 6:
 
% pendiente aguas abajo
 
% pendiente aguas abajo
 
% Parámetros
 
% Parámetros
NMN=170; % Nivel máximo normal (m)
+
NMN       =170; % Nivel máximo normal (m)
NAP=174; % Nivel de avenida m
+
NAP       =174; % Nivel de avenida m
 
Ter_arriba=108; % unidad m
 
Ter_arriba=108; % unidad m
Ter_abajo=118; % unidad m
+
Ter_abajo =118; % unidad m
mu_h=2.4; % densidad del hormigón en t/m3
+
mu_h     =2.4; % densidad del hormigón en t/m3
mu_a=1.0; % densidad del agua en t/m3
+
mu_a     =1.0; % densidad del agua en t/m3
Phi=pi/4; % ángulo de rozamiento
+
Phi       =pi/4; % ángulo de rozamiento
F_Phi=1.2; % coeficiente seguridad respecto al rozamiento
+
F_Phi     =1.2; % coeficiente seguridad respecto al rozamiento
S_Amin=0.5; % compresión mínima en el pie de aguas arriba (kp/cm2)
+
S_Amin   =0.5; % compresión mínima en el pie de aguas arriba (kp/cm2)
S_Bmax=8.4; % compresión máxima en el pie de aguas abajo (kp/cm2)     
+
S_Bmax   =8.4; % compresión máxima en el pie de aguas abajo (kp/cm2)     
  
 
% Variables de optimización: n = ángulo aguas abajo
 
% Variables de optimización: n = ángulo aguas abajo
  
 
% variables y funciones útiles para el cálculo
 
% variables y funciones útiles para el cálculo
h_NMN=NMN-Ter_arriba;       % altura normal máxima
+
h_NMN     =NMN-Ter_arriba;         % altura normal máxima
H_a=NAP-Ter_arriba;        % altura
+
H_a       =NAP-Ter_arriba;        % altura
h_CE=Ter_abajo-Ter_arriba; % altura del terreno aguas abajo
+
h_CE     =Ter_abajo-Ter_arriba;   % altura del terreno aguas abajo
base= @(n) H_a*n;           % base del triángulo
+
base     = @(n) H_a*n;           % base del triángulo
  
 
% Función coste: área del triángulo
 
% Función coste: área del triángulo
f_coste=@(n) 0.5*base(n)*H_a;
+
f_coste = @(n) 0.5*base(n)*H_a;
  
 
% Calculamos ahora las restricciones:
 
% Calculamos ahora las restricciones:
 
% %% 1. Estabilidad frente al deslizamiento
 
% %% 1. Estabilidad frente al deslizamiento
 
% Calculamos primero la función peso
 
% Calculamos primero la función peso
P = @(n) 0.5*base(n)*H_a*mu_h;
+
P = @(n) 0.5*base(n)*H_a*mu_h;
  
 
% Calculamos el empuje (no depende de n)
 
% Calculamos el empuje (no depende de n)
Línea 41: Línea 41:
 
% Estabilidad frente al deslizamiento: E-T<0
 
% Estabilidad frente al deslizamiento: E-T<0
 
% T es la fuerza necesaria para vencer el rozamiento
 
% T es la fuerza necesaria para vencer el rozamiento
% T=(P-S)*tan(Phi)/F_Phi (despreciando la cohesión y añadiendo el coef. seg. al rozamiento)
+
% T = (P-S)*tan(Phi)/F_Phi (despreciando la cohesión y añadiendo el coef. seg. al rozamiento)
 
g_rest1 = @(n) E-(P(n)-S(n))*tan(Phi)/F_Phi;  
 
g_rest1 = @(n) E-(P(n)-S(n))*tan(Phi)/F_Phi;  
 
% la estabilidad requiere f_rest1 < 0
 
% la estabilidad requiere f_rest1 < 0
Línea 66: Línea 66:
 
% + momento de la normal N_1
 
% + momento de la normal N_1
 
g_rest4=@(n) -P(n)*base(n)*2/3 ...
 
g_rest4=@(n) -P(n)*base(n)*2/3 ...
     +E*h_NMN/3 ...
+
     + E*h_NMN/3 ...
     +h_CE*base(n)*(base(n)/2)*mu_a ...
+
     + h_CE*base(n)*(base(n)/2)*mu_a ...
     +0.5*base(n)*(h_NMN-h_CE)*2/3*base(n)...
+
     + 0.5*base(n)*(h_NMN-h_CE)*2/3*base(n)...
     +S_Amin*base(n)*(base(n)*0.5) ...
+
     + S_Amin*base(n)*(base(n)*0.5) ...
     +0.5*base(n)*(S_B(n)-S_Amin)*(base(n)/3);
+
     + 0.5*base(n)*(S_B(n)-S_Amin)*(base(n)/3);
 
% la estabilidad requiere f_rest4 < 0
 
% la estabilidad requiere f_rest4 < 0
  
Línea 76: Línea 76:
 
%% Optimización por fuerza bruta
 
%% Optimización por fuerza bruta
 
% Intervalo de parámetros:
 
% Intervalo de parámetros:
h=0.01; % distancia entre dos valores del parámetro
+
h =0.01; % distancia entre dos valores del parámetro
L=0.1; % extremo izquierdo
+
L =0.1; % extremo izquierdo
M=20; % extremo derecho
+
M =20;   % extremo derecho
n=L:h:M; % vector con los parámetros
+
n =L:h:M;% vector con los parámetros
 
% Inicialización
 
% Inicialización
 
Optimo=10000; % Inicializamos con un valor muy alto  
 
Optimo=10000; % Inicializamos con un valor muy alto  

Revisión del 13:51 7 feb 2017

En este artículo vamos a describir cómo optimizar con MATLAB el ángulo aguas abajo de una presa de gravedad triangular.

% Cálculo de estabilidad de presas de gravedad
% Supondremos que el perfil es un triángulo del cual sólo podemos elegir la
% pendiente aguas abajo
% Parámetros
NMN       =170; % Nivel máximo normal (m)
NAP       =174; % Nivel de avenida m
Ter_arriba=108; % unidad m
Ter_abajo =118; % unidad m
mu_h      =2.4; % densidad del hormigón en t/m3
mu_a      =1.0; % densidad del agua en t/m3
Phi       =pi/4; % ángulo de rozamiento
F_Phi     =1.2; % coeficiente seguridad respecto al rozamiento
S_Amin    =0.5; % compresión mínima en el pie de aguas arriba (kp/cm2)
S_Bmax    =8.4; % compresión máxima en el pie de aguas abajo (kp/cm2)     

% Variables de optimización: n = ángulo aguas abajo

% variables y funciones útiles para el cálculo
h_NMN     =NMN-Ter_arriba;         % altura normal máxima
H_a       =NAP-Ter_arriba;         % altura
h_CE      =Ter_abajo-Ter_arriba;   % altura del terreno aguas abajo
base      = @(n) H_a*n;            % base del triángulo

% Función coste: área del triángulo
f_coste = @(n) 0.5*base(n)*H_a;

% Calculamos ahora las restricciones:
% %% 1. Estabilidad frente al deslizamiento
% Calculamos primero la función peso
P  = @(n) 0.5*base(n)*H_a*mu_h;

% Calculamos el empuje (no depende de n)
E = 0.5*mu_a*h_NMN^2;

% Calculamos la subpresión
S= @(n) 0.5*(h_NMN+h_CE)*base(n)*mu_a;

% Estabilidad frente al deslizamiento: E-T<0
% T es la fuerza necesaria para vencer el rozamiento
% T = (P-S)*tan(Phi)/F_Phi (despreciando la cohesión y añadiendo el coef. seg. al rozamiento)
g_rest1 = @(n) E-(P(n)-S(n))*tan(Phi)/F_Phi; 
% la estabilidad requiere f_rest1 < 0

% %% 2. Equilibrio de fuerzas normales P-S>0
g_rest2 = @(n) S(n)-P(n);
% la estabilidad requiere f_rest2 < 0

% %% 3. Tensión en el pie de aguas abajo menor que el máximo permitido
% N=P-S=1/2*H_a*n*(S_A+S_B)
% Suponiendo la compresión mínima S_A dada,
% S_B=(P-S)/(H_a*n/2)-S_A que en este caso no depende de n pero puede
% depender en general
S_B = @(n) (P(n)-S(n))/(0.5*H_a*n)-S_Amin*10;
g_rest3=@(n) S_B(n)-S_Bmax*10;
% la estabilidad requiere f_rest3 < 0

% %% 4. Equilibrio de momentos
% Momento= Momento del peso 
% + momento empuje agua 
% + momento subpresion S_2
% + momento subpresion S_1
% + momento de la normal N_2
% + momento de la normal N_1
g_rest4=@(n) -P(n)*base(n)*2/3 ...
    + E*h_NMN/3 ...
    + h_CE*base(n)*(base(n)/2)*mu_a ...
    + 0.5*base(n)*(h_NMN-h_CE)*2/3*base(n)...
    + S_Amin*base(n)*(base(n)*0.5) ...
    + 0.5*base(n)*(S_B(n)-S_Amin)*(base(n)/3);
% la estabilidad requiere f_rest4 < 0

% Pasamos ahora a optimizar la pendiente n de manera que se cumplan las restricciones
%% Optimización por fuerza bruta
% Intervalo de parámetros:
h  =0.01; % distancia entre dos valores del parámetro
L  =0.1;  % extremo izquierdo
M  =20;   % extremo derecho
n  =L:h:M;% vector con los parámetros
% Inicialización
Optimo=10000; % Inicializamos con un valor muy alto 
indice=0;     % inicializamos el indice
% Probamos todos los valores n(i)
for i=1:length(n)
    % creamos una variable lógica que sea cierta sólo si se verifican todas las restricciones
    restriccion=(g_rest1(n(i))<0)&(g_rest2(n(i))<0)&(g_rest3(n(i))<0)&(g_rest4(n(i))<0);
    if restriccion  % solo en este caso n(i) es un parámetro admisible
        coste = f_coste(n(i)); % Calculo el coste
        if coste<Optimo % en este caso mejoramos!
            Optimo = coste;  % actualizo el coste con el nuevo parámetro
            indice=i;        % actualizo el índice en el que está el óptimo
        end
    end        
end
sprintf('El óptimo se alcanza en n = %f',n(indice))