0% found this document useful (0 votes)
75 views10 pages

Investment Study

This document contains a Matlab program that solves a 2D stationary convection-diffusion equation on a rectangular domain discretized using the finite volume method. The program includes comments explaining each section. The convection velocities in the x and y directions are defined based on given position functions. Dirichlet boundary conditions are applied on the boundaries based on constant or variable values. The diffusion fluxes between control volumes are calculated based on the discretization scheme.

Uploaded by

MARIJAN
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
75 views10 pages

Investment Study

This document contains a Matlab program that solves a 2D stationary convection-diffusion equation on a rectangular domain discretized using the finite volume method. The program includes comments explaining each section. The convection velocities in the x and y directions are defined based on given position functions. Dirichlet boundary conditions are applied on the boundaries based on constant or variable values. The diffusion fluxes between control volumes are calculated based on the discretization scheme.

Uploaded by

MARIJAN
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

PRILOG ZA STUDENTE ZA IZRADU SEMINARSKOG RADA 5.

a)

Konvektivno-difuziona jednačina (stacionarna) glasi:

U prilogu je program koji rješava ovu diferencijalnu jednačinu, na 2D domenu dimenzija Lx x


Ly.Strujno polje ⃗⃗ je poznato i definisano postavkom: vx=C∙x, vy= - C∙y. Shema Dekartove
(kartezijanske strukturisane) numeričke mreže i oznaka data je na slici Sl.1. Jednačina je
diskretizovana metodom konačnih (kontrolisanih) zapremina (CV, FV- metod). Dat je Matlab program
koji je napisan za ovu svrhu, u skladu sa oznakama i postavkom. Program sadrži komentare
koji objašnjavaju svaku cjelinu programa.

Predmetni asistent
Milan Šekularac

Sl.1. 2D domen i shema Dekartove strukturisane mreže konačnih zapremina sa oznakama


%% ######################################################################
%% PREDMET KME, VJEZBE.
%% Milan Sekularac, predmetni asistent
%% 11.CAS, STACIONARNA TRANSPORTNA JEDNACINA SA KONVEKCIJOM I DIFUZIJOM
%***********************************************************************
% PROGRAM RJESAVA JEDNACINU STACIONARNOG KONVEKTIVNO-DIFUZIONOG
% TRANSPORTA STRUJOM FLUIDA, SKALARNE FIZICKE VELICINE "fi".
%
% d/dx(ro*u*fi)+d/dy(ro*v*fi)=d/dx(L*dfi/dx)+d/dy(L*dfi/dy)+S (1)
%
% ili kao: div( ro*U*fi ) = div( L*grad(fi) ) + S
%
%***********************************************************************
% JEDNACINA JE DISKRETIZOVANA METODOM KONACNIH ZAPREMINA, DOMEN JE
% PRAVOUGAONI, DIMENZIJA Lx x Ly. ULAZNA GRANICA JE SJEVERNA (N),
% IZLAZNA JE ISTOCNA (E). GRANICNI USLOVI SU DIRICHLET-OVI ZA N,W,S
% GRANICE I NOJMANOV ZA IZLAZNU (E) GRANICU: grad(fi) x ne = 0.
%***********************************************************************
% STRUJNO POLJE JE POZNATO UNAPRIJED I ZADATO KAO: V(u,v) = f(x,y)
% PROJEKCIJE BRZINE SU: u=x, v=-y,
% (*Postavka je uzeta iz primjera u knjizi J.Ferziger, M.Peric
% "Computational methods for fluid dynamics").
%#######################################################################

close all % zatvori otvorene grafike ako ih ima


