Sunteți pe pagina 1din 13

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

MIŞCAREA POTENŢIALĂ PLANĂ A UNUI FLUID – ECUAŢIA LUI LAPLACE

Se consideră mişcarea potenţială plană a unui fluid în domeniul de coordonate xOy. Viteza
fluidului derivă din potenţialul , adică:

Ecuaţia continuităţii se scrie , adică , de unde rezultă:

care reprezintă ecuaţia lui Laplace pentru potențialul vitezei .


Condiţiile Cauchy-Riemann se scriu:

ş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:

care reprezintă ecuaţia lui Laplace pentru funcţia de curent .

MIŞCAREA POTENŢIALĂ PLANĂ A UNUI FLUID ÎNTR-UN DOMENIU DREPTUNGHIULAR FĂRĂ


PEREȚI INTERIORI, AVÂND O SINGURĂ INTRARE ȘI O SINGURĂ IEȘIRE

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

în diferențe finite centrate. Să se traseze 19 linii de curent (în figura 4), de la , la


, cu pas egal cu 5, dar să se scrie pe grafic doar valorile ,..., . Să se
calculeze viteza în nodurile principale ale reţelei, apoi să se traseze vectorii viteză (în figura
5) cu funcția GNU Octave / MATLAB denumită quiver.
Observație: Pentru a obţine debitul Q, liniile de curent de-a lungul pereţilor incintei au
următoarele valori constante: pe pereţii coloraţi cu albastru în figurile 1 și 3, respectiv
pe pereţii coloraţi cu roşu.

DISCRETIZAREA RARĂ A DOMENIULUI DE CALCUL

Discretizarea domeniului de calcul se va efectua în conformitate cu sensul de parcurgere al


unei rețele plane în GNU Octave și MATLAB, anume: plecând din colțul stânga-sus al rețelei,
se va parcurge rețeaua de la stânga la dreapta, respectiv de sus în jos.
Astfel, se discretizează domeniul de calcul în 4 linii orizontale notate cu indicii
(deci lăţimea se împarte în intervale egale) şi 5 linii verticale, notate cu indicii
(deci lungimea se împarte în intervale egale). Numerotarea
începe din colțul stânga-sus al rețelei, cu i de sus în jos şi cu j de la stânga la dreapta. Rezultă
rețeaua de linii din figura 1. Paşii de discretizare după Ox şi Oy sunt: şi
. Conform datelor problemei, rezultă m.

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

Într-o primă aproximaţie, numită aproximaţia iniţială şi notată aici cu exponentul ,


se aleg valori pentru funcţiile de curent în toate nodurile interioare ale reţelei (6
noduri), adică pentru şi .
Pentru calculul iterativ, relaţia (1) va fi scrisă sub formă explicită în felul următor:
(2)
unde (k+1) este iteraţia curentă, (k) este iteraţia precedentă, iar .
Parcurgând reţeaua de la stânga la dreapta şi de sus în jos, se aplică relaţia (2) iterativ,
pentru ., în cele 6 noduri interioare (i,j) ale reţelei din figura 1, ţinând seama de
condiţiile la limite definite anterior.
Calculul iterativ se va opri atunci când de la o iteraţie la alta, eroarea relativă dintre valorile
variabilei în noduri scade sub o valoare impusă, adică:

Fie , care corespunde unei precizii de zecimale exacte, conform


formulei: [%].
În cadrul unui program elaborat pentru rezolvarea problemei, oprirea calculului iterativ la
atingerea preciziei impuse necesită utilizarea unui ciclu cu test inițial (buclă de
tip while). Pentru a simplifica scrierea programului, relația (2) se va rezolva într-un ciclu cu
contor (buclă de tip for), pentru unde, de exemplu, . Pentru această
problemă simplă, după cum se va vedea din rezultatele obținute, convergența va fi atinsă
pentru . Pentru , eroarea maximă este de %.

PROGRAMUL DE CALCUL ELABORAT ÎN GNU OCTAVE:

% METODA ITERATIVA PENTRU REZOLVAREA ECUATIEI LUI LAPLACE


% MISCAREA POTENTIALA INTR-O INCINTA PLANA SIMPLA. Discretizarea domeniului printr-o RETEA RARA
n = 4; % numar de linii orizontale (indice i)

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

m = 5; % numar de linii verticale (indice j)


Q = 100;
% APROXIMATIA INITIALA (pentru k=0) 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
endfor
endfor
% CONDITIILE LA LIMITE PE FRONTIERELE DOMENIULUI:
for j = 1:m
psi(1,j) = 0;
psi(n,j) = Q;
endfor
for i = 2:3
psi(i,1) = Q;
psi(i,m) = 0;
endfor
psi_initial = psi % afisarea valorilor initiale ale lui psi
% CALCULUL ITERATIV IN NODURILE INTERIOARE ALE RETELEI:
kmax = 15;
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
% AFISAREA REZULTATELOR:
functia_curent = psi % pentru toate nodurile retelei
eroarea_relativa = epsilon % doar pentru nodurile interioare
% REPREZENTAREA GRAFICA A CELOR 9 LINII DE CURENT:
% GNU Octave (si MATLAB) deseneaza variatia lui psi in oglinda fata de reteaua din figura 1.
% 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; % cele 9 valori psi=const. cerute, de la 10 la 90, cu pas = 10
[C,h] = contour(psi,v);
colormap([0 0.5 0.6]) % schimba colormap de la combinatia "jet", la setarea RGB data: [0 0.5 0.6]
axis([1 5 1 4]) % fixarea domeniului cu lungime de 4 unitati pe Ox si latime de 3 unitati pe Oy
axis off
plot([1 5 5],[4 4 2],'b','linewidth',2) % frontiera albastra cu psi=0
plot([1 1 5],[3 1 1],'r','linewidth',2) % frontiera rosie cu psi=Q
title('Liniile \psi = const. pentru discretizarea rara a domeniului')
% SALVAREA FIGURII CU NUMELE psi_domeniu_rar SI DIFERITE EXTENSII:

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

