Fizikai szimulációk

Végeselem módszerek

Alkalmas lehet például az alábbiak modellezésére:

  • folyadékok,
  • tűz, füst,
  • rezgések (hang), elektromágneses hullámok (fény) terjedése,
  • áramlás.

Alkalmas két- vagy többdimenziós szimuláció készítésére is.

Részecske alapú módszerek

Egy részecskét jellemezhetnek például az alábbiak.

  • Középpont (center): \((c_x, c_y) \in \mathbb{R}^2\)
  • Sugár (radius): \(r \in \mathbb{R}\)
  • Sebesség (velocity): \((v_x, v_y) \in \mathbb{R}^2\)
  • Tömeg (mass): \(m\)

Egy egyszerű fizikai modellre egy részecskékre a következők hatnak:

  • gravitáció,
  • más részecskékkel vagy fallal való ütközésből származó erő,
  • tehetetlenség.

Erők számítása

Az előbbieket egymástól függetlenül számíthatjuk, majd a részecskére ható erőt ezek eredőjeként kapjuk.

Számítások optimalizálása

  • A részecskékre alkalmazhatunk valamilyen térpartícionálási módszert a hatékonyabb ütközésvizsgálat érdekében.
  • A részecskéket külön számítási egységekhez rendelhetjük (akár index alapján).
  • Feltételezhetjük, hogy minden részecske állapotát csak egyszerre tudjuk frissíteni. (A következő iteráció számításához minden adat egyidejűleg elérhető, így a részecskék függetlenül kezelhetők.)

Cella alapú módszerek

A szimulációban a cellák helyzetét rögzítettnek tekintjük, és a cellákhoz tartozó jellemzőket változtatjuk.

Párhuzamosítás

A párhuzamosításra itt is az ad lehetőséget, hogy feltételezhetjük, hogy minden cella állapotát az előző iteráció alapján egymástól függetlenül számíthatjuk.

Háromszögekre bontás

A szimulációkban a celláknak nem szükségszerű négyzeteseknek lenniük.

Delaunay háromszögesítés

  • Boris Delaunay, 1934.
  • Flip method
  • Bowyer-Watson algoritmus

Forrás:

Kérdések

  • Milyen előnyei és hátrányai lehetnek a folyadékok részecske és cella alapú módszerrel történő szimulációjának?
  • Részecske alapú szimulációnál miből adódik a remegés? Hogyan lehet kiküszöbölni?
  • Milyen alkalmazási területei lehetnek (a szimuláción túl) a háromszögesítésnek?
  • Milyen komplexitást tudunk elérni (elvi szinten) térpartícionálási módszer használatával az ütközésvizsgálat optimalizálása érdekében?

Feladatok

1. Részecske alapú folyadék szimuláció

  • Definiáljuk a részecskét, mint struktúrát C-ben!
  • Tegyük megjeleníthetővé a részecskerendszer állapotát!
  • Implementáljuk a részecskék mozgásának a számításait!
  • Végezzünk méréseket részecskeszám függvényében egy iteráció számítási idejére vonatkozóan!
  • Térpartícionálási módszerrel tegyük hatékonyabbá a részecskék ütközésének számítását!
  • Oldjuk meg, hogy OpenCL segítségével több részecske új pozícióját is egyidejűleg tudjuk számolni!

2. Cella alapú folyadék szimuláció

  • Definiáljunk egy diszkrét rácsfelbontást!
  • Adjunk meg szabályokat, amelyek figyelembe tudják venni, hogy egy cellában mennyi folyadék van, és hogy hat rá a gravitáció!
  • Tegyük megjeleníthetővé az eredményeket!
  • A cellákhoz tartozó számításokat végezzük el párhuzamosan OpenCL segítségével!