El tanque de tormentas de Arroyofresno (Grupo 43)
| Trabajo realizado por estudiantes | |
|---|---|
| Título | El tanque de tormentas de Arroyofresno. Grupo 43 |
| Asignatura | Teoría de Campos |
| Curso | 2025-26 |
| Autores |
|
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
Contenido
- 1 Funcionamiento del Tanque de Arroyofresno:
- 2 Presión y fuerzas estructurales sobre columnas
- 3 Infiltración y corrosión en columnas
- 3.1 Representación del campo de concentración infiltrada:
- 3.2 Representación del campo de gradiente de concentración infiltrada:
- 3.3 Representación del campo de la función de concentración de la armadura en función de la profundidad:
- 3.4 Representación de las superficies de isoconcentración dentro de una columna:
- 3.5 Estimación de la vida útil de la columna en la zona crítica:
- 3.6 Cálculo de la masa total de contaminantes infiltrado:
- 3.7 Cálculo del campo de concentración de contaminantes en el agua:
- 3.8 Apartado 10: Cálculo Numérico de Masa de Contaminantes
- 4 Decantación y distribución de contaminantes
- 4.1 Grafico de la función Cagua(z)
- 4.2 Mapa de Colores en Pared del Tanque
- 4.3 Representación de contaminantes del agua
- 4.3.1 Cálculo del Gradiente de Concentración
- 4.3.2 Función de concentración
- 4.3.3 Parámetros del problema
- 4.3.4 Simplificación para el dominio considerado
- 4.3.5 Cálculo del gradiente
- 4.3.6 Sustitución numérica
- 4.3.7 Interpretación física
- 4.3.8 Código MATLAB
- 4.3.9 Descripción de las superficies de isoconcentracion en el agua:
- 4.3.10 Cálculo de la masa total de contaminantes en el agua del tanqu:
- 4.3.11 Preguntas pasadas las 24 horas de decantación:
1 Funcionamiento del Tanque de Arroyofresno:
2 Presión y fuerzas estructurales sobre columnas
2.1 Cálculo y representación del campo de presiones P(z):
2.2 Cálculo y representación del gradiente de presión y representación como campo vectorial:
2.3 Cálculo de la fuerza total que el agua ejerce sobre una columna:
3 Infiltración y corrosión en columnas
3.1 Representación del campo de concentración infiltrada:
Para una sección vertical que pasa por el eje de la columna, el campo de concentración infiltrada \(C_{\mathrm{col}}(x,z)\) viene dado por \(C_{\mathrm{col}}(r,z) = C_0 \bigl(1+\alpha |z|/H\bigr)\,\exp[-\lambda(\rho_c-r)]\).
H=22;rho_c=0.75;rho_a=0.65;C0=0.3;alpha=3;lambda=10;
n=120;
x=linspace(-rho_c, rho_c, n);z=linspace(-H,0,n);
[X,Z] = meshgrid(x, z);R = abs(X);
% C_col(r,z) = C0*(1 + alpha*|z|/H) * exp(-lambda*(rho_c - r))
C_vert = C0 .* (1 + alpha*abs(Z)/H) .* exp(-lambda*(rho_c - R));
C_vert(R > rho_c) = NaN;
figure
surf(X, Z, C_vert, 'EdgeColor','none');
view(2);
colorbar
xlabel('x [m]');
ylabel('z [m]');
title('C_{col}(x,z) - Seccion');
axis tight
hold on
zTop = max(C_vert(:)) * 1.01;
x1 = rho_a * ones(size(z));x2 = -rho_a * ones(size(z));
plot3(x1, z, zTop*ones(size(z)), 'k--', 'LineWidth', 1.5);
plot3(x2, z, zTop*ones(size(z)), 'k--', 'LineWidth', 1.5);
hold off
|
Representación del campo de concentración infiltrada (sección transversal)
H=22;rho_c=0.75;rho_a=0.65;C0=0.3;alpha=3;lambda=10;
z0 = -H/2;n= 150;
x= linspace(-rho_c, rho_c, n);y= linspace(-rho_c, rho_c, n);
[X,Y] = meshgrid(x, y);R= sqrt(X.^2 + Y.^2);
% C_col(r,z0) = C0*(1 + alpha*|z0|/H) * exp(-lambda*(rho_c - r))
C_cross = C0 .* (1 + alpha*abs(z0)/H) .* exp(-lambda*(rho_c - R));
C_cross(R > rho_c) = NaN;
figure
surf(X, Y, C_cross, 'EdgeColor','none');
view(2);
colorbar
xlabel('x [m]');
ylabel('y [m]');
title('C_{col}(x,y) - Seccion transversal');
axis equal tight
hold on
zTop = max(C_cross(:)) * 1.01;
theta = linspace(0,2*pi,200);
xa = rho_a*cos(theta);
ya = rho_a*sin(theta);
plot3(xa, ya, zTop*ones(size(theta)), 'k--', 'LineWidth', 1.5);
hold off
|
3.2 Representación del campo de gradiente de concentración infiltrada:
H=22;rho_c=0.75;rho_a=0.65;C0=0.3;alpha=3;lambda=10;
n =25;
x =linspace(-rho_c, rho_c, n);
z = linspace(-H,0,n);
[X,Z] = meshgrid(x, z);
R= abs(X);
C_vert = C0 .* (1 + alpha*abs(Z)/H) .* exp(-lambda*(rho_c - R));
C_vert(R > rho_c) = NaN;
dx = x(2) - x(1);
dz = z(2) - z(1);
[dCdz, dCdx] = gradient(C_vert, dz, dx);
dCdx(R > rho_c) = NaN;
dCdz(R > rho_c) = NaN;
M = sqrt(dCdx.^2 + dCdz.^2);
Mval = M(~isnan(M));
Mmax = max(Mval);
Mmin = min(Mval);
dx_plot = dx;dz_plot = abs(dz);
dmin = min(dx_plot, dz_plot);
Lmax = 0.8 * dmin;Lmin = 0.1 * dmin;
L = (M - Mmin) / (Mmax - Mmin);
L = Lmin + (Lmax - Lmin).*L;
Ux_dir = dCdx ./ M;Uz_dir = dCdz ./ M;
Ux = Ux_dir .* L;Uz = Uz_dir .* L;
Ux(isnan(M)) = NaN;Uz(isnan(M)) = NaN;
step = 2;
X2 = X(1:step:end, 1:step:end);Z2 = Z(1:step:end, 1:step:end);
Ux2 = Ux(1:step:end, 1:step:end);Uz2 = Uz(1:step:end, 1:step:end);
figure;
hold on;
quiver(X2, Z2, Ux2, Uz2, 0, 'k', 'LineWidth', 1.2, 'MaxHeadSize', 0.9);
plot([ rho_c rho_c], [-H 0], 'k','LineWidth',1.5);
plot([-rho_c -rho_c], [-H 0], 'k','LineWidth',1.5);
plot([ rho_a rho_a], [-H 0], 'k--','LineWidth',1.3);
plot([-rho_a -rho_a], [-H 0], 'k--','LineWidth',1.3);
xlabel('x [m]');
ylabel('z [m]');
title('\nabla C_{col}(x,z) - Seccion vertical');
xlim([-rho_c rho_c]);
ylim([-H 0]);
grid on;
hold off; |
3.3 Representación del campo de la función de concentración de la armadura en función de la profundidad:
H= 22;rho_c = 0.75;rho_a = 0.65;
C0=0.3;alpha =3;lambda = 10;Ccrit = 0.05;
n = 100;
z = linspace(-H, 0, n);
factor_r = (rho_a / rho_c)^alpha;
Cacero = C0 * factor_r .* exp(lambda * z / H);
figure; hold on;
plot(z, Cacero, 'LineWidth', 1.5);
plot(z, Ccrit * ones(size(z)), 'k--', 'LineWidth', 1.2);
xlabel('Profundidad z (m)');
ylabel('C_{acero}(z) [kg/m^3]');
title('Concentración de contaminantes en la armadura');
legend('C_{acero}(z)', 'C_{crit} = 0.05 kg/m^3', 'Location', 'best');
grid on;
text(-2, Ccrit + 0.01, 'Riesgo de corrosión: C_{acero} > C_{crit}');
|
3.4 Representación de las superficies de isoconcentración dentro de una columna:
H=22;rho_c=0.75;rho_a=0.65;C0=0.3;alpha=3;lambda =10;
Ciso = [0.1 0.2 0.3 0.4]; nx = 40; ny = 40; nz = 40;
x = linspace(-rho_c, rho_c, nx);y = linspace(-rho_c, rho_c, ny);
z = linspace(-H, 0, nz);
[X,Y,Z] = meshgrid(x, y, z);R = sqrt(X.^2 + Y.^2);
Ccol = C0 .* (R./rho_c).^alpha .* exp(lambda .* Z ./ H);Ccol(R > rho_c) = NaN;
figure; hold on;
colores = lines(length(Ciso));
for k = 1:length(Ciso)
cte = Ciso(k);
p = patch(isosurface(X, Y, Z, Ccol, cte));
set(p,'FaceColor', colores(k,:),'EdgeColor','none','FaceAlpha',0.6);
end
n_circ = 80;[Xa,Ya,Za] = cylinder(rho_a, n_circ);Za = -H + Za * H;
surf(Xa, Ya, Za,'FaceColor', 'none','EdgeColor', 'k','LineWidth', 1.2);
axis equal;
xlabel('x (m)');ylabel('y (m)');zlabel('z (m)');
title('Superficies de isoconcentración C_{col} y cilindro de la armadura');
view(40, 25);
|
3.5 Estimación de la vida útil de la columna en la zona crítica:
3.6 Cálculo de la masa total de contaminantes infiltrado:
3.7 Cálculo del campo de concentración de contaminantes en el agua:
3.8 Apartado 10: Cálculo Numérico de Masa de Contaminantes
| Código MATLAB y Resultados | Visualización |
|---|---|
3.8.1 Código MATLAB%% Apartado (10) - Cálculo de masa de contaminantes infiltrados
% Teoría de Campos - Tanque de Tormentas Arroyofresno
clear all; close all; clc;
%% Parámetros del problema
C0 = 0.3; % kg/m³ - Concentración en superficie
alpha = 3; % Coeficiente de aumento con profundidad
H = 22; % m - Altura del tanque
lambda = 10; % m⁻¹ - Coeficiente de atenuación
rho_e = 0.75; % m - Radio exterior de la columna
rho_a = 0.65; % m - Radio de la armadura
%% 1. MASA DE CONTAMINANTES INFILTRADOS EN UNA COLUMNA
% Definir la función de concentración en la columna
C_col = @(rho, z) C_agua(z, C0, alpha, H) .* exp(-lambda .* (rho_e - rho));
% Integración numérica en coordenadas cilíndricas
N_rho = 100; % Puntos en dirección radial
N_theta = 36; % Puntos en dirección angular
N_z = 100; % Puntos en dirección vertical
% Crear mallas
rho_vec = linspace(0, rho_e, N_rho);
theta_vec = linspace(0, 2*pi, N_theta);
z_vec = linspace(-H, 0, N_z);
[rho_grid, theta_grid, z_grid] = meshgrid(rho_vec, theta_vec, z_vec);
% Evaluar la función en toda la malla
C_values = C_col(rho_grid, z_grid);
% Calcular elemento de volumen: dV = ρ dρ dθ dz
dV = rho_grid .* (rho_vec(2)-rho_vec(1)) .* (theta_vec(2)-theta_vec(1)) .* (z_vec(2)-z_vec(1));
% Calcular masa total por integración numérica
M_col = sum(C_values(:) .* dV(:));
%% 2. MASA DE CONTAMINANTES EN AGUA EQUIVALENTE
% Volumen equivalente (desplazado por la columna)
V_equiv = pi * rho_e^2 * H;
% Concentración promedio en el agua
z_samples = linspace(-H, 0, 1000);
C_agua_samples = C_agua(z_samples, C0, alpha, H);
C_promedio = trapz(z_samples, C_agua_samples) / H;
% Masa en agua equivalente
M_agua_equiv = V_equiv * C_promedio;
%% 3. COMPARACIÓN
relacion = M_col / M_agua_equiv * 100;
%% FUNCIÓN AUXILIAR - Concentración en el agua
function C = C_agua(z, C0, alpha, H)
C = C0 .* (1 + alpha .* abs(z) ./ H);
end3.8.2 Resultados NuméricosMasa de contaminantes infiltrados:
Masa en agua equivalente:
Comparación:
|
4 Decantación y distribución de contaminantes
4.1 Grafico de la función Cagua(z)
4.1.1 Gráfico de Concentración vs Profundidad
| Código MATLAB | Gráfica Resultante Función Cagua(z) |
|---|---|
%% (11a) Gráfico de C_agua(z) vs z
% Parámetros del modelo
C0 = 0.3; % Concentración en superficie (kg/m^3)
alpha = 3; % Parámetro de aumento
H = 22; % Profundidad total del tanque (m)
% Vector de profundidad y cálculo de concentración
z = linspace(-H, 0, 100);
C_agua = C0 * (1 + alpha * abs(z) / H);
% Crear gráfico
figure;
plot(C_agua, z, 'b', 'LineWidth', 2);
xlabel('Concentración C_{agua}(z) (kg/m^3)');
ylabel('Profundidad z (m)');
title('(11a) Concentración de contaminantes en el agua vs Profundidad');
grid on;
set(gca, 'YDir', 'reverse');
% Añadir puntos de referencia
hold on;
plot(C0, 0, 'ro', 'MarkerSize', 8, 'MarkerFaceColor', 'red');
plot(C0*(1+alpha), -H, 'ro', 'MarkerSize', 8, 'MarkerFaceColor', 'red');
legend('C_{agua}(z)', 'Superficie (z=0)', 'Fondo (z=-H)', 'Location', 'best'); |
4.2 Mapa de Colores en Pared del Tanque
4.2.1 Mapa de Colores en Pared del Tanque
| Código MATLAB (11b) | Gráfica Resultante (11b) |
|---|---|
%% (11b) Mapa de colores sobre una pared del tanque
% Parámetros del modelo
C0 = 0.3; % Concentración en superficie (kg/m^3)
alpha = 3; % Parámetro de aumento
H = 22; % Profundidad total del tanque (m)
W = 140; % Anchura del tanque (m)
% Definir coordenadas para una pared (x fijo, variando y y z)
y_pared = linspace(-W/2, W/2, 100); % Coordenadas y de la pared
z_pared = linspace(-H, 0, 100); % Coordenadas z de la pared
[Y, Z] = meshgrid(y_pared, z_pared); % Malla para la pared
% Calcular concentración en la pared (solo depende de z)
C_pared = C0 * (1 + alpha * abs(Z) / H);
% Crear mapa de colores
figure;
imagesc(y_pared, z_pared, C_pared);
colorbar;
xlabel('Coordenada y (m)');
ylabel('Profundidad z (m)');
title('(11b) Mapa de concentración de contaminantes en una pared del tanque');
axis xy; % Asegurar que el eje z aumente hacia arriba (0 en top, -H en bottom)
% Opcional: añadir líneas de contorno para mayor claridad
hold on;
[C,h] = contour(Y, Z, C_pared, 5, 'k-');
clabel(C, h); |
4.3 Representación de contaminantes del agua
4.3.1 Cálculo del Gradiente de Concentración
| Desarrollo Analítico | Representación Gráfica |
|---|---|
4.3.2 Función de concentraciónLa concentración de contaminantes en el agua viene dada por la expresión: [math]C_{\text{agua}}(z) = C_0 \left(1 + \alpha \frac{|z|}{H}\right)[/math] 4.3.3 Parámetros del problema
4.3.4 Simplificación para el dominio consideradoPara [math]z \leq 0[/math], tenemos que [math]|z| = -z[/math], por lo que: [math]C_{\text{agua}}(z) = C_0 \left(1 + \alpha \frac{-z}{H}\right) = C_0 \left(1 - \alpha \frac{z}{H}\right)[/math] 4.3.5 Cálculo del gradienteEl gradiente de la concentración se define como: [math]\nabla C_{\text{agua}} = \left( \frac{\partial C_{\text{agua}}}{\partial x}, \frac{\partial C_{\text{agua}}}{\partial y}, \frac{\partial C_{\text{agua}}}{\partial z} \right)[/math] Calculamos las derivadas parciales:
Por lo tanto, el gradiente resulta: [math]\nabla C_{\text{agua}} = \left( 0, 0, -\frac{C_0 \alpha}{H} \right)[/math] 4.3.6 Sustitución numérica[math]\nabla C_{\text{agua}} = \left( 0, 0, -\frac{0.3 \times 3}{22} \right) = \left( 0, 0, -0.04091 \right) \text{kg/m}^4[/math] 4.3.7 Interpretación físicaEl gradiente es un vector constante que apunta verticalmente hacia abajo con magnitud [math]0.04091 \text{kg/m}^4[/math]. Esto indica que la concentración de contaminantes aumenta uniformemente con la profundidad, lo cual es consistente con el proceso de sedimentación donde las partículas se depositan en el fondo del tanque. 4.3.8 Código MATLAB%% Apartado (12) - Campo vectorial del gradiente
C0 = 0.3; alpha = 3; H = 22; W = 140;
dC_dz = -C0 * alpha / H;
y = linspace(-W/2, W/2, 15);
z = linspace(-H, 0, 15);
[Y, Z] = meshgrid(y, z);
U = zeros(size(Y));
V = dC_dz * ones(size(Z));
figure;
quiver(Y, Z, U, V, 'b', 'LineWidth', 1.2);
xlabel('Coordenada y (m)'); ylabel('Profundidad z (m)');
title('(12) Campo vectorial del gradiente \nabla C_{agua}');
grid on; axis equal;
magnitud = abs(dC_dz);
text(0, -H/2, sprintf('Magnitud: %.4f kg/m^4', magnitud), ...
'HorizontalAlignment', 'center', 'BackgroundColor', 'white');
xlim([-W/2, W/2]); ylim([-H, 0]); |
