Feladat: I.411 Korcsoport: - Nehézségi fok: -
Füzet: 2016/október, 422 - 423. oldal  PDF  |  MathML 

A szöveg csak Firefox böngészőben jelenik meg helyesen. Használja a fenti PDF file-ra mutató link-et a letöltésre.

Folyadékok síkbeli modellezésére diffúziós keretmodellt használhatunk. Ennek a lényege: legyen T[N,M] kétdimenziós táblázat kétféle számmal (0,1) véletlenszerűen feltöltve. Az 1 a molekulát és a 0 az üres helyet jelenti. A táblázat egy-egy véletlenszerűen kiválasztott molekulájával elemi esemény történhet, amelyet a Szimulációs lépés eljárással adunk meg.
Ha a T táblázat egy véletlenszerűen kiválasztott molekuláját annak szintén véletlenszerűen kiválasztott szomszédjával megcseréljük, akkor ennek az elemi műveletnek a nagyszámú ismételt végrehajtásával a gázok diffúzióját szimuláljuk. Ezt a modellt bővítjük a molekulák rövidtávú vonzásával, így a síkbeli folyadékmodellhez jutunk.

Szimulációs lépés:
    (i,j):=Véletlen hely(N,M)
    (k,l):=Véletlen szomszéd(i,j)
    Ha T[i,j]=1 és T[k,l]=0 és Szomszédszám(k,l) Szomszédszám(i,j)
        akkor Csere((i,j),(k,l))
Eljárás vége.

 

A Véletlen hely() függvény a T táblázat egy véletlenszerűen kiválasztott cellájának indexeit adja meg. A Véletlen szomszéd() függvény a paraméterként kapott cella véletlenszerű szomszédjának indexeit adja vissza. Lényeges, hogy ne válasszon a táblázaton kívüli helyet. A Csere() eljárás a paraméterként kapott két cella tartalmát cseréli meg.
 
 

A Szomszédszám() eljárás a paraméterként kapott hely közvetlen szomszédjainak molekulaszámát határozza meg.
Egyszerűbb módszert is készíthetünk a szomszédválasztásra (Véletlen szomszéd()), ha a T táblázatunkat körülvesszük fallal, 0-kal, amely nem hat a molekulák mozgására. Így a szomszédot a falban is választhatjuk, ha még egy külső falat hozunk létre pl. -10 értékekkel.
Készítsünk programot i411 néven, amely parancssori vagy grafikus felületen a folyadékok síkbeli modelljét bemutatja tetszőlegesen választott N és M értékekre.
A programban két beavatkozási lehetőség legyen: Megállítás/Folytatás és Kilépés.
Beküldendő egy tömörített i411.zip állományban a program forráskódja és rövid dokumentációja, amely megadja, hogy a forrásállomány melyik fejlesztői környezetben fordítható.