17.04.2014 Views

Matlab Hogyan - Hidrodinamikai Rendszerek Tanszék

Matlab Hogyan - Hidrodinamikai Rendszerek Tanszék

Matlab Hogyan - Hidrodinamikai Rendszerek Tanszék

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

11. FEJEZET. PÉLDAPROGRAMOK 41<br />

kar.m<br />

function [puj,vuj]=kar(adatok,p,v,PF0_tipus,PF0_ertek,PFN_tipus,PFN_ertek)<br />

D = adatok{1}(1); % csoatmero<br />

L = adatok{1}(2); % csohossz<br />

N = adatok{1}(3); % csodarabok szama (csomopontok szama: N+1)<br />

a = adatok{1}(4); % hangsebesseg<br />

ro = adatok{1}(5); % suruseg<br />

g = 9.81;<br />

dx = L/N;<br />

dt = dx/a;<br />

roa = ro*a;<br />

dzdx = adatok{2};<br />

nu = 1e-6;<br />

lambda=0.02;<br />

for i=2:N<br />

ar = p(i-1)+ro*a*v(i-1);<br />

br = p(i+1)-ro*a*v(i+1);<br />

vuj(i) = (-2*dt*roa*g*dzdx(i)+ar-br)/roa/(2+dt*lambda/2/D*(abs(v(i+1))+abs(v(i-1))));<br />

puj(i) = ( -dt*roa*g*dzdx(i)+ar)-roa*(1+dt*lambda/2/D* abs(v(i-1)))*vuj(i);<br />

end<br />

% Peremfeltetelek beallitasa.<br />

perem_1 = p(2)-ro*a*v(2) + dt*roa*g*dzdx(1);<br />

perem_N = p(N)+ro*a*v(N) - dt*roa*g*dzdx(N+1);<br />

szorzo1 = roa*(1+dt*lambda/2/D*abs(v(2)));<br />

szorzoN = roa*(1+dt*lambda/2/D*abs(v(N)));<br />

switch PF0_tipus<br />

case ’p’<br />

puj(1) = PF0_ertek;<br />

vuj(1) = (puj(1)-perem_1)/szorzo1;<br />

case ’v’<br />

vuj(1) = PF0_ertek;<br />

puj(1) = perem_1 + ro*a*vuj(1);<br />

otherwise<br />

error(’Ismeretlen peremfeltétel!’);<br />

end<br />

switch PFN_tipus<br />

case ’p’<br />

puj(N+1) = PFN_ertek;<br />

vuj(N+1) = -(puj(N+1)-perem_N)/ro/a;<br />

case ’v’<br />

vuj(N+1) = PFN_ertek;<br />

puj(N+1) = perem_N-szorzoN*vuj(N+1);<br />

otherwise<br />

error(’Ismeretlen peremfeltétel!’);<br />

end

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!