El Tanque de Tormentas de Arroyofresno (Grupo 2)

De MateWiki
Saltar a: navegación, buscar
Trabajo realizado por estudiantes
Título El Tanque de Tormentas de Arroyofresno (Grupo 2)
Asignatura Teoría de Campos
Curso 2025-26
Autores Raúl Eiros Fonseca

Aiman Hakimi Nooristani

Carlos Aguado Esparrells

Hugo Caceres Lopez

Héctor Perucho Conde

Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura


El sistema de saneamiento de la ciudad de Madrid constituye una de las redes de ingeniería hidráulica más complejas y avanzadas de Europa. Dentro de este sistema, el Tanque de Tormentas de Arroyofresno desempeña un papel crucial en la protección ambiental del río Manzanares, actuando como un retentor de las primeras aguas pluviales (las más contaminadas) para evitar su vertido directo al cauce durante episodios de precipitaciones intensas.

El objetivo principal de este trabajo es aplicar los principios fundamentales de la teoría de campos para estudiar la presión y fuerzas estructurales sobre las columnas ,la concentración de contaminantes en el agua ,los contaminantes infiltrados en la columna mediante representaciones en matlab y la acumulación de residuos.

Modelo geométrico simplificado será un prisma rectangular con longitud de 290 m, anchura de 140 m, profundidad 𝐻 = 22 m. El tanque está soportado por columnas cilíndricas de hormigón armado de radio 𝜌𝑐 = 0.75 m de las cuales hay 171 columnas. Cada columna contiene armadura ubicada a distancia 𝜌𝑎= 0.65 m del eje.

Interior del estanque de tormentas Arroyofresno

1 Investigación sobre el funcionamiento del Tanque de Arroyofresno

El tanque con 400.000 m³ de capacidad es un regulador hidráulico y ambiental que se activa cuando el caudal de lluvia excede la capacidad de la red de alcantarillado. Después de eso el agua no está diseñada para permanecer allí mucho tiempo ,el vaciado comienza tan pronto como es posible tras la tormenta. La Comunidad de Madrid cuenta con una de las redes de tanques de tormentas más extensas del mundo, con más de 70 tanques en total con una capacidad de 1.4 millones de m³. Esta infraestructura masiva dota a Madrid de una capacidad de gestión de aguas pluviales excepcional, siendo un modelo de ingeniería clave para el control de inundaciones y la protección de la calidad del agua en el río Manzanares, cumpliendo con las exigencias medioambientales europeas. Su objetivo primario es doble:

-Prevenir inundaciones en la ciudad.

-Almacenar el agua más contaminada con cloruros y sulfatos para evitar su vertido directo al río Manzanares. Una vez que la tormenta pasa, el agua se bombea a las depuradoras para su tratamiento final.

1.1 Contaminantes Críticos

Los contaminantes arrastrados representan una amenaza química directa para la estructura de hormigón armado, atacándola por varios frentes:

-Cloruros: El contaminante más peligroso, ya que penetra el hormigón e inicia la corrosión electroquímica de la armadura de acero.

-Sulfatos y Acidez: Generan ataque por sulfatos (formaciones expansivas que agrietan el hormigón) y ataque ácido (disolución de la matriz de cemento).

1.2 Soluciones de Ingeniería para la durabilidad

Para lograr la vida útil necesaria en un ambiente tan agresivo, la protección del hormigón se basa en la calidad del material y las barreras externas:

-Diseño del Hormigón: Uso de hormigón de baja permeabilidad y un alto recubrimiento de la armadura ≥ 10 cm para ralentizar la difusión de contaminantes.

-Protección Superficial: Aplicación de revestimientos poliméricos (como resinas epoxi) en las superficies más expuestas, creando una barrera impermeable y resistente químicamente.

2 Representación de el campo de presión como un mapa de colores sobre la superficie de una columna

Para representar la presión ejercida por el agua en la columna vamos a partir de a formula facilitada:

[math] P(z) = P_0 - \rho_{\text{agua}}\, g\, z, \qquad z \in [-H, 0] [/math]

Donde:

-𝑃0 es la presión atmosférica estándar

-𝜚agua es la densidad del agua

-𝑔 es la aceleración de gravedad.

La representación se hará en el programa Matlab , a continuación el código:

Mapa de presiones
% Parámetros físicos
H = 22;              
rho = 1000;          
g = 9.81;            
P0 = 101325;         
R = 0.75; 
           
% Malla cilíndrica (más densa)
theta = linspace(0, 2*pi, 400);
z = linspace(0, -H, 400);    
[Theta, Z] = meshgrid(theta, z);
X = R * cos(Theta);
Y = R * sin(Theta);