clear all % obrisi sve iz radne memorije
clc % obrisi sve sa ekrana komandnog prozora
%########################################################################
#
%% FIZICKI PARAMETRI I POSTAVKA _____
Lx = 3.;% % dimenzija domena u x-pravcu [m] Ly| |
Ly = 1; % % dimenzija domena u y-pravcu [m] |_Lx__|
% STRUJNO POLJE JE DATO POSTAVKOM: u = Cuv*x, v = -Cuv*y.
Cuv = 0.05; % Cuv je faktor skaliranja intenziteta projekcija brzine
%########################################################################
#
%% NUMERICKI PODACI
Ni = 30.; %9.; % broj vert. linija po kojima leze centri CV-a
Nj = 30.; %8.; % broj hor. linija po kojima leze centri CV-a
% NAPOMENA: KOMENTARI (U VEZI S MREZOM/INDEKSIMA) SE ODNOSE NA MREZU
% KOJA JE DATA UZ ZADATAK KAO ILUSTRACIJA: Ni x Nj = 9 x 7
%% REZULTUJUCI NUMERICKI KORACI NA MREZI KONACNIH ZAPREMINA
deltax = Lx/(Ni-2); % razmak izmedju 2 stran. susjednih CV-a u x pravcu
deltay = Ly/(Nj-2); % razmak izmedju 2 stran. susjednih CV-a u y pravcu
%% RASTOJANJA
dely = deltay; % razmak izmedju 2 centralna cvora susjednih CV-a
delx = deltax; % razmak izmedju 2 centralna cvora susjednih CV-a
%% Numericki parametri za iterativnu proceduru:
omega = 0.85; % relaksacioni Cuv kod SOR [/]
epsilon = 10.^-8.; % kriterijum za zaustavljanje iteriranja [/]
MaxIter = 5000; % Maximalni broj iteracija !? Prati uslov "Rez < epsilon" !!!
%########################################################################
#
%% FIZICKE OSOBINE SUSPTANCE (FLUIDA)
% KOEFICIJENT DIFUZIJE (GAMA):
L = 1; % koeficijent difuzije Npr.[W/mK]
% SPECIFICNA TOPLOTA:
c = 1.; % specificna toplota materijala [J/kg K]
ro = 1.2; % gustina materijala [kg / m^3]
ro = ro*c; % s obzirom na oznacavanje pri diskretizaciji!
%########################################################################
#
%% IZVORNI CLAN S
% Neka je izvor kontstantan za svaku CV-u i jednak Sc
Sc = 0.0; % izvorni clan - konstantni dio % Npr.[W/m^3]
%IZVORNI CLAN JE U OPSTEM SLUCAJU: S := Sc+Sp*(fi)p
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~
% (*FUSNOTA O IZVORNOM CLANU:
% DA JE JEDNACINA U ZADATKU ENERGIJSKA JEDNACINA ZA UNUTRASNJU ENERGIJU
% (ODN. TEMPERATURU) BIO BI PRISUTAN IZVORNI CLAN U FORMI FUNKCIJE "VISKOZNE
% DISIPACIJE" JEDNAK:
% mi*{ (du/dy+dv/dx)^2+2[(du/dx)^2+(dv/dy)^2]-2/3(du/dx+dv/dy)^2 }
% GDJE JE mi DINAMICKA VISKOZNOST FLUIDA. SVODI SE NA 4*mi. OVDJE JE ZANEMAREN.
% ON BI FIGURISAO U IZVORNOM CLANU, I TO KAO KONSTANTNI DIO Sc, BUDUCI DA
% OVAJ IZVORNI CLAN NE ZAVISI OD ZAVISNO PROMJENJIVE ("fi") VEC OD STRUJNOG
% POLJA ("u", "v")).
%########################################################################
#

%########################################################################
#
%% GRANICNI USLOVI
% Za ivice geometrije (N,W,S,E): DIRIHLEOVI => poznate vrijednosti fi na
% tim granicama
% Napomena: Vidi sliku domena (numericke mreze) i oznacavanja.
fi = zeros(1,Ni*Nj); % VEKTOR RJESENJA, ALOKACIJA I POCETNI USLOV!!!

GUvarijanta = 1; % =1 => varijanta (1) iz skripte, odn. (2)

if GUvarijanta == 1
%% KONSTANTNE VRIJEDNOSTI NA GRANICAMA GEOMETRIJE (VARIJANTA 1 U SKRIPTI)
fis=100.; % ,,south" granica (fi, i=1,9,17,...,65)
fiw=100.; % ,,west" granica
fie=0.; % ,,east" granica
fin=0.; % ,,north" granica
% ZADAVANJE:
% ,,west" granica
for i=1:1:Nj;
fi(i)=fiw; % 1,2,3,...,8. Varijanta (1)
end
% ,,east" granica
for i=Ni*Nj-(Nj-1):1:Ni*Nj
%Varijanta (1) gran.uslova:
fi(i)=fie; % 65,66,67,...,72;
end
% ,,south" & ,,north" granica
k = 0.0; % za jednokratnu upotrebu
for i=1+Nj:Nj:Nj*(Ni-1)+1
% Varijanta (1) gran.uslova:
fi(i)=fis; % 9,17,...,57
fi(i+Nj-1)=fin; % 16,24,...,64
end
elseif GUvarijanta == 2
%% ZA VARIJANTU (2) GRANICNIH USLOVA, OTKRITI DONJI SEGMENT PROGRAMA
%% PROMJENJIVI GRANICNI USLOVI (VARIJANTA 2 U SKRIPTI)
% %................... OBJASNJENJA .....................................
%% % GRANICNI USLOVI (PROFIL fi(x) ili fi(y) DUZ NEKE GRANICE):
%% Npr: W granica: parabola sa maksimumom u Ly/2 jednakim 200
%% i minimumom u y=0 i y=Ly jednakim 100.
%% S i N granica: linearni profil od 100 na x=0 do 20 na x=Lx
%% E granica: constantni profil = 20.
%% Opisane veze:
%% fiw = -4*(cc-aa)/Ly^2. * yw^2.0 + cc;
%% fis = aa + (bb-aa)/Lx*xs;
%% fin = fis;
%% fie = bb;
aa = 120; bb = 30; cc = 200;
% y koordinate cvorova na W i E granici (1.nacin):
yw(1)= 0 ;
yw(2:1:Nj-1) = [deltay/2.:deltay:Ly-deltay/2];
yw(Nj) = Ly;
% 2.nacin:
% yw = cat(2,[0.],[deltay/2.:deltay:Ly-deltay/2],[Ly]);

% y koordinate cvorova na E stranici su:


ye=yw;

% x koordinate cvorova na S i N granici:


xs=[deltax/2.0:deltax:Lx-deltax/2.0];
xn = xs;
end
%########################################################################
#

%########################################################################
#
%% DEFINISANJE PROJEKCIJA BRZINE u,v
% U CENTRIMA STRANICA KONTROLISANIH ZAPREMINA: e,w,n,s
% ZA TE KOORDINATE CE BITI SRACUNATE BRZINE u I v PO DATOJ VEZI IZ POSTAVKE

% x koordinata za centre "e" i "w" stranica kontrolisanih zapremina CV:


for xrednibroj=2:1:Ni-1
k=(xrednibroj-2)* Nj;
for i=Nj+k+2:1:2*Nj-1+k % 9,10,...,13
xe(i)=deltax+(xrednibroj-2)*delx; % 16,17,...,20
xw(i)=(xrednibroj-2)*delx; % ...........
end % 44,45,...,48
end

% y koordinata za centre "n" i "s" stranica kontrolisanih zapremina CV:


for yrednibroj=2:1:Nj-1
k=(yrednibroj-2)* Nj;
for i=Nj+k+2:Nj:Nj+2+(Ni-3)*Nj+k
yn(i)=deltay+(yrednibroj-2)*dely;
ys(i)=(yrednibroj-2)*dely;
end
end
%########################################################################
#

%########################################################################
#
%% Difuzioni fluksevi
% To su "fluksevi" nastali diskretizacijom difuzionog clana.
% Diferencijalna Shema je CDS (centralna):
% npr: De=Le*Ae/delxe = Le*(deltay*1)/delxe,
% gdje je An povrsina sjeverne stranice na kartezijanskoj mrezi,
% delxe je rastojanje od cvorova (tezista konacnih zapremina) P i E

%_____Definisanje Dn ,,north"_________
for k=0:Nj:(Ni-3)*Nj
for i=2+Nj+k:1:2*Nj-2+k
Dn(i)=L*deltax/dely;
end
end
% specificni
for i=2*Nj-1:Nj:Nj*(Ni-1)-1
Dn(i)=2*L*deltax/dely;
end
%_____Definisanje Ds ,,south"_________
for k=0:Nj:(Ni-3)*Nj
for i=3+Nj+k:1:3+Nj+k+Nj-4
Ds(i)=L*deltax/dely;
end
end
% specificni
for i=2+Nj:Nj:Nj*(Ni-1)-Nj+2
Ds(i)=2*L*deltax/dely;
end
%____Definisanje Dw ,,west"___________
for k=0:Nj:(Ni-4)*Nj
for i=2*Nj+2+k:1:3*Nj-1+k
Dw(i)=L*deltay/delx;
end
end
% specificni (8,9,10,11)
for i=Nj+2:1:2*Nj-1
Dw(i)=2*L*deltay/delx;
end
%_____Definisanje De ,,east"
for k=0:Nj:(Ni-4)*Nj
for i=2+Nj+k:1:2*Nj-1+k
De(i)=L*deltay/delx;
end
end
% specificni (26,27,28,29)
for i=(Ni-1)*Nj-Nj+2:1:Nj*(Ni-1)-1
De(i)=2*L*deltay/delx;
end
%########################################################################
#

%########################################################################
#
%% DEFINISANJE KOEFICIJENATA U TRANSPORTNOJ JEDNACINI
% SHEMA ZA KONVEKTIVNE FLUKSEVE JE ,,POWER LAW" SHEMA (S.PATANKAR).
% DEFINISU SE PRVO BRZINE ue, uw, us, un ZA SVAKU KONTROLISANU ZAPREMINU CV
% NA OSNOVU NJH SE RACUNAJU KONVEKTIVNI FLUKSEVI Fe, Fw, Fs, Fn
% npr: Fe=(ro*u*fi)e*deltay.
% Koeficijenti su konstatni pa se sracunavaju jednim prolazom prije GS
% solvera

%% DEFINISANJE BRZINA
% PETLJA PO SVIM CELIJAMA (vidi mrezu)
% (za sve CV-e (bez ivicnih tacaka))

% ALOKACIJA (nije neophodna u MAtlabu):


ue=zeros(1,(Ni-3)*Nj + 2*Nj-1);
uw=zeros(1,(Ni-3)*Nj + 2*Nj-1);
vn=zeros(1,(Ni-3)*Nj + 2*Nj-1);
vs=zeros(1,(Ni-3)*Nj + 2*Nj-1);
for k=0.:Nj:(Ni-3)*Nj
for i=Nj+2+k:1:2*Nj-1+k
% POSTAVKA: u=C*x, v=-C*y
ue(i) = Cuv*xe(i);
uw(i) = Cuv*xw(i);
vs(i) = - Cuv*ys(i);
vn(i) = - Cuv*yn(i);
end
end
%%

%% SRACUNAVANJE KOEFICIJENATA aw, as, an, ae, MATRICE SISTEMA:


% PETLJA PO SVIM CELIJAMA (vidi mrezu Ni=9,Nj=8):
for k=0.:Nj:(Ni-3)*Nj % za sve CV-e (bez ivicnih tacaka)
% Za mrezu Nj=8, Ni=9:
for i=Nj+2+k:1:2*Nj-1+k % 10,11,...,15
% 18,19,...,23
% 58,59,...,63

% ae(i):
%%% %%% POWER LAW shema:
%%% % A(|Pe|)=max(0,(1-0.1*|Pe|))^5)
%%% if (1-0.1*abs(ro*ue(i)*deltay/De(i))).^5 > 0
%%% max1e(i)=(1-0.1*abs(ro*ue(i)*deltay/De(i))).^5;
%%% else
%%% max1e(i)=0;
%%% end
%%% % max(-Fe,0)
%%% if -ro*ue(i)*deltay > 0
%%% max2e(i)=-ro*ue(i)*deltay;
%%% else
%%% max2e(i)=0;
%%% end
%%% ae(i)=De(i)*max1e(i)+max2e(i);

