Documente Academic
Documente Profesional
Documente Cultură
unui fluid într-o incintă dreptunghiulară, fără pereți interiori, cu o intrare și o ieșire, rezolvată în
GNU Octave și în MATLAB
Se consideră mişcarea potenţială plană a unui fluid în domeniul de coordonate xOy. Viteza
fluidului derivă din potenţialul , adică:
şi
unde este funcţia de curent. Curba de-a lungul căreia potențialul vitezei are valoare
constantă se numește linie echipotenţială, iar curba de-a lungul căreia funcția de
curent are valoare constantă se numește linie de curent. Liniile echipotențiale
sunt ortogonale liniilor de curent și împreună formează spectrul mișcării potențiale a
fluidului în domeniul plan considerat.
Ţinând seama de aceste condiţii, ecuaţia lui Laplace se poate scrie:
ENUNȚUL PROBLEMEI
Fie mişcarea potenţială plană a apei printr-o incintă rectangulară, având lungimea m
pe direcţia Ox şi lățimea m pe direcţia Oy (vezi figurile 1 și 3). Intrarea fluidului se face
prin fereastra AB din partea de sus a peretelui din stânga, iar ieşirea prin fereastra CD din
partea de jos a peretelui din dreapta, ambele ferestre având lăţimea m. Debitul de
alimentare este .
a) Pentru o discretizare rară a domeniului de calcul, ca în figura 1, se cere să se determine
valorile funcției de curent în nodurile interioare ale rețelei, atât cu metoda iterativă a lui
Dirichlet, cât și cu metoda directă, cu ecuațiile scrise în diferențe finite centrate. Să se
traseze grafic 9 linii de curent (în figura 2), cu valorile , , ..., .
b) Pentru o discretizare fină a domeniului de calcul, ca în figura 3, se cere să se determine
valorile funcției de curent în nodurile interioare ale rețelei cu metoda iterativă a lui Dirichlet,
1
MS5, Cursul 7 - partea 3 și Cursul 8 - partea 1, Ecuaţia lui Laplace – Mișcarea potențială plană a
unui fluid într-o incintă dreptunghiulară, fără pereți interiori, cu o intrare și o ieșire, rezolvată în
GNU Octave și în MATLAB
A 1,j = 0
y=3 i=1
Q
i,m = 0
i=2
B 2,2 2,3 2,4
i,1 = Q
i=3 C
3,2 3,3 3,4
i=n=4 D
y=0
j=1 j=2 j=3 n,j = Q j=4 j=m=5
x=0 x=4
Fig. 1 – Discretizarea rară a domeniului de calcul
2
MS5, Cursul 7 - partea 3 și Cursul 8 - partea 1, Ecuaţia lui Laplace – Mișcarea potențială plană a
unui fluid într-o incintă dreptunghiulară, fără pereți interiori, cu o intrare și o ieșire, rezolvată în
GNU Octave și în MATLAB
Ecuaţia lui Laplace pentru funcția de curent se scrie în diferenţe finite centrate astfel:
Pentru , rezultă:
(1)
Această relaţie se aplică în cele 6 noduri interioare (i,j) ale reţelei din figura 1, mai exact
pentru şi .
Condiţiile la limite pentru reţeaua considerată se scriu astfel:
pentru (pe peretele albastru de sus);
pentru (pe peretele albastru din dreapta);
pentru (pe peretele roşu din stânga);
pentru (pe peretele roşu de jos).
REZOLVAREA ECUAŢIEI LUI LAPLACE PRIN METODA ITERATIVĂ A LUI DIRICHLET, PENTRU
REȚEAUA RARĂ DIN FIGURA 1
3
MS5, Cursul 7 - partea 3 și Cursul 8 - partea 1, Ecuaţia lui Laplace – Mișcarea potențială plană a
unui fluid într-o incintă dreptunghiulară, fără pereți interiori, cu o intrare și o ieșire, rezolvată în
GNU Octave și în MATLAB
4
MS5, Cursul 7 - partea 3 și Cursul 8 - partea 1, Ecuaţia lui Laplace – Mișcarea potențială plană a
unui fluid într-o incintă dreptunghiulară, fără pereți interiori, cu o intrare și o ieșire, rezolvată în
GNU Octave și în MATLAB
Programul seamănă în general cu cel elaborat în GNU Octave, dar are următoarele diferențe:
Ciclurile cu contor, de tip for, se termină cu end în MATLAB (nu cu endfor ca în Octave),
de exemplu:
% APROXIMATIA INITIALA IN NODURILE INTERIOARE:
for j = 2:m-1
for i = 2:n-1
psi(i,j) = 0;
psi_e(i,j) = 0; % variabila necesara pentru calculul erorii
end
end
Pe lângă funcția contour, se poate folosi și funcția clabel în MATLAB (pentru a insera
etichete pe grafic), de exemplu:
hold on
v=10:10:90; % cele 9 valori psi=const. cerute, de la 10 la 90, cu pas = 10
[C,h]=contour(psi,v);
clabel(C,h);
colormap([0 0.5 0.6]) % schimba colormap de la combinatia "jet", la setarea RGB data: [0 0.5 0.6]
Salvarea graficelor cu funcția print se realizează cu altă sintaxă în MATLAB, față de sintaxa
din Octave (în MATLAB, salvarea graficelor se poate realiza și din meniu, cu extensia
dorită: File/ Save as ...); liniile de program aferente sunt următoarele:
% SALVAREA FIGURII CU NUMELE psi_domeniu_rar SI DIFERITE EXTENSII:
% cu extensia emf (Microsoft Enhanced Metafile/ recomandate pentru inserare in MS Office)
print -dmeta psi_domeniu_rar.emf
% cu extensia png (Portable Network Graphic)
print -dpng psi_domeniu_rar.png
% cu extensia eps (Encapsulated PostScript, Level 2 Color)
print -depsc2 psi_domeniu_rar.eps
% Nota: figurile.eps au cea mai buna rezolutie si pot fi vizualizate cu GSview, care este free software.
Rețeaua de linii din figura 1 este o rețea rară, cu 4 linii și 5 coloane, deci cu de
noduri, dintre care, 14 sunt noduri pe frontieră (unde se cunosc condițiile la limite), iar 6
sunt noduri interioare, unde se determină prin calcul iterativ valorile necunoscute ale
funcției de curent , pentru şi .
Valorile inițiale ale funcției de curent , pentru şi sunt definite în
matricea:
5
MS5, Cursul 7 - partea 3 și Cursul 8 - partea 1, Ecuaţia lui Laplace – Mișcarea potențială plană a
unui fluid într-o incintă dreptunghiulară, fără pereți interiori, cu o intrare și o ieșire, rezolvată în
GNU Octave și în MATLAB
Eroarea relativă maximă obținută la final, pentru , este mai mică decât
eroarea admisibilă, anume: . Convergența a
fost de fapt atinsă la a 12-a iterație, unde eroarea relativă maximă obținută a fost:
.
În figura 2 sunt trasate cele 9 linii de curent, de-a lungul cărora funcția de curent are valori
constante, egale cu , , ..., .
20 10 =0
30 10
Q 40 20
50
=0
60 30
70 40 20
10
80
50
30
90
60 40
70 50
20
= Q = 100
80 60 30 10
40
70 50
90
80 60
70 Q
90 80
90
= Q = 100
Fig. 2 – Traseul celor 9 linii de curent, pentru discretizarea rară a domeniului de calcul
6
MS5, Cursul 7 - partea 3 și Cursul 8 - partea 1, Ecuaţia lui Laplace – Mișcarea potențială plană a
unui fluid într-o incintă dreptunghiulară, fără pereți interiori, cu o intrare și o ieșire, rezolvată în
GNU Octave și în MATLAB
Se scrie relaţia (1) pentru fiecare dintre cele 6 noduri interioare (i,j) ale reţelei din figura 1,
pentru şi . Se înlocuiesc valorile funcţiei de curent pe frontierele domeniului.
Rezultă astfel un sistem de 6 ecuaţii liniare, având ca necunoscute cele 6 funcţii din
nodurile interioare.
Pentru scrierea sistemului de ecuaţii liniare, relaţia (1) se pune sub forma:
(3)
De exemplu, pentru , relaţia (3) devine:
Procedând la fel în celelalte noduri interioare, se obţine un sistem, care poate fi scris sub
formă matriceală: , unde A este matricea coeficienţilor (o matrice rară, de
dimensiuni , care are coeficienți egali cu 1 pe diagonala principală, iar pe fiecare linie
sunt 2 sau 3 coeficienți egali cu -0.25, respectiv 3 sau 2 coeficienți egali cu 0), iar B este
vectorul coloană al termenilor liberi ai celor 6 ecuaţii. Vectorul coloană al celor 6
necunoscute este notat cu .
Sistemul matriceal corespunzător este următorul:
1 0.25 0 0.25 0 0 22 25
0.25 1 0.25 0 0.25 0 23 0
0 0.25 1 0 0 0.25 24 0
0.25 0 0 1 0.25 0 32 50
0 0.25 0 0.25 1 0.25 33 25
0 0 0.25 0 0.25 1 34 25
Sistemul de 6 ecuaţii liniare cu 6 necunoscute astfel obţinut se rezolvă la rândul său prin
metode numerice specifice Algebrei liniare.
În GNU Octave sau MATLAB, rezolvarea unui sistem de ecuaţii liniare cu matricea
coeficienţilor pătratică se poate realiza cu următoarele comenzi:
% Introducerea matricei A (se lasa spatii intre coeficienti si se pune punct si virgula la finalul liniei):
A = [1 -0.25 0 -0.25 0 0; -0.25 1 -0.25 0 -0.25 0; 0 -0.25 1 0 0 -0.25; -0.25 0 0 1 -0.25 0; 0 -0.25 0 -0.25 1 -0.25; 0 0
-0.25 0 -0.25 1]
% Introducerea vectorului coloana B:
B = [25; 0; 0; 50; 25; 25]
% U este vectorul coloană al necunoscutelor
% SOLUTIA SISTEMULUI (componentele psi ale vectorului U) se poate obtine cu 2 comenzi:
U = A\B
% sau
U = inv(A)*B
% Rezulta:
U=
53.6232
7
MS5, Cursul 7 - partea 3 și Cursul 8 - partea 1, Ecuaţia lui Laplace – Mișcarea potențială plană a
unui fluid într-o incintă dreptunghiulară, fără pereți interiori, cu o intrare și o ieșire, rezolvată în
GNU Octave și în MATLAB
34.7826
20.2899
79.7101
65.2174
46.3768
Aceste valori sunt identice cu cele obținute prin metoda iterativă Dirichlet (valoarea lui
diferă la a 4-a zecimală, fiind 20.2899 în loc de 20.2898).
1,1 = 0 1,j = 0
i=1 = 0.1Q
2,1
Q 6,1 = 0.5Q
i,m = 0
10,1 = 0.9Q
11,1 = Q
i
i,j
21,41 = 0
22,41 = 0.1Q
i,1 = Q
26,41 = 0.5Q Q
30,41 = 0.9Q
i=n=31 31,41 = Q
j=1 j n,j = Q j=m=41
8
MS5, Cursul 7 - partea 3 și Cursul 8 - partea 1, Ecuaţia lui Laplace – Mișcarea potențială plană a
unui fluid într-o incintă dreptunghiulară, fără pereți interiori, cu o intrare și o ieșire, rezolvată în
GNU Octave și în MATLAB
Condiţiile la limite pe frontierele solide ale reţelei dese din figura 2 se scriu astfel:
pentru (pe peretele albastru de sus);
pentru (pe peretele albastru din dreapta);
pentru (pe peretele roşu din stânga);
pentru (pe peretele roşu de jos).
Ferestrele de intrare și de ieșire ale fluidului sunt frontiere fluide și sunt discretizate în
figura 3 în zece intervale egale de mărime m. Este necesar să definim condiții la
limite pe aceste frontiere fluide. În interiorul fiecărei ferestre sunt câte 9 noduri, în care
vom presupune că funcția de curent ia valori între și prin interpolare liniară,
astfel:
la intrare: știind că , rezultă pentru ;
la ieșire: știind că , rezultă pentru .
REZOLVAREA ECUAŢIEI LUI LAPLACE PRIN METODA ITERATIVĂ A LUI DIRICHLET, PENTRU
REȚEAUA FINĂ DIN FIGURA 2
La aproximaţia iniţială, se aleg valori nule pentru funcţiile de curent: , în toate cele
1131 de noduri interioare ale reţelei, adică pentru
şi .
Apoi, parcurgând reţeaua de la stânga la dreapta şi de sus în jos, se aplică relaţia (2) iterativ,
în toate nodurile interioare (i,j) ale reţelei din figura 2, ţinând seama de condiţiile la limite
(pe frontierele solide și pe cele fluide) definite anterior.
Pentru a simplifica scrierea programului de calcul, relația (2) se va rezolva într-un ciclu cu
contor (buclă de tip for), pentru iterații, unde .
Convergența va fi atinsă atunci când, de la o iteraţie la alta, eroarea relativă dintre valorile
variabilei în fiecare nod scade sub o valoare impusă (vezi explicațiile din
cazul anterior, al rețelei rare).
9
MS5, Cursul 7 - partea 3 și Cursul 8 - partea 1, Ecuaţia lui Laplace – Mișcarea potențială plană a
unui fluid într-o incintă dreptunghiulară, fără pereți interiori, cu o intrare și o ieșire, rezolvată în
GNU Octave și în MATLAB
endfor
for i = 2:21
psi(i,m) = 0; % perete dreapta
endfor
for i = 11:30
psi(i,1) = Q; % perete stanga
endfor
% CONDITIILE LA LIMITE PE FRONTIERELE FLUIDE ALE DOMENIULUI:
for i = 2:10
psi(i,1) = psi(i-1,1)+0.1*Q; % intrare
endfor
for i = 22:30
psi(i,41) = psi(i-1,41)+0.1*Q; % iesire
endfor
psi_initial = psi % afisare psi initial
% CALCULUL ITERATIV IN NODURILE INTERIOARE ALE RETELEI:
kmax = 750;
for k = 1:kmax
contor = k
for j = 2:m-1
for i = 2:n-1
psi(i,j) = (psi(i-1,j)+psi(i+1,j)+psi(i,j-1)+psi(i,j+1))/4;
epsilon(i,j) = 100*abs(psi(i,j)-psi_e(i,j))/(eps+psi(i,j));
% eps = 2.2204e-016; evita divizarea cu zero cand psi=0
psi_e(i,j) = psi(i,j);
endfor
endfor
eroare_max = max(epsilon)
endfor
% REPREZENTAREA GRAFICA A CELOR 19 LINII DE CURENT:
% GNU Octave (si MATLAB) deseneaza variatia lui psi in oglinda fata de reteaua din figura 3.
% Deci pentru trasarea liniilor de curent, matricea psi calculata trebuie rotita cu 90 grade, apoi transpusa,
% apoi rotita iar cu 180 grade:
psi = rot90(psi);
psi = psi';
psi = rot90(psi);
psi = rot90(psi);
% trasarea liniilor de curent:
hold on
v = 10:10:90; % valorile psi=const. care vor fi afisate pe grafic
[C,h] = contour(psi,v);
% clabel(C,h); % aceasta functie nu este implementata in GNU Octave, ci doar in MATLAB
v1 = 5:10:95; % adaugarea liniilor de curent psi=5 pana la psi=95, cu pas = 10
[C1,h1] = contour(psi,v1);
colormap([0 0.5 0.6]) % schimba colormap de la "jet", la setarea RGB data: [0 0.5 0.6]
axis([1 m 1 n]) % extinderea domeniului [in decimetri]
axis off
plot([1 m m],[n n 11],'b','linewidth',2) % frontiera cu psi=0
plot([1 1 m],[21 1 1],'r','linewidth',2) % frontiera cu psi=Q
title('Liniile \psi = const. pentru discretizarea fina a domeniului')
% SALVAREA FIGURII CU NUMELE psi_domeniu_des SI DIFERITE EXTENSII:
% cu extensia emf (Microsoft Enhanced Metafile/ recomandate pentru inserare in MS Office):
print('psi_domeniu_des.emf','-demf')
% cu extensia png (Portable Network Graphic):
print('psi_domeniu_des.png','-dpng')
10
MS5, Cursul 7 - partea 3 și Cursul 8 - partea 1, Ecuaţia lui Laplace – Mișcarea potențială plană a
unui fluid într-o incintă dreptunghiulară, fără pereți interiori, cu o intrare și o ieșire, rezolvată în
GNU Octave și în MATLAB
Eroarea relativă maximă obținută la final, pentru , este mai mică decât
eroarea admisibilă, anume: . Convergența a fost
de fapt atinsă la a 736-a iterație, unde eroarea relativă maximă obținută a fost:
.
În figura 4 sunt trasate cele 19 linii de curent, de-a lungul cărora funcția de curent are valori
constante. Sunt trecute valorile , , ..., de-a lungul liniilor de curent
corespunzătoare.
Programul seamănă în general cu cel elaborat în GNU Octave, dar are diferențele specificate
anterior, la cazul discretizării rare a domeniului de calcul.
20
10 =0
30 10
Q 40
50 20
=0
60
30
10
70
40 20
80
50 30
90
60
40
70
50
= Q = 100
10
80
20
60
30
70 40
90
80 50 Q
60
70
90 80
90
= Q = 100
Fig. 4 – Traseul celor 19 linii de curent, pentru discretizarea deasă a domeniului de calcul
11
MS5, Cursul 7 - partea 3 și Cursul 8 - partea 1, Ecuaţia lui Laplace – Mișcarea potențială plană a
unui fluid într-o incintă dreptunghiulară, fără pereți interiori, cu o intrare și o ieșire, rezolvată în
GNU Octave și în MATLAB
Liniile de program GNU Octave care permit calcularea vitezei și care trebuie adăugate la
finalul programului anterior, după linia de comandă hold on, sunt următoarele:
12
MS5, Cursul 7 - partea 3 și Cursul 8 - partea 1, Ecuaţia lui Laplace – Mișcarea potențială plană a
unui fluid într-o incintă dreptunghiulară, fără pereți interiori, cu o intrare și o ieșire, rezolvată în
GNU Octave și în MATLAB
13