Vissza az előzőleg látogatott oldalra (nem elérhető funkció)Vissza a tananyag kezdőlapjára (P)Ugrás a tananyag előző oldalára (E)Ugrás a tananyag következő oldalára (V)Fogalom megjelenítés (nem elérhető funkció)Fogalmak listája (nem elérhető funkció)Oldal nyomtatása (nem elérhető funkció)Oldaltérkép megtekintése (D)Keresés az oldalon (nem elérhető funkció)Súgó megtekintése (S)

Modellezés és szimuláció / Szimulációs modellek a fizikában /7. Sejtautomata-elvű diffúziós modellek

Szimulációs modellek a fizikában

7. Sejtautomata-elvű diffúziós modellek

A diffúzió modelljének megalkotásakor már felmerült az a probléma, hogy a megfigyelt térrész növelésekor a megoldást kivárhatatlanul hosszú idő alatt kapjuk csak meg. Ez a probléma sokkal élesebben vetődik fel akkor, amikor a mozgás, az áramlás bonyolultabb szabályok szerint megy végbe. Ilyen esetekre gondolva dolgozzuk ki a következő – reprezentációs elveiben eltérő – modellt.

A modell: Osszuk fel a vizsgált térrészt azonos méretű cellákra (sejtekre)! Minden egyes sejtre meg fogjuk adni az állapotát (adott időpillanatban mennyi molekulát, energiát, egyéb elemi objektumot tartalmaz). A diszkrét keretmodellre építhetjük a sejtautomata típusú modelleket, az összes sejt párhuzamos (azonos időbeli) állapotváltozását fogjuk megadni.

Minden egyes sejt következő időpillanatbeli állapota függ egyrészt a saját állapotától, másrészt pedig szomszédai, valamilyen környezete állapotától (de a távolhatást nem engedjük meg).

Milyen cellákat tekintsünk szomszédosaknak? A választott időegységtől függően 4 vagy 8 szomszédot veszünk figyelembe, azaz lehetőségeink:

4 szomszéd esetén az oldalszomszédok a szomszédosak, 8 szomszéd esetén pedig a sarokszomszédok is.Szomszédos cellák 4, illetve 8 szomszéd esetén.

Legyen a négyzet oldalhosszúsága H, egy molekula időegység alatti átlagos úthossza K! Ekkor a négyzet oldalával szomszédos helyre 4*K*(H-K) helyről lehet lépni, míg a sarkával szomszédos helyekre K*K*π helyről. Ha K<<H, akkor ez utóbbi elhanyagolható az előbbi mellett. Ráadásul nem is vettük figyelembe, hogy a sarkok közelségében levő molekulák is nagyobb valószínűséggel lépnek át oldalsó, mint sarki szomszédba. Ebben az esetben tehát elég 4 szomszédot vizsgálni.

7.1. Homogén, izotróp diffúzió

Tartalmazza a sejttér régi állapotát az R(N,M) mátrix, az újat pedig az U(N,M)! A modellben nemnegatív (valós) számok fogják azonosítani az egyes sejtek állapotait, illetve -1 fogja jelölni azokat a sejteket, amelyek mintegy falat határoznak meg a sejttérben, azaz nem változhatnak, s rajtuk keresztül a mozgás sem történhet. Célszerű lesz kezdetben az a feltételezés, hogy sejtterünk szélein ilyen fal-sejtek találhatóak.

Ez a modell homogén és izotróp teret feltételez: a diffúzió sebessége helytől és iránytól független.

Az általános algoritmusban a szimulációs lépés a következő elemi lépésekből áll:

Szimulációs_lépés:

U:=R

Ciklus i=1-től N-ig

Ciklus j=1-től M-ig

Ha U(i,j) nem fal akkor Változás(i,j)

Ciklus vége

Ciklus vége

Eljárás vége.

A Változás azt jelenti, hogy a sejttér adott pontjára a környezetből anyag (energia) áramlik. Megadhatjuk az állapotátmenet függvényt, vagy pedig azt az algoritmust, amellyel ezt az átmenetet megvalósítjuk.

Változás(i,j):

Belépés(i,j,i-1,j)

Belépés(i,j,i+1,j)

Belépés(i,j,i,j-1)

Belépés(i,j,i,j+1)

Eljárás vége.

Minden egyes sejtből a teljes anyagmennyiség D-szerese fog kiáramlani 4 szomszédja közül bármelyikbe.

Belépés(i,j,k,l):

Ha U(k,l) nem fal

akkor U(k,l):=U(k,l)-D*R(k,l): U(i,j):=U(i,j)+D*R(k,l)

Eljárás vége.

