Algoritmul Barnes-Hut

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
O simulare de 100 de corpuri cu arborele Barnes - Hut reprezentat vizual de cutiile albastre.

Algoritmul Barnes - Hut , propus de Josh Barnes și Piet Hut [1] , este un algoritm de aproximare pentru efectuarea simulării corpului n . Este cunoscut pentru că are complexitate , spre deosebire de metoda exhaustivă care are ordine . [2]

Spațiul de simulare este de obicei împărțit în celule cubice printr-un octree (în spațiu tridimensional), astfel încât numai particulele din celulele vecine sunt tratate individual, în timp ce cele îndepărtate pot fi considerate ca o particulă mare situată în centrul de masă al celulei . ( sau ca o trunchiere a dezvoltării multipolare ). Acest lucru reduce dramatic numărul de interacțiuni dintre perechile de particule care urmează să fie calculate.

Unele dintre proiectele de înaltă performanță care necesită mult efort de calcul utilizează algoritmul arborelui Barnes-Hut în astrofizică de calcul [3], cum ar fi DEGIMA.

Algoritm

Arborele Barnes - Hut

Într-o simulare n- corp, algoritmul Barnes-Hut subdivizează recursiv corpuri în grupuri și le stochează într-un octree (sau un quad-copac în două dimensiuni). Fiecare nod al arborelui reprezintă o regiune a spațiului tridimensional. Rădăcina reprezintă întregul spațiu, iar cei opt copii ai săi indică cei opt octanți ai volumului. Spațiul este împărțit recursiv în octanți până când fiecare subdiviziune conține cel mult un corp (o anumită regiune nu are corp în niciunul dintre octanții săi). Există două tipuri de noduri în octree: nodurile interne și frunzele. Frunzele nu au copii și fie reprezintă un singur corp, fie sunt goale. Fiecare nod intern descrie în schimb grupul de corpuri de sub el, memorând centrul de masă și masa totală a tuturor corpurilor sale copil.

Galerie de imagini

Calculați forța care acționează asupra unui corp

Pentru a calcula forța rezultată pe un anumit corp, vizităm nodurile arborelui, începând de la rădăcină. Dacă centrul de masă al unui nod intern este suficient de departe de corp, toate particulele conținute în acea parte a copacului sunt tratate ca unul singur, a cărui locație și masă sunt centrul de masă și masa totală a nodului, respectiv. Dacă, pe de altă parte, nodul intern este suficient de aproape, procesul se repetă pe fiecare dintre copiii săi.

Dacă un nod este sau nu suficient de departe de un corp depinde de coeficient , unde este este lățimea octantei reprezentată de nodul intern, e este distanța dintre corp și centrul de masă al nodului. Nodul este suficient de departe dacă acest raport este mai mic decât o valoare prag . Parametrul determină acuratețea algoritmului; valori mai mari decât cresc viteza simulării, dar scad acuratețea acesteia. De sine , niciun nod intern nu este tratat ca o singură particulă și algoritmul degenerează în metoda exhaustivă a sumei directe.

Implementare

C.

Structură de copac scrisă pe C folosind structurile typedef și struct.

 typedef struct barnes {
// coordonatele nodului
dublu x , y ;
// masa nodului
masa dubla ;
// indicații către subarburi
struct barnes * NW , * NE , * SE , * SW ;
} barnes_t ;

Notă

  1. ^ J. Barnes și P. Hut, Un algoritm ierarhic de calcul al forței O ( N log N ) , în Nature , vol. 324, nr. 4, decembrie 1986, pp. 446-449, Bibcode : 1986 Nat . 324..446B , DOI : 10.1038 / 324446a0 .
  2. ^ Susanne Pfalzner și Paul Gibbon, Metode de copac cu multe corpuri în fizică , Cambridge Univ Press , 1996, pp. 2 -3, ISBN 978-0-521-49564-6 .
  3. ^ T. Hamada și colab. , Un nou algoritm paralel cu mai multe plimbări pentru codul de arbore Barnes-Hut de pe GPU - spre simulare rentabilă, de înaltă performanță a corpului N , în Comp. Sci. Res. Dev . Vol. 24, n. 1-2, 2009, pp. 21–31, DOI : 10.1007 / s00450-009-0089-1 .

Bibliografie

Elemente conexe

linkuri externe

Fizică Portalul fizicii : accesați intrările Wikipedia care se ocupă cu fizica