Fortran - De Matlab a Fortran

 
Vista:
sin imagen de perfil

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder