0% encontró este documento útil (0 votos)
31 vistas8 páginas

CD 13028 - Removed

El documento presenta códigos de Matlab para simular la dispersión de contaminantes radiactivos en el aire, tanto en un escenario de fuente al nivel del suelo como a una altura específica. Incluye funciones para calcular los coeficientes de dispersión y métodos numéricos para resolver ecuaciones de difusión. Se utilizan gráficos para visualizar la concentración de contaminantes a lo largo del tiempo y la distancia.

Cargado por

pomarollijm
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
31 vistas8 páginas

CD 13028 - Removed

El documento presenta códigos de Matlab para simular la dispersión de contaminantes radiactivos en el aire, tanto en un escenario de fuente al nivel del suelo como a una altura específica. Incluye funciones para calcular los coeficientes de dispersión y métodos numéricos para resolver ecuaciones de difusión. Se utilizan gráficos para visualizar la concentración de contaminantes a lo largo del tiempo y la distancia.

Cargado por

pomarollijm
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

ANEXO II

Scripts-Solución Analítica

Código de Matlab para el primer escenario (fuente radioactiva al nivel del suelo) de
la solución analítica

%Caso 12
%Dispersión de pluma/Estado Estacionario en dirección x a una
velocidad
%constante del viento

%C(x,y,z)=exp^(-0.5*(y^2/thetay^2
+z^2/thetaz^2)*Qm/pi*thetaz*thetay*u

clc
clear all
close all

CASE = input('Ingrese el escenario: ','s');

%Para cada par de y existe un z

Qm=1000; %Flujo másico [kg/s]


u=20; %Velocidad del viento [m/s]

%Se toma en cuenta los vectores


[y,x]=meshgrid(1e-4:10:2000,1e-4:10:2000);
z =50;

%Para la condición ambiental:

sigma_y = fsigma_y(CASE,x); %[m]


sigma_z = fsigma_z(CASE,x); %[m]

exponencial = exp(-0.5*(((y.^2)./(sigma_y.^2))
+((z^2)./(sigma_z.^2))));
C =exponencial.*(Qm./(pi*sigma_z.*sigma_y.*u));

figure(1)
surf(x,y,C)

figure(2)
contourf(x,y,C,100,'LineColor','none')
xlabel('Distancia [m]')
ylabel('Distancia [m]')
zlabel('Concentración [kg/m^3]')
hold on
contourf(x,-y,C,100,'LineColor','none')
axis([0 1990 -200 200])
grid on

59
Código de Matlab para el segundo escenario (fuente radioactiva a una determinada
altura “H”) de la solución analítica

%Caso 13
%Dispersión de pluma/Estado Estacionario en dirección x a una
velocidad
%constante del viento y determinada altura

%C(x,y,z)=(exp(-0.5*(((y.^2)./(sigma_y.^2))))*exp(-0.5*(((z-
H)^2)./(sigma_z.^2)))+exp(-
0.5*(((z+H)^2)./(sigma_z.^2))))*Qm/pi*thetaz*thetay*u

clc
clear all
close all

CASE = input('Ingrese el escenario: ','s');

%Para cada par de y existe un z

Qm=1000; %Flujo másico [kg/s]


u=50; %Velocidad del viento [m/s]

%Se toma en cuenta los vectores


[y,x]=meshgrid(1e-4:10:2000,1e-4:10:2000);
z =50; %Altura de la chimenea
H= 10; %Altura sobre la que está la chimenea

%Para la condición ambiental:

sigma_y = fsigma_y(CASE,x); %[m]


sigma_z = fsigma_z(CASE,x); %[m]

exponencial1 = exp(-0.5*(((y.^2)./(sigma_y.^2))));
exponencial2 = exp(-0.5*(((z-H)^2)./(sigma_z.^2)))+exp(-
0.5*(((z+H)^2)./(sigma_z.^2)));
C =exponencial1.*exponencial2.*(Qm./(pi*sigma_z.*sigma_y.*u));

figure(1)
surf(x,y,C)

figure(2)
contourf(x,y,C,100,'LineColor','none')
xlabel('Distancia [m]')
ylabel('Distancia [m]')
zlabel('Concentración [kg/m^3]')
hold on
contourf(x,-y,C,100,'LineColor','none')
axis([0 1990 -200 200])
grid on

60
Código para la determinación de coeficiente de dispersión "𝝈𝒚 " de la solución
analítica

function [sigma_y]=fsigma_y(CASE,x)

%CASE = input('Ingrese el caso','s');


ks1 = {'RA','RB','RC','RD','RE','RF'};
v1 = {0.22,0.16,0.11,0.08, 0.06, 0.04};

ks2 = {'UA','UB','UC','UD','UE','UF'};
v2 = {0.32,0.32,0.22,0.16, 0.11, 0.11};

M1 = containers.Map(ks1,v1);
M2 = containers.Map(ks2,v2);

if CASE(1)=='R'
c = M1(CASE);
sigma_y=c*x.*(1+0.0001*x).^-0.5;
elseif CASE(1)=='U'
c = M2(CASE);
sigma_y=c*x.*(1+0.0004*x).^-0.5;
else
disp('Este caso no existe')
end

end

61
Código para la determinación de coeficiente de dispersión "𝝈𝒛 " de la solución
analítica

function [sigma_z]=fsigma_z(CASE,x)

%CASE = input('Ingrese el caso','s');


ks1 = {'RA','RB','RC','RD','RE','RF'};
v1 = {[0.20,0],[0.12,0],[0.08, 0.0002],[0.06,0.0015],[0.03,
0.0003],[0.016, 0.0003]};

ks2 = {'UA','UB','UC','UD','UE','UF'};
v2 = {[0.24,0.0001],[0.24,0.0001],[0.20,0],[0.14,0.0003],[0.08,
0.0015], [0.08, 0.0015]};

M1 = containers.Map(ks1,v1);
M2 = containers.Map(ks2,v2);

if CASE(1)=='R'

c = M1(CASE);

if CASE=='RE' | CASE=='RF'
sigma_z=c(1)*x.*(1+c(2)*x).^-1;
else
sigma_z=c(1)*x.*(1+c(2)*x).^-0.5;
end

elseif CASE(1)=='U'

c = M2(CASE);

if CASE=='UA' | CASE=='UB'
sigma_z=c(1)*x.*(1+c(2)*x).^0.5;
else
sigma_z=c(1)*x.*(1+c(2)*x).^-0.5;
end

else
disp('Este caso no existe')
end

end

62
ANEXO III

Scripts-Solución Numérica

Código de Matlab de la solución numérica por métodos de diferencias finitas y Euler

clc
clear all
close all

%Método de Diferencias Finitas y Euler

%Definición de constantes
Qm = 10; % Flujo de liberación de la fuente [kg/s]
k = 0.086; % Coeficiente de difusión [m^2/s]
u = 1; % Velocidad del aire [m/s]
tf=1; % Tiempo final[s]

%Criterio de estabilidad
K=0.9; % Coeficiente de proporcionalidad
N = 100; % Número de nodos
L = 0.8; % Longitud [m]
dx = L/(N-1);
dt=K*(dx^2)/(2*k);
Co = 2; % Concentración inicial [kg/m^3]

%Definición de constantes
A = u*dt/(2*dx) + k*dt/(dx^2);
B = 1 - 2*k*dt/(dx^2);
D = -u*dt/(2*dx)+k*dt/(dx^2);

C = zeros(N,N);
x = linspace(0,L,N);
t = linspace(0,tf,N);

% i se refiere al tiempo
% j se refiere a la posición
C(1,:)=Co;

for i=1:N-1
for j=2:N-1

C(i+1,j)=A*C(i,j-1)+B*C(i,j)+D*C(i,j+1);
end

end

dist = [2,round(N/2),N-1];
titulo = sprintf('Solución numérica (%6.0f puntos de malla)',N);

subplot(2,2,1)
plot(t,C(:,dist(1)),'LineWidth',1.2)
title(titulo)

63
xlabel('Tiempo [s]')
ylabel('Concentración [kg/m^3]')
leyenda1 = 'Distancia %2.4f m';
leyenda1 = sprintf(leyenda1,x(dist(1)));
legend(leyenda1)
grid on
hold on

subplot(2,2,2)
plot(t,C(:,dist(2)),'LineWidth',1.2)
title(titulo)
xlabel('Tiempo [s]')
ylabel('Concentración [kg/m^3]')
leyenda1 = 'Distancia %2.4f m';
leyenda1 = sprintf(leyenda1,x(dist(2)));
legend(leyenda1)
grid on

subplot(2,2,3)
plot(t,C(:,dist(3)),'LineWidth',1.2)
title(titulo)
xlabel('Tiempo [s]')
ylabel('Concentración [kg/m^3]')
leyenda1 = 'Distancia %2.4f m';
leyenda1 = sprintf(leyenda1,x(dist(3)));
legend(leyenda1)
grid on
hold off

tiem = [2,round(N/5), round(N*2/5),round(N*3/5), round(N*4/5), N-


1];
figure(2)
legend2 = [];
for i = tiem

plot(x,C(i,:),'LineWidth',1.2)
hold on
legend2=[legend2; sprintf('Tiempo %2.4f seg',t(i)) ];
end

title(titulo)
xlabel('Distancia [m]')
ylabel('Concentración [kg/m^3]')
legend(legend2)
grid on

64
Código de Matlab de la solución numérica por el método de derivadas parciales

clc
clear all
close all

%Método Función integrada de Matlab


C.k = 0.086; %Constante de Difusion
C.uv = 1; %Velocidad del viento
C.L = 1; %Longitud
C.Co = 2; %Concentración inicial
C.tf=1; %Tiempo final
N=100;

x = linspace(0,C.L,N); %Número de mallado


t = linspace(0,C.tf,N);
m = 0;

eqn = @(x,t,Con,dCondx) ecuacionPDE(x,t,Con,dCondx,C); %EDP


ic = @(x) condicioninicial(x,C); %Ecuación condición
inicial
Con = pdepe(m,eqn,ic,@condicionfrontera,x,t); %Ecuación
condicones de frontera
%pdepe (ecuación
integradaMatlab)

dist = [2,round(N/2),N-1];
titulo = sprintf('Solución numérica (%6.0f puntos de malla)',N);

subplot(2,2,1)
plot(t,Con(:,dist(1)),'LineWidth',1.2)
title(titulo)
xlabel('Tiempo [s]')
ylabel('Concentración [kg/m^3]')
leyenda1 = 'Distancia %2.4f m';
leyenda1 = sprintf(leyenda1,x(dist(1)));
legend(leyenda1)
grid on
hold on

subplot(2,2,2)
plot(t,Con(:,dist(2)),'LineWidth',1.2)
title(titulo)
xlabel('Tiempo [s]')
ylabel('Concentración [kg/m^3]')
leyenda1 = 'Distancia %2.4f m';
leyenda1 = sprintf(leyenda1,x(dist(2)));
legend(leyenda1)
grid on

subplot(2,2,3)
plot(t,Con(:,dist(3)),'LineWidth',1.2)
title(titulo)
xlabel('Tiempo [s]')

65
ylabel('Concentración [kg/m^3]')
leyenda1 = 'Distancia %2.4f m';
leyenda1 = sprintf(leyenda1,x(dist(3)));
legend(leyenda1)
grid on

hold off

tiem = [2,round(N/5), round(N*2/5),round(N*3/5), round(N*4/5), N-


1];
figure(2)
legend2 = [];

for i = tiem

plot(x,Con(i,:),'LineWidth',1.2)
hold on
legend2=[legend2; sprintf('Tiempo %2.4f seg',t(i)) ];
end

title(titulo)
xlabel('Distancia [m]')
ylabel('Concentración [kg/m^3]')
legend(legend2)
grid on

function [c,f,s] = ecuacionPDE(x,t,Con,dCondx,C)


k = C.k;
uv = C.uv;

c = 1; %Derivada temporal
f = k*dCondx; %Segunda derivada espacial
s = -(uv)*dCondx; %Primera derivada espacial
end

function u0 = condicioninicial(x,C)
u0 = C.Co;
end

function [pl,ql,pr,qr] = condicionfrontera(xl,Conl,xr,Conr,t)


pl = Conl; %Condición de borde izquierda
ql = 0; %Valor de la condición de borde izquierda
pr = Conr; %Condición de borde derecha
qr = 0; %Valor de la condición de borde derecha
end

66

También podría gustarte