% Presión
P = P0 - rho * g .* Z;

% FIGURA GRANDE
figure('Position',[100 100 900 900]); 
surf(X, Y, Z, P, 'EdgeColor', 'none');
colormap('jet');
colorbar;
title('Mapa de presión sobre la superficie de una columna (Pa)');
xlabel('x (m)');
ylabel('y (m)');
zlabel('z (m)');
axis equal tight; 
set(gca,'DataAspectRatio',[1 1 3]);   % El cilindro se ve más grande y proporcionado
view(45, 20);
lighting gouraud;
camlight headlight;


Como era de esperar el mapa de colores indica que la presión es mas grande (colores cálidos) a medida que hay mayor profundidad , al contrario que cuanto menos profundidad hay menos es la presión (colores fríos).

3 Cálculo de el gradiente de presión y representación como campo vectorial

3.1 Cálculo del gradiente de presión

Debemos calcular: F(x,y,z) = -P(z)·n

Para el campo escalar de P(z) usamos la ecuación hidrostática dada en el enunciado:

[math] P(z) = P_0 - \rho_{\text{agua}}\, g\, z, \qquad z \in [-H, 0] [/math]

Como z es negativa (profundidad), el término -ρagua·g·z se vuelve positivo, sumándose a la presión atmosférica P₀. El Vector Normal Unitario “n” para un cilindro vertical centrado en (0,0), el vector normal que "sale" de la superficie es horizontal y radial. En un punto (x,y) de la superficie lateral:

[math]\mathbf{n} = \frac{x}{\rho_c}\,\mathbf{i}+ \frac{y}{\rho_c}\,\mathbf{j} + 0\,\mathbf{k}[/math]


Donde ρc = 0.75 m es el radio de la columna. El Campo Vectorial Resultante F , sustituimos:

[math] F = P_0 - \rho_{\text{agua}}\, g\, z\cdot(\frac{x}{\rho_c}\,\mathbf{i}+ \frac{y}{\rho_c}\,\mathbf{j}) [/math]

El signo negativo es fundamental, invierte el sentido del vector n. En lugar de salir el vector fuerza entra en la columna.

3.2 Representación como campo vectorial sobre la superficie cilíndrica de una columna

Código para la representación en MATLAB:

derecha
%Definición de Parámetros Físicos 
P0 = 101325;        
rho_agua = 1000;    
g = 9.81;           
H = 22;             
Rc = 0.75;          
% Generación de la Malla
theta = linspace(0, 2*pi, 25);
z_vals = linspace(-H, 0, 20);
[THETA, Z] = meshgrid(theta, z_vals);
X = Rc * cos(THETA);
Y = Rc * sin(THETA);
%Cálculo de Vectores
P_magnitud = P0 - rho_agua * g * Z;
% Vector Normal Unitario
Nx = cos(THETA); 
Ny = sin(THETA); 
Nz = zeros(size(Z)); 
% Campo de Fuerza F = -P * n
Fx = -P_magnitud .* Nx;
Fy = -P_magnitud .* Ny;
Fz = -P_magnitud .* Nz;
%Visualización
figure('Name', 'Tarea 3: Fuerza de Presión', 'Color', 'w');
s = surf(X, Y, Z, 'FaceColor', [0.8 0.8 0.8], 'EdgeColor', 'none');
alpha(s, 0.5); 
hold on;
quiver3(X, Y, Z, Fx, Fy, Fz, 0.5, 'b', 'LineWidth', 1.5);
axis equal;
grid on;
view(45, 20); 
title('Tarea 3: Fuerza de Presión Normal');
xlabel('x (m)'); ylabel('y (m)'); zlabel('z (m)');
zlim([-H 0]); 
text(0, 0, 1, 'Compresión Radial', 'HorizontalAlignment', 'center', 'FontWeight', 'bold');
hold off;


Vista desde la planta


Al aplicar la definición de fuerza de presión F = -P(z)·n, obtenemos un campo vectorial radial.

Dirección: Los vectores son perpendiculares a la superficie de la columna y apuntan hacia el eje central. Esto representa físicamente la compresión que ejerce el agua sobre el hormigón.

Magnitud: Observamos que la longitud de las flechas aumenta con la profundidad. En la superficie (z = 0), la fuerza es proporcional a la presión atmosférica. En el fondo (z = -22), la fuerza es máxima debido a la columna de agua .


4 Fuerza total que el agua ejerce sobre una columna

Para calcular la fuerza total que el agua primero hay que establecer los datos para poder resolver la integral:

