El tanque de tormentas de Arroyofresno (Grupo 43)

De MateWiki
Revisión del 13:19 27 nov 2025 de Edgar (Discusión | contribuciones) (Mapa de Colores en Pared del Tanque)

Saltar a: navegación, buscar
Trabajo realizado por estudiantes
Título El tanque de tormentas de Arroyofresno. Grupo 43
Asignatura Teoría de Campos
Curso 2025-26
Autores
  • Jorge Martin Urresti
  • Diego Morcillo Parga
  • Lucia Dominguez Alvarez
  • Claudia Manrique Arias
  • Edgar Carhuaricra Solano
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

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 en una sección vertical.

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

Representación del campo de concentración infiltrada en una sección transversal.

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;

Gradi.png

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}');

Representación del campo de concentración infiltrada en una sección vertical.

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);

Representación del campo de concentración infiltrada en una sección vertical.

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);
end

3.8.2 Resultados Numéricos

Masa de contaminantes infiltrados:

  • [math]M_{\text{col}} = 4.6406 \text{kg}[/math]

Masa en agua equivalente:

  • Volumen equivalente: [math]V_{\text{equiv}} = 38.8800 \text{m}^3[/math]
  • Concentración promedio: [math]C_{\text{prom}} = 0.7500 \text{kg/m}^3[/math]
  • [math]M_{\text{agua_equiv}} = 29.1600 \text{kg}[/math]

Comparación:

  • [math]\frac{M_{\text{col}}}{M_{\text{agua_equiv}}} = \frac{4.6406}{29.1600} = 0.1591[/math]
  • Relación: [math]15.91\%[/math]

Figura 10a: Distribución de contaminantes - Código numérico

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');

Figura 11a: Gráfico de concentración vs profundidad

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);

Figura 11b: Mapa de concentración en pared del tanque

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ón

La 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

  • [math]C_0 = 0.3 \text{kg/m}^3[/math] (concentración en superficie)
  • [math]\alpha = 3[/math] (parámetro de aumento)
  • [math]H = 22 \text{m}[/math] (profundidad total del tanque)
  • Sistema de coordenadas: [math]z \in [-H, 0][/math] con eje z positivo hacia arriba

4.3.4 Simplificación para el dominio considerado

Para [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 gradiente

El 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:

  • [math]\frac{\partial C_{\text{agua}}}{\partial x} = 0[/math] (no depende de x)
  • [math]\frac{\partial C_{\text{agua}}}{\partial y} = 0[/math] (no depende de y)
  • [math]\frac{\partial C_{\text{agua}}}{\partial z} = -\frac{C_0 \alpha}{H}[/math]

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ísica

El 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]);

Figura 12: Campo vectorial del gradiente de concentración

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: