Matlab Hogyan - Hidrodinamikai Rendszerek Tanszék
Matlab Hogyan - Hidrodinamikai Rendszerek Tanszék
Matlab Hogyan - Hidrodinamikai Rendszerek Tanszék
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