
De Matlab a Fortran
Publicado por Diego (1 intervención) el 01/08/2015 16:24:04
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
clear;
clc;
display('Proyecto Primer Bimestre Luis Jimenez, Diego Bustamante');
t = input('Ingrese la malla temporal: ');
x = input('Ingrese la malla espacial: ');
tm = input('Ingrese el tiempo máximo: ');
L = 0.1;
dx = L / x;
dt = tm / t;
k = 50;
Ti = 300;
Tinf = 400;
h = 200;
alfa = 15e-6;
Fo = (alfa * dt) / (dx ^ 2);
if Fo > 0.5
display('El Fo calculado tiene un valor superior a 0.5, se procederá a calcular el tiempo máximo.');
dt = (0.5 * (dx ^ 2)) / alfa;
display('El tiempo máximo es: ');
display(dt * t);
Fo = (alfa * dt) / (dx ^ 2);
end;
Bi = h * dx / k;
%Inicializamos los valores de la matriz.
Ti1 = zeros(x + 1, t);
Ti1(:, 1) = Ti * ones(x + 1, 1);
for j=1:t
for i=1:x+1
if i==1
%Ecuación 2
Ti1(1,j+1)=2*Fo*(Ti1(2,j)+(Bi*Tinf))+((1-(2*Fo)-(2*Bi*Fo))*Ti1(1,j));
end
if i==x+1
%Ecuación 3
Ti1(i,j+1)=(2*Fo*Ti1(i-1,j))+((1-(2*Fo))*Ti1(i,j));
end
if i > 1 && i <= x
%Ecuación 1
Ti1(i,j+1)=Fo*(Ti1(i-1,j) +Ti1(i+1,j))+(1-2*Fo)*Ti1(i,j);
end
end
end
eje_x = (0:dx:L);
t_1 = (0:dt:tm)
figure(1)
plot(eje_x, Ti1(:, 2), eje_x, Ti1(:, round(t / 10)), eje_x, Ti1(:, round(t/5)), eje_x, Ti1(:, round(t/2)), eje_x, Ti1(:, t))
xlabel('Malla Espacial')
ylabel('Temperatura')
title('temperatura vs tiempo')
figure(2)
plot(t_1, Ti1(1, :), t_1, Ti1(x / 2, :),t_1, Ti1(x, :))
xlabel('Malla Espacial')
ylabel('Temperatura')
title('temperatura vs tiempo')
figure(3)
contourf(Ti1(1:2, :));
ylabel('Malla Espacial')
xlabel('Temperatura')
figure(4)
contourf(Ti1(x/2:x/2+1,:))
ylabel('Malla Espacial')
xlabel('Temperatura')
figure(5)
contourf(Ti1(x:x+1,:))
ylabel('Malla Espacial')
xlabel('Temperatura')
Valora esta pregunta


0