-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathKoeffizientenmatrix.m
90 lines (66 loc) · 4.1 KB
/
Koeffizientenmatrix.m
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
%% Skript zum Erstellen der Koeffizientenmatrizen
% Hier werden die Koeffizientenmatrizen mit den jeweiligen Randbedingungen
% definiert
dz = L/(N-1) ; % Räumliche Schrittweite (übernommen aus Folie 32 aus Termin 8)
dz2 = dz*dz ;
qc1 = 0 ;
%% Konstruieren der Koeffizienten Matrix des ersten Terms (diffusiver Anteil)
A1 = zeros(N) ; % Initialisieren der Systemmatrix
[b1] = deal(zeros(size(A1,1),1)) ; % Initialisieren des b-Vektors
% Zusammensetzen des Matrixtorsos
for i = 2:N-1
A1(i,i) = -2 ; % Diagonalelemente
A1(i,i-1) = 1 ; % untere Diagonale
A1(i,i+1) = 1 ; % obere Diagonale
b1(i) = 0 ; % Befüllen des b-Vektors
end
% Randbedinung am Raktoreingang nach Ditrichlet
for i = 1
A1(i,i) = 0 ; % Diagonalelemente
A1(i,i+1) = 0 ; % obere Diagonale
b1(i) = 0 ; % Befüllen des b-Vektors
end
% Randbedinung am Reaktorausgang nach Neumann
for i = N
A1(i,i) = -2 ; % Diagonalelemente
A1(i,i-1) = 2 ; % obere Diagonale
b1(i) = 0 ; % Befüllen des b-Vektors
end
%% Konstruieren der Koeffizienten Matrix des zweiten Terms (konvektiver Anteil)
% Ruekwaertsdifferenz (upwind schema)
A2 = zeros(N) ; % Initialisieren der Systemmatrix
[b2,z_vec2] = deal(zeros(size(A2,1),1)) ; % Initialisieren des b-Vektors
% Zusammensetzen des Matrixtorsos
for i = 2:N-1
A2(i,i) = 1 ; % Diagonalelemente
A2(i,i-1) = -1 ; % untere Diagonale
A2(i,i+1) = 0 ; % obere Diagonale
b2(i) = 0 ; % Befüllen des b-Vektors
end
% Randbedinung am Raktoreingang nach Ditrichlet
for i = 1
A2(i,i) = 0 ; % Diagonalelemente
A2(i,i+1) = 0 ; % obere Diagonale
b2(i) = 0 ; % Befüllen des b-Vektors
end
% Randbedinung am Reaktorausgang nach Neumann
for i = N
A2(i,i) = 1 ; % Diagonalelemente
A2(i,i-1) = -1 ; % obere Diagonale
b2(i) = 0 ; % Befüllen des b-Vektors
end
cp_c_gleichgewicht = 3.515009308308688e+06;
%% Zusammensetzen der einzelnen Matrizen für Energie und Massenbilanz
mass_balance_Amatrix = ( (De/dz2)*A1 -(Uz/(dz))*A2 ) ; % Koeffizientenmatrix für die Stoffkonzentrationen (später je 1x pro Stoff)
mass_balance_bvektor = ( (De/dz2)*b1(:) -(Uz/(dz))*b2(:) ) ; % b-Vektor für die Stoffkonzentrationen (später je 1x pro Stoff)
mass_balance_Amatrix = sparse(mass_balance_Amatrix) ;
mass_balance_bvektor = sparse(mass_balance_bvektor) ;
% energy_balance_Amatrix = ( (+ke/dz2)*A1 - ((ci_c_gleichgewicht.*Uz)./(dz)).*A2 ) ; % Koeffizientenmatrix für die Temperaturen
% energy_balance_bvektor = ( (+ke/dz2)*b1(:) - ((ci_c_gleichgewicht.*Uz)./(dz)).*b2(:) ) ; % b-Vektor für die Temperaturen
energy_balance_Amatrix1 = (+ke/dz2)*A1 ; % Koeffizientenmatrix für die Temperaturen
energy_balance_Amatrix2 = ((Uz)./(dz)).*A2 ; % Koeffizientenmatrix für die Temperaturen
energy_balance_bvektor = ( (+ke/dz2)*b1(:) - ((Uz)./(dz)).*b2(:) ) ; % b-Vektor für die Temperaturen
energy_balance_Amatrix1 = sparse (energy_balance_Amatrix1) ;
energy_balance_Amatrix2 = sparse (energy_balance_Amatrix2) ;
% energy_balance_Amatrix = sparse (energy_balance_Amatrix) ;
energy_balance_bvektor = sparse (energy_balance_bvektor) ;