Vissza a tartalomjegyzékhez

7.2. Inhomogén, izotróp diffúzió

Az általános esetben a diffúziós együtthatót sejtenként más-más függvénnyel kell számolnunk (D helyett D(x,y)), egyszerűbb esetben ez csak az egyik indextől függ (így pl. D(x,y)=D(y)).

Eredményként – bár lokálisan izotróp a kicserélődés, de az intenzitást tekintve inhomogén – globális anizotrópiát kaphatunk.

A legegyszerűbb módosítás a legbonyolultabb esethez tartozik:

Belépés(i,j,k,l):

Ha U(k,l) nem fal akkor U(k,l):=U(k,l)-D(k,l)*R(k,l)

U(i,j):=U(i,j)+D(k,l)*R(k,l)

Eljárás vége.

Gyakorlatilag többször fordul elő az, amikor a vizsgált tartomány (pl. vízszintes) sávos szerkezetű, és Si adja meg az i. tartomány felső határát. Jelöljük Do*Di-vel az i. tartományban a diffúziós együtthatót!

A valószerűbb esetekben a fenti algoritmusban a szomszédos helyről belépést a következőképpen módosítjuk:

Belépés(i,j,k,l):

i:=1; H:=S(i)

Ciklus amíg H>K

i:=i+1; H:=H+S(i)

Ciklus vége

D:=Do*D(i)

Ha U(k,l) nem fal

akkor U(k,l):=U(k,l)-D*R(k,l); U(i,j):=U(i,j)+D*R(k,l)

Eljárás vége.

Elképzelhető megoldás, hogy ebben az esetben is azt a változatot választjuk, amikor sorokhoz rendelünk diffúziós együtthatókat, s a korábbi, egyszerűbb algoritmust alkalmazhatjuk.

Megjegyzés

Ilyen szerkezetűek lehetnek például a talajvíz, illetve a talajvízben levő szennyező anyagok mozgásával, terjedésével kapcsolatos modellek.

Vissza a tartalomjegyzékhez

7.3. Homogén, anizotróp diffúzió

Ebben a módosításban a molekulák különböző irányokba nem azonos valószínűséggel léphetnek ki. Jelölje Di=Ki+D0 az i. irányba kilépő molekulák számát, ahol a változók:

Például lehetnek az irányfüggő komponensek és a diffúziós együttható a következő értékűek:

Itt a változást leíró eljárást fogjuk módosítani:

Változás(i,j):

Belépés(i,j,i-1,j,K1)

Belépés(i,j,i+1,j,K2)

Belépés(i,j,i,j-1,K3)

Belépés(i,j,i,j+1,K4)

Eljárás vége.

Ekkor a belépés a következő lehet:

Belépés(i,j,k,l,D):

D:=D0+D

Ha U(k,l) nem fal

akkor U(k,l):=U(k,l)-D*R(k,l); U(i,j):=U(i,j)+D*R(k,l)

Eljárás vége.

Vissza a tartalomjegyzékhez

7.4. Inhomogén, anizotróp diffúzió

Ebben a példában a diffúzió sebessége függjön a helytől és az iránytól is! Tehát D=D0*(Di+Ki), ahol Ki jelenti az irányfüggő, Di pedig a helyfüggő komponenst. Értelmezésük megegyezik az előző két modell értelmezésével.

Most a változást és a szomszédos helyről való belépést megvalósító eljárást is módosítjuk.

Változás(i,j):

Belépés(i,j,i-1,j,K1)

Belépés(i,j,i+1,j,K2)

Belépés(i,j,i,j-1,K3)

Belépés(i,j,i,j+1,K4)

Eljárás vége.

Belépés(i,j,k,l,D):

i:=1; H:=S(i)

Ciklus amíg H>K

i:=i+1; H:=H+S(i)

Ciklus vége

D:=Do*D(i)+D

Ha U(k,l) nem fal akkor U(k,l):=U(k,l)-D*R(k,l)

U(i,j):=U(i,j)+D*R(k,l)

Eljárás vége.

Vissza a tartalomjegyzékhez

7.5. Dinamikus inhomogenitás

Most a helytől függés bonyolultabban érvényesüljön! Minden egyes helynek legyen más a diffúziós együtthatója! A diffúziós együttható függjön az állapottól (koncentrációtól): D:=C*R(x,y)! Ekkor a szomszédos helyről belépés fog változni.

Belépés(k,l):

Ha U(k,l) nem fal akkor U(k,l):=U(k,l)-C*R(k,l)*R(k,l)

U(i,j):=U(k,l)+C*R(k,l)*R(k,l)

Eljárás vége.