%%% UPWIND
if (-ro*ue(i)*deltay) > 0
maxe(i)= - ro*ue(i)*deltay;
else
maxe(i)=0;
end
ae(i) = De(i) + maxe(i);
% aw(i):
%%% %%% POWER LAW shema:
%%% % A(|Pw|)=max(0,(1-0.1*|Pw|))^5)
%%% if (1-0.1*abs(ro*uw(i)*deltay/Dw(i))).^5 > 0
%%% max1w(i)=(1-0.1*abs(ro*uw(i)*deltay/Dw(i))).^5;
%%% else
%%% max1w(i)=0;
%%% end
%%% % max(Fw,0)
%%% if ro*uw(i)*deltay > 0
%%% max2w(i)=ro*uw(i)*deltay;
%%% else
%%% max2w(i)=0;
%%% end
%%% aw(i)=Dw(i)*max1w(i)+max2w(i);

%%% UPWIND:
if (ro*uw(i)*deltay) > 0
maxw(i)=ro*uw(i)*deltay;
else
maxw(i)=0;
end
aw(i) = Dw(i) + maxw(i);

% an(i):
%%% %%% POWER LAW shema:
%%% % A(|Pn|)=max(0,(1-0.1*|Pn|))^5)
%%% if (1-0.1*abs(ro*vn(i)*deltax/Dn(i))).^5 > 0
%%% max1n(i)=(1-0.1*abs(ro*vn(i)*deltax/Dn(i))).^5;
%%% else
%%% max1n(i)=0;
%%% end
%%% % max(-Fn,0)
%%% if -ro*vn(i)*deltax > 0
%%% max2n(i)=-ro*vn(i)*deltax;
%%% else
%%% max2n(i)=0;
%%% end
%%% an(i)=Dn(i)*max1n(i)+max2n(i);

%%% UPWIND:
if (-ro*vn(i)*deltax) > 0
maxn(i)= -ro*vn(i)*deltax;
else
maxn(i)=0;
end
an(i)=Dn(i) + maxn(i);

% as(i):
%%% %%% POWER LAW shema:
%%% % A(|Ps|)=max(0,(1-0.1*|Ps|))^5)
%%% if (1-0.1*abs(ro*vs(i)*deltax/Ds(i))).^5 > 0
%%% max1s(i)=(1-0.1*abs(ro*vs(i)*deltax/Ds(i))).^5;
%%% else
%%% max1s(i)=0;
%%% end
%%% % max(Fs,0)
%%% if ro*vs(i)*deltax > 0
%%% max2s(i)=ro*vs(i)*deltax;
%%% else
%%% max2s(i)=0;
%%% end
%%% as(i)=Ds(i)*max1s(i)+max2s(i);

%%%% UPWIND
if (ro*vs(i)*deltax) > 0
maxs(i)=ro*vs(i)*deltax;
else
maxs(i)=0;
end
as(i)=Ds(i)+maxs(i);
end
end
% => KOEFICIJENTI aw,as,an,ae SU DEFINISANI.
%########################################################################
#

%########################################################################
#
%% GLAVNI KOEFICIJENT ap I SLOBODNI CLAN SISTEMA JEDNACINA bp
% Iz diskretizacija: Koeficijent ap je u opstem slucaju (vidi vjezbe):
% ap = ae+as+aw+an + ap0 - Sp*deltax*deltay;
% - kod stacionarnih problema nema ap0
% - ako izvorni clan S ne zavisi od zavisno promenjive "fi", onda je
% Sp nula.

% Sracunavanje po svim CV (u proracunskom dijelu domena)


% tj. za sve CV-e u unutrasnjosti (vidi mrezu):
ap = zeros(1,(Ni-1)*Nj-1); % ALOKACIJA
b = zeros(1,(Ni-1)*Nj-1); % ALOKACIJA
for k=0:Nj:Nj*(Ni-3)
for i=2+Nj+k:1:2*Nj-1+k
ap(i) = ae(i)+aw(i)+as(i)+an(i); % ukupno ap (glavni koeficijent)
b(i) = Sc*deltax*deltay; % slobodni clan (za pocetno fi)
end
end
%########################################################################
#

%########################################################################
#
%########################################################################
#
%########################################################################
#
%% RJESAVANJE SISTEMA ALGEBARSKIH JEDNACINA - GAUS SEIDELOVIM ITERATIVNIM
% SOLVEROM SA RELAKSACIJOM
%
% Iterativno resavanje sistema linearnih algebarskih jednacina.
% Algoritam je Gaus-Seidel sa relaksacijom