% cu extensia emf (Microsoft Enhanced Metafile/ recomandate pentru inserare in MS Office):


print('psi_domeniu_rar.emf','-demf')
% cu extensia png (Portable Network Graphic):
print('psi_domeniu_rar.png','-dpng')
% cu extensia eps (Encapsulated PostScript, Level 2 Color):
print('psi_domeniu_rar.eps','-depsc2')
% Nota: figurile.eps au cea mai buna rezolutie si pot fi vizualizate cu GSview, care este free software.
% Chiar daca GSview nu este instalat, figurile.eps pot fi inserate in MS Office cu Insert Picture/ From file/ ...

PROGRAMUL DE CALCUL ELABORAT Î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.

REZULTATELE OBȚINUTE PRIN METODA ITERATIVĂ A LUI DIRICHLET, PENTRU REȚEAUA


RARĂ DIN FIGURA 1

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

Valorile finale ale funcției de curent , obținute iterativ pentru , sunt


definite în matricea:

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 , , ..., .

Liniile  = const. pentru discretizarea rara a domeniului

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

REZOLVAREA NUMERICĂ A ECUAŢIEI LUI LAPLACE PRIN METODA DIRECTĂ, PENTRU


REȚEAUA RARĂ DIN FIGURA 1

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:

şi înlocuind valorile cunoscute pe frontiere: , respectiv , rezultă:

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

Valorile funcției de curent obținute prin metoda directă pentru şi sunt


definite în matricea:

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).

DISCRETIZAREA FINĂ A DOMENIULUI DE CALCUL

Discretizarea domeniului de calcul se va efectua în conformitate cu sensul de parcurgere al


unei rețele plane în GNU Octave și MATLAB, anume: plecând din colțul stânga-sus al rețelei,
se va parcurge rețeaua de la stânga la dreapta, respectiv de sus în jos.
Astfel, se discretizează domeniul de calcul în 31 de linii orizontale notate cu indicii
(deci lăţimea se împarte în de intervale egale) şi 41 de linii
verticale, notate cu indicii (deci lungimea se împarte în de
intervale egale). Numerotarea începe din colțul stânga-sus al rețelei, cu i de sus în jos şi cu j
de la stânga la dreapta. Rezultă rețeaua de linii dese din figura 2. Paşii de discretizare după
Ox şi Oy sunt: şi . Rezultă m.

 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

Fig. 3 – Discretizarea fină a domeniului de calcul

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).

PROGRAMUL DE CALCUL ELABORAT ÎN GNU OCTAVE:

% METODA ITERATIVA PENTRU REZOLVAREA ECUATIEI LUI LAPLACE


% MISCAREA POTENTIALA INTR-O INCINTA PLANA SIMPLA. Discretizarea domeniului printr-o RETEA FINA
n = 31; % numar de linii orizontale (indice i)
m = 41; % numar de linii verticale (indice j)
Q = 100;
% 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
endfor
endfor
% CONDITIILE LA LIMITE PE FRONTIERELE SOLIDE ALE DOMENIULUI:
for j = 1:m
psi(1,j) = 0; % perete sus
psi(n,j) = Q; % perete jos

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

% cu extensia eps (Encapsulated PostScript, Level 2 Color):


print('psi_domeniu_des.eps','-depsc2')

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 DE CALCUL ELABORAT ÎN MATLAB:

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.

Liniile  = const. pentru discretizarea fina a domeniului

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

CALCULUL VITEZEI ÎN NODURILE PRINCIPALE ALE REŢELEI DESE DIN FIGURA 3

Componentele vitezei, şi , se determină (atât în GNU Octave, cât şi în


MATLAB) cu funcţia gradient. Apoi viteza în fiecare nod se determină cu formula:

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:

% REPREZENTAREA GRAFICA A VECTORILOR VITEZA:


clf % sterge imaginea din graficul activ (prezentata in figura 4)
hold on
v = 10:10:90; % se vor suprapune vectorii viteza peste 9 linii de curent, cu valori psi=10 -> psi=90
[C,h] = contour(psi,v);
colormap([0 0.5 0.6]), axis([1 m 1 n])
axis off
plot([1 m m],[n n 11],'b',[1 1 m],[21 1 1],'r','linewidth',2) % frontierele solide
title('Miscarea potentiala pentru discretizarea fina a domeniului')
% CALCULUL VITEZEI: componentele vitezei sunt vx = dpsi/dy si vy = -dpsi/dx
[dpsidx,dpsidy] = gradient(psi);
vx = dpsidy;
vy = -dpsidx;
for j = 1:m
for i = 1:n
v(i,j) = sqrt(vx(i,j)^2+vy(i,j)^2);
endfor
endfor
% TRASAREA VECTORILOR VITEZA (se pune -vx, -vy, ca sa rezulte sensul de curgere impus in problema):
quiver(-vx,-vy)
% SALVAREA FIGURII CU NUMELE viteze_domeniu_des si extensia emf:
print('viteze_domeniu_des.emf','-demf')

În figura 5 este prezentat câmpul de viteze în domeniul cosiderat.


Miscarea potentiala pentru discretizarea fina a domeniului

Fig. 5 – Vectorii viteză pentru discretizarea deasă a domeniului de calcul

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

Observație: Pentru rularea în MATLAB, liniile de program seamănă în general cu cele


elaborate în GNU Octave, cu excepția diferențelor specificate la cazul discretizării rare a
domeniului de calcul.

13

S-ar putea să vă placă și