Einar Hreinsson Einar Örn Jónsson Skúli Gunnar Árnason Heimaverkefni III Hitajafnan leyst fyrir eina rúmvídd í pólhnitum með Dirichlet, Neumann og Robin jaðarskilyrðum Háskóli Íslands Verkfræðideild Töluleg greining 18. apríl 8
Inngangur Verkefnið gengur út á að nálga lausnir á hitajöfnunni u cpρ ( λ u) = F (1) t í sívalningshnitum með almennum Robin jaðarskilyrðum og upphafsgildi í tíma. Hitajafnan lýsir hitastigi u í einsleitu efni þar sem c p [J/kg C] er eðlisvarmi ρ [kg/m 3 ] er eðlismassi λ [W/m C] er varmaleiðnistuðull F(x,y,z,t) [W/m 3 ] er sú varmaorka sem myndast í punktinum (x,y,z) á tíma t. Í verkefninu leysum við hitajöfnuna fyrir eina rúmvídd (radíus sívalnings, r) í pólhnitum. Við leysum hana fyrst óháð tíma og útfærum síðan tímaháða lausn. Í okkar tilfelli endum við því með u(r,t).
1 Pólhnit: almenna verkefnið Í þessum lið leysum við hitajöfnuna í sívalningshnitum, en látum hitastigið u vera óháð lengd sívalnings, z. Í sívalningshnitum er hitajafnan fengin með hnitaskiptum á jöfnu (1). Með x = rcosθ, y = rsinθ, θ = arcsin(y/x) og λ verður hitajafnan c p u u 1 u 1 u ρ λ + + F θ = t r r r r θ ( r, ) Við ætlum einungis að skoða lausnir sem eru óháðar horninu θ. Hitajafnan verður þá c u u 1 u pρ λ + = F t r r r ( r ) Almenna jaðargildisverkefnið er þá að leysa þessa jöfnu fyrir < r < R, og t > með tilliti til jaðarskilyrðanna u (, t) = r u α() t ( R, t) + β() t u( R,) t = γ() t r og upphafsskilyrðisins ur (,) = f() r. u r Neumann skilyrðið ( t), = er eina jaðarskilyrðið sem hægt er að nota í punktinum r=. Það sést 1 u af því að við höfum markgildið lim. Við getum notfært okkur reglu L Hôpital aðeins ef bæði r r r teljari og nefnari stefna á núll þegar r stefnir á núll. Eina jaðarskilyrðið sem uppfyllir það er Neumann. Þá fæst: u u 1 u lim lim r lim r u = = = (, t) r r r r r r 1 r
Jafnvægi u Þegar verkefnið okkar er í jafnvægi þá er tímaafleiðan jöfn núlli, þ.e. =. Þá verður t jaðargildisverkefnið u 1 u λ + = F( r) fyrir < r < R, t > r r r u ( ) = r u α ( R ) + β u ( R ) = γ r Við höfum Dirichlet skilyrði ef α=. Naumann skilyrði ef α=1 og β=. Robin skilyrði ef α og β. Neumann skilyrðið er innifalið í Robin skilyrðinu en við þurfum að líta sérstaklega á Diriclet skilyrðið því þar eigum við á hættu síðar að deila með α=. Ef við beitum nálgunaraðferðum þá fæst að jaðargildisverkefnið okkar er: v v + v 1 v v + + Fi ( Δr) λ i 1 i i 1 i 1 i 1 + + ri Δr = sem eftir umritun verður λ i+ 1 i i 1 i i i = Δ ( r) 1 1 1+ v v + 1 v + F () Þessi aðferð gefur okkur jöfnuhneppi með N+1 jöfnu sem skrifa má sem Av = b. Stuðlarnir við v in eru stök í þríhornalínufylkinu A og tákna stuðlar við v i 1 stök á neðri hornalínunni, táknað ld i, stuðlar við v i stök i á hornalínunni, táknað d i og stuðlar við v i+1 stök á efri hornalínunni, táknað ud i. Stökin í b eru svo gefin með F i. Þessi jafna gefur okkur þó ekki öll stökin í fylkið A né í vigrinum b, og endastökin
eru því reiknuð sérstaklega. Stökin sem vantar í A fylkið eru d 1, d N+1, ud 1 og ld N+1 og í b vigurinn vantar b 1 og b N+1. Til þess að finna d 1 og ud 1 þurfum við að notfæra okkur reglu L Hôpital sem var talað um í 1. hluta. Með hjálp hans verður jaðargildisverkefnið í upphafspunktinum u λ ( ) + F = r sem með miðsettum mismunakvóta í stað annarar afleiðunnar fæst v1 v + v 1 λ + F = ( Δr) u og þar sem = sem verður með nálgun r Við fáum með innsetningu 4λ v + v + F = ( ) ( ) Δr 1 v + v Δr 1 1 = v = v. 1 1 Í þessari jöfnu er d 1 stuðullinn við v, ud 1 er stuðullinn við v 1 og b 1 er F. Fyrir α= höfum við Dirichlet endapunktsskilyrðið en þá fást síðustu punktarnir með u = γ sem gefur v N = γ v γ = N Það gefur okkur d N+1 sem er stuðullinn við v N, ld N+1 er núll og b N+1 = γ. Fyrir α fást bæði Neumann og Robin endaskilyrðin. Við höfum þá α u + u r β = γ Með nálgunaraðferðum fæst v v + = Δr N+ 1 N 1 α βvn γ
sem umritast í β γ vn+ 1 = Δ r vn + vn 1+ Δr α α Ef við stingum þessu inn í jöfnu () fæst λ β 1 λ γ 1 r 1 1 v v Δ + + 1 1 α N + N N + + + F = Δr α N N Δ ( r) þar sem stuðullinn við v N gefur okkur d N+1, stuðullinn við v N 1 gefur okkur ld N+1 og afgangurinn gefur okkur b N+1. Við ætlum að leysa þetta verkefni með α = β = λ = 1, γ = og () r = J ( μ r) + J ( μ r) + J ( r) F μ3 þar sem μ = 1. 1 5578371, μ = 4. 79477711 og μ 3 = 7. 155799175. Þetta var sett upp í Matlab og má sjá forritunarkóðan í enda þessa kafla. Rétt lausn er gefin með 1 1 1 F r J r J r J r μ μ μ ( ) = + ( μ ) + ( μ ) + ( μ ) 3 1 3 Á grafi 1 má sjá nálgunarlausn og rétta lausn bornar saman með 8 nálgunarpunktum. Þetta er frekar gróft og munar nokkru. Á grafi má sjá betri nálgun sem gerð er með 1 punktum. Þessi nálgun er það góð að ferlarnir falla hvor ofan í annan. Á grafi 3 má sjá mismuninn á réttu gildi og nálgunargildinu sem er teiknað á grafi. Hér sést vel að með því að minnka skrefastærðina fæst lausn sem fellur betur að réttu gildi. Á grafinu sést að skekkjan er mest í miðjum sívalningnum en minnkar út til jaðarsins. Þegar nálgunin er reiknuð með 1 gildum er mesta frávik frá réttu gildi 3,8 1 5 sem við teljum ásættanlegt.
.75.7 Nálgun Rétt gildi.65 Hitastig [ C].6.55.5.45.4.35..4.6.8 1 Fjarlægð frá miðju [m] Graf 1 Lausn tímaóháða jaðargildisverkefnisins, nálguð með 8 punktum og borin saman við rétt gildi..75 4 x 1 5 Hitastig [ C].7.65.6.55.5.45.4 Mismunur nálgunar og réttra gilda [ C] 3.5 3.5 1.5 1.35..4.6.8 1 Fjarlægð frá miðju sívalnings [m].5..4.6.8 1 Fjarlægð frá miðju sívalnings [m] Graf Hér er lausn verkefnisins reiknuð með 1 punktum ásamt réttum gildum. Ferlarnir virðast falla fullkomlega ofan í hvorn annan. Graf 3 Fjarlægð réttra gilda frá nálgun fyrir 1 punkta. Forrit % Reiknar nálgunarlausn á hitajöfnunni sem fall af radíus, óháð tíma. % Skilar fylkinu A, vigrinum b og nálgunarlausninni á hitastiginu v. % L er lambda, N er fjödi radíusbila, R er radíus, alfa, beta og gamma % Eru stuðlar fyrir endaskilyrðið og nr vísar í hvaða hitauppsprettufall á % að nota function [A,b,v] = vigrar(l,n,r,alfa,beta,gamma,nr)
% Radíusskref og mu reiknað og b upphafsstillt dr=r/n; mu=l/(dr^); b=[]; % Fyrsta stakið í d og ud í A d=-4*mu; ud=-d; % Öll stökin sem eftir eru í A nema d_n+1 og ld_n ind=1:n-1; ud=[ud mu*(1+1./(*ind))]; d=[d -*mu*ones(1,length(ind))]; ld=mu*(1-1./(*ind)); % b reiknað j=linspace(,r,n+1); for i=1:n b=[b F(j(i),nr)]; end % d_n+1, ld_n og b_n+1 reiknað skv. skilyrðunum alfa, beta og gamma if alfa== d=[d 1]; ld=[ld ]; b=[b -gamma]; elseif alfa ~= d=[d mu*(-*(dr*beta/alfa*(1+1/(*n))+1))]; ld=[ld *mu]; b=[b (*L/dr*gamma/alfa*(1+1/(*N))+F(j(N+1),nr))]; end % Fylkið A sett saman úr d, ud og ld A=diag(d)+diag(ud,1)+diag(ld,-1); % Nálgunarlausnin reiknuð með hjálp tridiag.m v = tridiag(d,ud,ld,-b); % Þessi skrá geymir öll hitauppsprettuföllin og upphafshita. function f = F(i,nr) if nr==1 % Fyrir lið, dæmið á blaðinu a=1.5578371; b=4.79477711; c=7.155799175; f=besselj(,a*i)+besselj(,b*i)+besselj(,c*i); elseif nr == % Fyrir lið 3, dæmi 1.11 í bók. Upphafsskilyrði við tímann t= f=besselj(,.4485558*i); elseif nr== % Fyrir lið 3, og lið 4 er engin hitauppsretta. f=; end
3 Tímaháð verkefni Nú finnum við nálgun á lausninni urt (,) á almenna tímaháða verkefninu u u 1 u cpρ λ + = F( r) fyrir < r < R, t > t r r r u (, t) = r u α() t ( R, t) + β() t u( R, t) = γ () t r u( r,) = f ( r) með því að nota frammismuni og Crank Nicholson aðferð. Skoðum fyrst efstu jöfnuna hér að ofan. Með því að nota frammismuni getum skrifað hana á forminu w c ρ p w Δt ( n+ 1) ( n) ( n) = Aw + b Setjum Δt c = og leysum fyrir w (n+1), en þá fæst c ρ p ( n+ 1) ( n) w = ( I + ca) w +cb eða, með því að skilgreina ný stuðlafylki w ( n+ 1) ( n) = Ew +B Fyrir aðferð Crank Nicholson skoðum við sömu jöfnu og áður. Heildum hægri hlið jöfnunnar í tíma og notum trapisureglu. Þetta er leitt út Bradie (6:81) og gefur Δt c ρ + = ( + ) + ( + + ) ( n 1) ( n) ( n) ( n 1) w w Aw b Aw b p Skilgreinum t k = Δ c p ρ og leysum fyrir w (n+1), fáum 1 n ( ) ( ) ( = + ( n+ 1) ( ) w I ka I ka w k b )
Setjum nú 1 ( ),, ( ) D= I ka H = I ka K = k b og ritum w n = D( Hw + K) ( n+ 1) ( ) Gefið var að lausnin fyrir frammismun er stöðug ef eigingildið af E margfaldað við tímaskrefið er minna en eða jafnt einum. Við bjuggum til forrit í Matlab sem notar þessa niðurstöðu til að reikna nálgunarlausnir með þessum tveimur aðferðum. Við leystum dæmi 1.11 í Bradie en dæmið er upphafsgildisverkefnið u 1 u 1 u = +,, r R t > t 1 r r r u (, t) = r u( 1, t) = u( r, ) = J( kr) Þar sem J (kr) er besselfallið og k.4485558. Rétt lausn á þessu verkefni er ( k /1) t urt (,) = e J( kr). Á grafi 4 sést niðurstaðan teiknuð upp ásamt réttu gildi.
3 x 1 3.5 3 Crank Nicholson Fram mismunur Rétt gildi.5 Hitastig [ C] 1.5 1.5.5..4.6.8 1 Fjarlægð frá miðju [m] Graf 4 Nálgun með frammismun og Crank Nicholson aðferð ásamt réttum gildum. Eins og sjá má er þetta ágæt nálgun. Frammismunurinn virðist þó gefa betri nálgun en Crank Nicholson en stöðugleikinn er þó vafamál. Á gröfum 5 8 sjást nokkrar nálganir með frammismunaaðferð fyrir mismunandi tímaskref. Stöðugleikinn virðist vera nokkuð góður þar til tímaskrefið fer niður fyrir Δt = 1/8 og verður lausnin þá óstöðug en þá er λ = 1/ sem í Matlab er eig(e)*tímaskref>1.
Δt=1/14 Δt=1/1 3.5 x 1 3 3.5 x 1 3 3 3.5.5 Hiti [ C] 1.5 Hiti [ C] 1.5 1 1.5.5.5..4.6.8 1 Fjarlægð frá miðju [m].5..4.6.8 1 Fjarlægð frá miðju [m] Δt=1/1 Δt=1/8 3.5 x 1 3 1 x 1115 3 1.5 8 6 Hiti [ C] 1.5 Hiti [ C] 4 1.5.5..4.6.8 1 Fjarlægð frá miðju [m] 4..4.6.8 1 Fjarlægð frá miðju [m] Gröf 5 8 Hitastig sem fall af fjarlægð frá miðju, reiknað með misstórum tímaskrefum. Forrit % Reiknar nálgunarlausn á hitajöfnunni sem fall af radíus, háð tíma. % Skilar fylki þar sem í hverjum dálki er nálgun á hitanum sem fall af radíus % fyrir þann tiltekinn tíma. % L er lambda, N er fjödi radíusbila, R er radíus, alfa, beta og gamma % Eru stuðlar fyrir endaskilyrðið og nr vísar í hvaða hitauppsprettufall á % að nota function w=timavigrar(l,n,r,alfa,beta,gamma,cn,nr) % Fylkið A og b reiknað til að finna sambandið milli radíuspunktanna % og hitastigsins [A,b,v] = vigrar(l,n,r,alfa,beta,gamma,nr); % Radíusskrefið reiknað. Í lið 3 er Cp=rho=1. % Við viljum ath stöðuna við tímann t=1 cp=1; rho=1; dr=r/n; I=(eye(length(b)));
t=1; w=[]; for i=1:n+1 w=[w F((i-1)*dr,)]; end w=w'; if CN == % Fram-mismunur % Tímaskrefið reiknað dt=(dr^)/4/l; % dt=1/8; % Af-kommentað til þess að fá óstöðugu myndina á bls 857 c=dt/cp/rho; % Þessi fylki eru reiknuð hér til þess að spara reikniaðgerðir E=I+c*A; B=c*b'; % Nálgunin í hverju tímaskrefi reiknuð for i=1:(1/dt*t) w=[w E*w(:,end)+B]; end else % Crank-Nicholson % Tímaskrefið uppgefið í dæminu dt=1/3; k=dt/cp/rho/; end % Þessi fylki eru reiknuð hér til þess að spara reikniaðgerðir D=I-k*A; H=I+k*A; KB=*k*b'; for i=1:(1/dt*t) w=[w inv(d)*(h*w(:,end)+kb)]; end
4 Kjöthitamælir Í þessum hluta er ætlunin að nota reiknilíkönin hér að ofan til að reikna eldunartíma kjötstykkis í ofni. Við nálgum kjötið sem sívalning með radíus R og telst það eldað þegar hitinn í miðju kjötinu hefur náð ákveðnu viðmiðunarhitastigi. Þegar kjötið er sett inn í ofninn hefur það gefið upphafshitastig. Hitinn í ofninum er allstaðar jafn og við segjum að hitinn í endum kjötsins skipti ekki máli. Hitastigið í kjötinu er minnst eftir miðjum kjötsívalningum og er einungis háð fjarlægð frá miðju. Í verkefninu voru ákveðnar tölur gefnar fyrir varmaeiginleika og stærð kjötsins og ákváðum við að nota gildi sem samkvæmt okkar heimildum eru algeng fyrir kjöt. Radíusinn er miðaður við stærð á vænni nautalund. Radíus : R =.5m Eðlisvarmi: c = 76 J / k g C Eðlismassi: p ρ = 15 kg / 3 m Varmaleiðnistuðull: λ =.4 W / mc Þegar kjötið er sett í ofninn er hitinn í því allsstaðar 18 C, og ofninn við. Við kjósum okkar kjöt eldað medium rare sem þýðir að miðja þess nær um 6 C. Við finnum út (með ítrun) hve langan tíma tekur að elda kjötið og sýnum hvernig hitastigið breytist með tíma og fjarlægð frá miðju. Við skoðum líka hvenær hitinn í kjötinu nær jafnvægi. Eftirfarandi tímaháða upphafsgildisverkefni lýsir þessu dæmi. u u 1 u cpρ λ + fyrir r.5, = < < t > t r r r u (, t) = r u( R, t) = C u( r,) = 18 C Við nálguðum lausn á þessu verkefni í tíma með Crank Nicholson aðferð og tímaskrefi 1/3 eins og í dæmi 1.11 í Bradie sem við leystum hér á undan. Graf 9 sýnir hitastig kjötsins sem fall af radíus þegar miðja þess hefur náð 6 C. Það næst eftir sek eða 36 mín og 4 sek. Á mynd 1 má sjá nokkur eldunarstig sem fall af hitastigi.
18 16 14 Hitastig [ C] 1 1 8 6 4 4 6 8 1 Fjarlægð frá miðju [cm] Graf 9 Hitastig kjöts sem fall af fjarlægð frá miðju eftir s þegar miðjan hefur náð 6 C. 1 1 8 Well done >71 C Hitastig [ C] 6 Medium rare 6 C Raw <46 C 4 1 3 4 5 6 7 Eldunartími [mín] Graf 1 Hitastig miðju kjötsins sem fall af tíma og nokkur eldunarstig. Ekki er mælt með eldunarstiginu Raw af öryggisástæðum.
Til að ná miðju kjötsins upp í C með sjö markverðum tölustöfum þurfum við að hafa það í ofninum í 4886 sekúndur sem eru rúmlega 13 og hálf klst., en eftir þann tíma yrði kjötið líklega einungis brunarústir. Á grafi 11 má sjá hitastigið í miðju kjötsins teiknað upp sem fall af tíma. Þetta graf sýnir að ef kjötið er látið vera nógu lengi í ofninum þá verður hitinn í því jafn hitastigi ofnsins. Af skilyrðunum sem gefin voru í dæminu er því auðvelt að sjá að þá er hitinn orðinn C allsstaðar í kjötinu. Hitastig [ C] 18 16 14 1 1 8 6 4 5 1 15 5 3 35 4 45 Eldunartími [mín] Graf 11 Hitastig miðju kjöts sem fall af eldunartíma. Myndin sýnir að hitinn nær jafnvægi við C eftir u.þ.b. 35 mínútur. Við getum líka fundið jafnvægisástand þessa kerfis með því að setja stikana sem gefnir eru í dæminu fyrir kjötið inní forritið okkar fyrir jafnvægisástand. Það gefur okkur vigur sem inniheldur töluna í öllum sætum sem þýðir að hitinn í kjötinu er allsstaðar C eins og búist var við. Forrit % Kjöthitamælir. Reiknar hitastigið í kjötinu sem fall af radíus þess við % tímann sem þú tilgreinir (í sek). function w=kjot(n,gamma,nr,timi) L=.4; % Varmaleiðnistuðull [W/m C] R=.5; % Radíus kjötsins (sívalningslaga) cp=76; % Varmarýmd [J/kg C] rho=15; % Eðlismassi kjötsins [kg/m^3]
% Upphafs og endaskilyrði alfa=; beta=1; dr=r/n; dt=1; k=dt/cp/rho/; % Forritið vigrar notað til að reikna A og b við upphafstíman t= [A,b,v] = vigrar(l,n,r,alfa,beta,gamma,nr); % Fyrsti hitavigurinn reiknaður. Öll stökin 18 nema það síðasta sem er w=[]; for i=1:n+1 w=[w 18]; end w(end)=gamma; w=w'; % Þessi fylki eru reiknuð hér til þess að spara reikniaðgerðir I=(eye(length(b))); D=inv(I-k*A); H=I+k*A; KB=*k*b'; % Nálgunin fyrir hvert tímaskref reiknað. Við höfum einungis áhuga á % nýjasta gildinu og því geymum við ekki alla rununa. Þetta fækkar líka % reikniaðgerðum. wh=[]; for i=1:(1/dt*timi) w=d*(h*w(:,end)+kb); end % Þessi lína geymir hitastigið í kjarnanum yfir allan tímann wh=[wh w(1)]; % Teiknar upp hitastigið í kjarnanum sem fall af tíma plot((linspace(,timi,1/dt*timi)/6),wh)
Heimildir Bradie, Brian. 6. A friendly introduction to numerical analysis. Pearson education international. Glósur úr fyrirlestrum Elínborgar Ólafsdóttur í námskeiðinu Töluleg greining, Háskóla Íslands vor 8. http://www.engineeringtoolbox.com/specific heat capacity food d_95.html (sótt 17.4.8) http://www.angus.org/graphics/calf_standing.jpg (forsíðumynd) (sótt 18.4.8)
Einar Hreinsson Einar Örn Jónsson Skúli Gunnar Árnason