Rez = epsilon + 1.; % Normirani rezidual, nulta iteracija


rezidual = zeros(1,(Ni-1)*Nj-1); % Alokacija
brojac = 0.; % pomocni brojac iteracije
while Rez > epsilon % Kriterijum za prestanak iteriranja
brojac = brojac + 1. ;

%% GS GS GS GS GS GS GS GS GS GS GS GS GS GS GS GS GS GS GS GS
% SRCE SOLVERA: RACUNANJE PETLJOM PO SVIM CV (PRORACUNSKIM
% CVOROVIMA "P", VIDI SKICU U SKRIPTI), ZA SVAKU CV (BEZ
% CVOROVA NA GRANICAMA ), PO FORMULI:
% fi^(k+1)=omega*[(b + suma_i(a*(fi)^(k))i]/ap + (1-omega)*fi^(k),
% gdje je omega koef. relaksacije (izmedju 0 i 1):

for k=0:Nj:(Ni-3)*Nj
for i=2+Nj+k:1:2*Nj-1+k
fi(i)=omega*(b(i)+as(i)*fi(i-1)+aw(i)*fi(i-Nj)+an(i)*fi(i+1)+ae(i)*fi(i+Nj))./ap(i) + (1-omega)*fi(i);
end
end

%#####################################################################
% GRANICNI USLOV NA IZLAZNOJ "E" GRANICI JE NOJMANOV: grad(fi)*nE = 0.
% tj. VRIJEDNOST "fi" NA "E" GRANICI JEDNAKA JE VRIJEDNOSTIMA UZ GRANICU.
% Za izlazne (e) cvorove => fi(i)=fi(i-Nj) jer je (dfi/dx)e=0
for i= Nj*(Ni-1)+2:1:Ni*Nj-1 % 66,67,...,71
fi(i)=fi(i-Nj);
end
%#####################################################################
% KRAJ ITERACIONE SHEME (TEKUCE ITERACIJE)
%% GS GS GS GS GS GS GS GS GS GS GS GS GS GS GS GS GS GS GS GS

%############################################################
%RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
% Svi fi(i) su sada sracunati. Sada se moze odrediti vektor
% Reziduala: u k-toj iteraciji to je vektor ciji su elementi:
% Rp^(k) = b + suma(a_i*fi_i^(k))_susjedi - ap*(fip)^(k), tj.
% to je u (k)-toj iteraciji vektor sa, u principu, ne-nultim
% elementima. Iteriranjem se moduo njegovih elemenata smanjuje
% i tezi nuli.
% Koji element vektora je mjerodavan: (i) srednja vrijednost
% vektora, (ii) maksimalni element vektora, (ii) rms, i sl.
% Ovdje je usvojen maximalni element kao mjerodavan
Rez = 0.0; % Naziv za maximalni element i za normirani rezidual
for k=0:Nj:(Ni-3)*Nj
for i=2+Nj+k:1:2*Nj-1+k
% Ri =
rezidual(i)=abs(b(i)+as(i)*fi(i-1)+aw(i)*fi(i-Nj)+an(i)*fi(i+1)+ae(i)*fi(i+Nj)-ap(i)*fi(i));
%%% % 1. NACIN DA SE ODREDI MAXIMALNI ELEMENT (PO MODULU) U VEKTORU?
%%% if abs(rezidual(i)) > Rez
%%% Rez = abs(rezidual(i)); %Najveci se zove Rez
%%% end
end
end
% 2. NACIN DA SE ODREDI max(abs(Ri))
% KORISTECI MATLAB-ove funkcije:
Rez = max(abs(rezidual));
% VRIJEDNOST max(R) POSLE PRVE ITERACIJE
% BICE SACUVANA KAO Rez_1, RADI NORMIRANJA:
if brojac == 1.
Rez_1 = Rez; % Najveci rezidual, nakon 1.iteracije
end
% NEKA JE NORMIRANI REZIDUAL OZNACEN ISTOM
% OZNAKOM KAO MAKSIMALNI, PREPISIVANJEM
% PREKO:
Rez = Rez/Rez_1;
% MJERODAVNO ZA PREKID ITERIRANJA - KADA Rez < epsilon !!!
%RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
%############################################################

% GRANICNIK U SMISLU MAX. BROJA ITERACIJA KOJI DOPUSTAMO:


if brojac > MaxIter; % Gornja granica broja iteracija GS solvera
break
end
end % KRAJ GAUS-SEIDEL SOLVERA
%########################################################################
#
%########################################################################
#
%%
#########################################################################
########

%########################################################################
#########
%% CRTANJE GRAFIKA "fi"
% Treba resenje dobijeno u formi vektora "fi", dimenzije (1,Ni*Nj)
% pretvoriti u matricu dimenzija kako je i sama mreza, u skladu sa
% sintaksom funkcija za crtanje funkcije dvije promjenjive. Vidi prve
% casove vjezbi.
%***********************************************************************
% | |
% | |
for j=1:1:Ni % | (n) |
k=(j-1)*Nj; % |_____________|
for i=1:1:Nj % \ | \ |
FI(i,j)=fi(i+k); % \ | \ |
end % (w) \ | (domen) \ | (e)
end % Ly \ | \|
% \|____________|
% (s) Lx
%***********************************************************************
% (x,y) KOORDINATE TACAKA U KOJIMA JE DEFINISANA VRIJEDNOST "fi"
% To su: koordinate cvorova na ivicama i centara konacnih zapremina
% unutar domena.
x = cat(2,[0. deltax/2.],[3*deltax/2.0:deltax:(Lx-deltax/2.0)], [Lx]);
y = cat(2,[0. deltay/2.],[3*deltay/2.0:deltay:(Ly-deltay/2.0)], [Ly]);
[xp,yp] = meshgrid(x,y); % DOMEN (x,y) TACAKA

%Grafici rjesenja:
figure(1), pcolor(xp,yp,FI), shading faceted, colorbar('vert'),
title(' RJESENJE: \phi(x,y) \newline NA PRESJECIMA LINIJA NALAZE SE PRORACUNSKI
CVOROVI'),
xlabel('0<x<Lx'), ylabel('0<y<Ly'),
axis image

figure(2), surfc(xp,yp,FI), shading interp, material shiny, title('RJESENJE \phi=f(x,y)'),


xlabel('0<x<Lx'),
ylabel('0<y<Ly'),
zlabel('Vrijednost funkcije \phi');
axis square

figure(3), A=contourf(xp,yp,FI); clabel(A); colorbar('vert'),


title('RJESENJE \phi(x,y)'), xlabel('0<x<Lx'), ylabel('0<y<Ly'),
zlabel('Vrijednost \phi');
axis image

figure(4), pcolor(xp,yp,FI), axis square,shading interp,colorbar('vert'),


title('FUNKCIJA \phi U DOMENU'),
xlabel('0<x<Lx'),ylabel('0<y<Ly'),
axis image

figure(5), A = contour(xp,yp,FI);clabel(A), axis square,


title('FUNKCIJA \phi U DOMENU'),
xlabel('0<x<Lx'),ylabel('0<y<Ly'),
axis image
%%
########################################################################
break
% KRAJ PROGRAMA

%% IMA LI RAZLIKE IZMEDJU UPWIND I POWER LAW REZULTATA NA ISTOJ MREZI ?

fiupwind = fi;
% prethodno sacuvano:
load fipowerlaw.mat
fipowerlaw = fi;
RAZLIKA = (fiupwind - fipowerlaw)./fiupwind*100; %% [%]

% | |
for j=1:1:Ni % | (n) |
k=(j-1)*Nj; % |_____________|
for i=1:1:Nj % \ | \ |
FI(i,j)=RAZLIKA(i+k); % \ | \ |
end % (w) \ | (domen) \ | (e)
end % Ly \ | \|
% \|____________|
% (s) Lx

figure(111), pcolor(xp,yp,FI),
shading interp,colorbar('vert'),
title('RAZLIKA U % U DOMENU'),
xlabel('0<x<Lx'),
ylabel('0<y<Ly'),
axis image
%%%% R: Na mrezi 30X30: max. razlike je 0.016118596333645 [%]

You might also like