Másik lehetőségünk, hogy nem a molekulák számától közvetlenül függ a diffúzió sebessége, hanem a cellák valamilyen állapotjellemzőjétől. Ezt a molekulák számával arányosan tudjuk kiszámolni, majd egy cella molekulaszámával normálhatjuk. Jelölje A(i,j) az (i,j) cella régi állapotjellemzőjét, B(i,j) pedig az újat (még nem normálva).

A szimulációs lépés programján is változtatni kell, a szomszédból való belépés mellett.

Szimulációs lépés:

U:=R

Ciklus i=1-től N-ig

Ciklus j=1-től M-ig

Ha U(i,j) nem fal akkor Változás(i,j)

Ciklus vége

Ciklus vége

Ciklus i=1-től N-ig

Ciklus j=1-től M-ig

Elágazás

U(i,j)>0 esetén A(i,j):=B(i,j)/U(i,j)

U(i,j)=0 esetén A(i,j):=0

Elágazás vége

Ciklus vége

Ciklus vége

Eljárás vége.

Belépés(i,j,k,l):

Ha U(k,l) nem fal akkor U(k,l):=U(k,l)-A(k,l)*R(k,l)

U(i,j):=U(i,j)+A(k,l)*R(k,l)

B(k,l):=B(k,l)-A(k,l)*R(k,l)

B(i,j):=B(i,j)+A(k,l)*R(k,l)

Elágazás vége

Eljárás vége.

Vissza a tartalomjegyzékhez

7.6. Forrás, nyelő

Az eddigi zárt modellünket alakítsuk át nyílt modellé, azaz a vizsgált rendszerbe léphessen be anyag, illetve távozhasson is belőle! A be-, illetve a kilépés tetszőleges pontokon végbemehet. A belépési pontokat nevezzük forrásnak, a kilépési pontokat pedig nyelőnek!

Forrás: minden időegységben F mennyiséggel növekszik (kívülről) az értéke.

Nyelő1: minden időegységben Q mennyiséggel csökken az értéke, ha lehet (a rendszeren kívülre távozik)

Nyelő2: minden időegységben értékének R-szeresével csökken az értéke (a rendszeren kívülre távozik)

(Ilyen jelenség pl. kút és a talajvíz, „forró” pontok - párolgás, ...)

Az algoritmusban a szimulációs lépés a következő lépésekből áll:

Szimulációs lépés:

U:=R

Források kezelése

Ciklus i=1-től N-ig

Ciklus j=1-től M-ig

Ha U(i,j) nem fal akkor Változás(i,j)

Ciklus vége

Ciklus vége

Nyelő1 kezelése; Nyelő2 kezelése

Eljárás vége.

Mindegyik forrás adott mennyiséggel megnöveli a forrás helyén levő anyag mennyiségét. Jelölje Fdb a források számát, F(Fdb) pedig a források adatait: Rekord(x,y,menny)!

Források kezelése:

Ciklus i=1-től Fdb-ig

U(F(i).x,F(i).y):= U(F(i).x,F(i).y)+F(i).menny

Ciklus vége

Eljárás vége.

Az 1-es típusú nyelő adott mennyiséggel csökkenti a nyelő helyén levő anyagmennyiségét, ha lehetséges.

Jelölje Nydb1 a nyelők számát, Ny1(Nydb1) pedig a nyelők adatait a forrásokhoz hasonló struktúrában: Rekord(x,y,menny)!

Nyelő1 kezelése:

Ciklus i=1-től Nydb1-ig

j:=Ny1(i).x; k:=Ny1(i).y

Ha U(j,k)>Ny1(i).menny akkor U(j,k):=U(j,k)-Ny1(i).menny

különben U(j,k):=0

Ciklus vége

Eljárás vége.

A 2-es típusú nyelő adott százalékkal csökkenti a nyelő helyén levő anyag mennyiségét, ha lehetséges.

Jelölje Nydb2 a nyelők számát, Ny2(Nydb2) pedig a nyelők adatait a már szokásos módon: Rekord(x,y,ki)!

Nyelő2_kezelése:

Ciklus i=1-től Nydb2-ig

j:=Ny2(i).x; k:=Ny2(i).y

U(j,k):=U(j,k)*(1-Ny2(i).k)

Ciklus vége

Eljárás vége.

Vissza a tartalomjegyzékhez

Új Széchenyi terv
A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszirozásával valósul meg.
Készült az "Országos koordinációval a pedagógusképzés megújításáért” című TÁMOP-4.1.2.B.2-13/1-2013-0007 pályázat keretében.
(ISBN 978-963-284-631-6)

A tananyag az ELTESCORM keretrendszerrel készült