Po: la presión estándar es igual a 1 atm que a su vez es igual a 101325 Pa

𝜚agua=1000kg/m³

g : gravedad vamos a suponer que es igual a 9,81m²/s

𝜌𝑐 = 0.75 m(radio de la columna)

𝐻=22m

La presión escalar viene dada por :[math] P(z) = P_0 - \rho_{\text{agua}}\, g\, z[/math]

Dado que fuerza es igual a presión por la superficie nos quedaría:

[math]F_t = \int_{S} P(z)\, dS(dS=2\pi\rho_cdz)= \int_{-22}^{0} \left( P_0 - \rho_{\text{agua}} g z \right)\,(2\pi\,r_c\,dz)= \int_{-22}^{0} \left(101325 - 1000 \cdot 9.81\,z\right)\,(2\pi \cdot 0.75)\,dz=[/math]

[math]= \left[101325 \cdot 2\pi \cdot 0.75 \cdot z- \frac{1000 \cdot 9.81 \cdot 2\pi \cdot 0.75}{2} \, z^2\right]_{z=-22}^{z=0}=21691927,58 N[/math]

Como nos piden el resultado en kN y en tnf , hay que pasar el resultado a estas unidades:

[math]F_t(kN)=21691,93kN[/math]
[math]F_t(tnf)=21691927,58N \cdot \frac{1tnf}{9810N}=2211,2 tnf[/math]

5 Representa el campo de concentración infiltrada dentro de una columna como mapa de colores sobre su sección vertical y trasversal de la columna

[math]C_{\text{agua}}(z) = C_0 \left( 1 + \alpha \frac{|z|}{H} \right)[/math]

% Parámetros del Modelo
H = 22;           
rho_c = 0.75;     
rho_a = 0.65;     
lambda = 10;      
C0 = 0.3;         
alpha = 3;        
%  Dominio cilíndro
N_z = 200;
N_rho = 100;
rho_line = linspace(0, rho_c, N_rho); 
z_line = linspace(-H, 0, N_z);       
[RHO, Z] = meshgrid(rho_line, z_line);
% Cálculo  C_col(rho, z)
C_agua_z = C0 * (1 + alpha * abs(Z) / H);
At = exp(-lambda * (rho_c - RHO));

C_col_RHO_Z = C_agua_z .* At;

figure(1);
hold on;
h = surf(RHO, Z, C_col_RHO_Z, 'EdgeColor', 'none');
view(2);
axis tight;
colormap jet; 
colorbar('Location', 'EastOutside', 'FontSize', 10);
title('Campo de Concentración C_{col}(\rho, z) en la Sección Vertical', 'FontSize', 12);
xlabel('Radio \rho (m)', 'FontSize', 11);
ylabel('Profundidad z (m)', 'FontSize', 11);
set(gca, 'YDir', 'normal'); 
plot3([rho_a, rho_a], [-H, 0], [max(max(C_col_RHO_Z))*1.1, max(max(C_col_RHO_Z))*1.1], 'w--', 'LineWidth', 2);
text(rho_a+0.05, -H/2, max(max(C_col_RHO_Z))*1.1, 'Armadura (\rho_a = 0.65 m)', 'Color', 'w', 'FontSize', 10);
caxis([0, max(C_col_RHO_Z(:))]);
hold off;

z_seccion = -H; 
L_seccion = rho_c;
N_xy = 100;
x_line = linspace(-L_seccion, L_seccion, N_xy);
y_line = linspace(-L_seccion, L_seccion, N_xy);
[X, Y] = meshgrid(x_line, y_line);
RHO_xy = sqrt(X.^2 + Y.^2);
C_agua_seccion = C0 * (1 + alpha * abs(z_seccion) / H);
At_xy = exp(-lambda * (rho_c - RHO_xy));

C_col_XY = C_agua_seccion * At_xy;
C_col_XY(RHO_xy > rho_c) = NaN; 
figure(2);
h = pcolor(X, Y, C_col_XY);
set(h, 'EdgeColor', 'none');
axis equal tight;
hold on;
angulo = linspace(0, 2*pi, 100);
plot(rho_a * cos(angulo), rho_a * sin(angulo), 'w--', 'LineWidth', 2); 
colormap jet;
c = colorbar('Location', 'EastOutside', 'FontSize', 10);
c.Label.String = 'Concentración C_{col} (kg/m^3)';
title(['Concentración C_{col} en Sección Transversal (z = ' num2str(z_seccion) ' m)'], 'FontSize', 12);
xlabel('Eje X (m)', 'FontSize', 11);
ylabel('Eje Y (m)', 'FontSize', 11);
hold off;