Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- =% Parâmetros
- U0 = 1; % Condição de contorno em x=0
- UL = 0; % Condição inicial
- phi = 1; % Porosidade
- vel = 1; % Velocidade
- D = 1; % Coeficiente de difusão
- L = 1; % Comprimento do intervalo
- T = 1; % Tempo final
- % Parâmetros adimensionais
- t_ref = D / (phi * L^2); % Tempo característico
- T_estrela = T / t_ref; % Tempo final adimensional
- % Variáveis e malhas adimensionais
- n = 100; % Número de pontos na malha espacial
- dx = L / (n - 1);
- x_adim = (0:dx:L) / L; % Malha espacial adimensional
- dt = 0.01 * t_ref;
- t_adim = (0:dt:T_estrela) * t_ref; % Malha temporal adimensional
- B = zeros(n, 1);
- % Preenchimento da matriz inicial B
- B(1) = U0;
- B(end) = UL;
- % Inicialização da matriz A
- A = zeros(n);
- % Coeficientes da matriz A
- z = dt / (phi * dx);
- A1 = z * (-vel/2 - D / dx);
- A2 = 1 + z * ((2*D)/dx);
- A3 = z * (vel/2 - D/dx);
- for i = 2:n-1
- A(i, i - 1) = A1;
- A(i, i) = A2;
- A(i, i + 1) = A3;
- end
- A(1, 1) = 1;
- A(end, end) = 1;
- tempos = [0.09, 0.14, 0.19, 0.32] * T_estrela;
- % Solução dos sistemas A*u = B
- for j = 2:length(t_adim)
- u = A \ B; % Resolve o sistema linear
- % Verificar se o tempo atual está nos tempos desejados
- if t_adim(j) == tempos(1) || t_adim(j) == tempos(2) || t_adim(j) == tempos(3) || t_adim(j) == tempos(4)
- % Se sim, plotar a solução numérica
- plot(x_adim * L, u, 'r'); % Convertendo x' de volta para x
- hold on;
- end
- % Atualiza o B para o próximo passo de tempo
- B = u;
- end
- xlabel('x');
- ylabel('C');
- title('Solução da Equação de Convecção-Difusão (Adimensional)');
- grid on;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement