Skip to the content.

HOME LAB OPJzM

FLUKA: START Primary Geometry Media Estymatory Problemy
ROOT Projekt VELO Projekt “Zasięg” Projekt “Źródła” Wyniki studentów    

Co to jest FLUKA?

FLUKA jest narzędziem ogólnego zastosowania, służącym do obliczeń transportu promieniowania i symulacji oddziaływania promieniowania z materią. FLUKA jest historycznym programem do projektowania osłon w reaktorach jądrowych, ale obecnie symulacje promieniowania we FLUCE przeprowadzane są wszędzie, gdzie mamy doczynienia z dużymimi strumieniami, począwszy od przestrzeni kosmicznej, a skończywszy na Eksperymentach Fizyki Wysokich Energii. Na początku roku 2020 ze starego projektu FLUKA został wyodrębniony osobny, wspierany przez CERN nowy projekt, którego zadaniem jest przygotowanie symulacji na nowe programy High Lumininosity Large Hadron Collider i Future Linear Collider.
Przykad możliwości Fluki można zobaczyć poniżej. Na rysunkach przedstawiono oddziaływanie wiązki protonów o energii 10 GeV z wodą i krzemowym sensorem (rozkład przedstawia energię zdeponowaną przez hadrony) oraz dawkę promieniowania zdeponowaną w materiale spektrometru LHCb.

"Dawka"

Może dziwić fakt, ale FLUKA napisana jest w języku Fortran, a użytkownik przeprowadza symulację wykorzystując przygotowane narzędzia, bez ingerencji w kod programu. Praca we Fluce odbywa się poprzez interfejs FLAIR. Interfejs FLAIR ułatwia edycję plików wsadowych, uruchomienie kodu i wizualizację plików wynikowych. Napisany został w oparciu o standard Tkinter Pythona.

Zakres możliwości aplikacyjnych programu FLUKA obejmuje mi.in. zderzanie wiązek protonów lub elektronów, projektowanie geometrii tarczy i zastosowanych osłon, obliczenia kalorymetryczne, dozymetryczne, projektowanie detektorów, planowanie radioterapii, itd. FLUKA pomaga symulować z wysoką dokładnością oddziaływania i propagację promieniowania w materii, z wykorzystaniem 60 różnych cząstek oraz odpowiadających im antycząstek, a także neutronów o energiach od energii termicznych. Program może również symulować transport fotonów spolaryzowanych (np. promieniowanie synchrotronowe) oraz fotonów optycznych. FLUKA ma możliwość śledzenia cząstek naładowanych (także w obecności pól elektrycznych i magnetycznych).
Szczegółowe informacje dotyczące programu FLUKA i FLAIR można znaleźć tutaj.

Jak rozpocząć pracę z programem FLUKA na WFiIS AGH?

Moja pierwsza symulacja

Praca w programie FLUKA polega na tworzeniu plików wsadowych (INPUT). Można go edytować w dowolnym edytorze, ale znacznie wygodniej używać do tego Flaira. Flair umożliwia stworzenie nowego pliku na podstawie wbudowanych szablonów symulacji: basic, decay, no geometry, itp porzez:

Input->New->basic

W ten sposób dostajemy podpowiedź, z czego powinien się składać plik inputowy i możemy go dostosować do własnego problemu.

Plik wsadowy INPUT jest tworzony w standardzie ASCII z rozszerzeniem .inp , input. Plik INPUT składa się z komend (opcji), każda z nich zawiera jedną lub więcej linii (z przyczyn historycznych nazywanych „kartami”). Poza komendami FLUKI plik wsadowy powinien także zawierać opis geometrii projektowanej symulacji. Typowa struktura pliku INPUT:

Poszczególne karty można traktować jak pojedyncze obiekty. Można je kasować, wstawiać, kopiować, wklejać, klonować, … Pozycja karty nie ma większego znaczenia. FLAIR stara się reorganizować plik Input podczas zapisywania i przesuwa karty na odpowiednie pozycje.
Karty z kategorii Geometry, powinny się znaleźć w bloku GEOBEGIN .. GEOEND.
Aby rozpocząć edycję karty, należy wybrać kartę za pomocą strzałek góra/dół lub za pomocą myszy. Karta aktywna ma podświetlone tło w jasnożółtym kolorze i czarną obramówkę. Można “podświetlić” kilka (takich samych) kart i wtedy zmienimy wszystkie karty (uwaga, żeby nie zmienić nazw estymatorów).

Nasze pierwsze kroki postawimy robiąc symulację przejścia wiązki protonów przez beczkę z wodą. Najlepiej tej plik skonstruować samemu, ale na pierwszy raz możemy posłużyć się gotowym przykładem. W tym celu we Flairze wczytujemy przygotowany input beczka.inp klikając w przyciski: Input->Load. Widok na konsoli powinien wyglądąć tak:

"FLAIR"

STOP

Tutaj proponujemy się zatrzymać i poeksperymentować. Zadanie na pierwsze ćwiczenia laboratoryjne polega na stworzeniu pliku inputowego, otrzymaniu kilku (pięciu?) rozkładów i dyskusji wyników.

Błędy w pliku inputowym

Podczas tworzenia inputu, popełnimy na pewno szereg błędów. Najpierw trzeba sprawdzić, czy Flair sam ich nie znalazł - zmieni kolor czcionki na czerwono, trzeba poprawić! Czasem w trakcie pisania pojawi się czerwonawe okienko sygnalizujące Error, patrzymy dlaczego i poprawiamy. Ale przeważnie błąd zauważymy w momencie wykonania symulacji, albo dopiero po - gdy oglądniemy wyniki. Jest to bardzo irytujące - w sytuacjach kryzysowych, zanim rzucisz klawiaturą, spojrzyj na: Pomocy!.
Jeżeli symulacja nie wykona się z powodu błędów, najlepiej wyjść z programu, nie zapisywać PROJEKTU FLAIR i rozpocząć symulację od nowa. Fluka ma swoje ograniczenia, czasem wynikające z jej fortranowskiego pochodzenia, ale czasem również z Gnuplota, którego Flair używa do tworzenia wykresów.

Wykonanie symulacji

Po stworzeniu pliku inputowego trzeba zapisać projekt Flair->Save i można rozpocząć symulację klikając:

Run->Runs->Start

Można zuważyć, że zadanie wykonuje się w tzw. cyklach - im większa liczba cykli, tym mniejsze niepewności statystyczne. Podczas wykonania możemy śledzić status zadania: "STATUS"

Po uzyskaniu wiadomości Finished OK możemy oglądnąć wyniki. Jeśli dostaniemy cokolwiek innego, np: TIMEOUT - mamy błąd w pliku inputowym (najczęściej: za dużo przedziałów w rozkładach 3D, brak kropki po liczbie całkowitej, niezdefiniowany materiał, region, itp). Wracamy do Input i zaczynamy analizę i poprawę pliku. Może się tu zdarzyć, że TIMEOUT ma przyczynę systemową - brak biblioteki. Staramy się to sprawdzać, ale historia nas nauczyła, że takie zdarzenia pojawiają się nieoczekiwanie.

Gdy jest Finished OK, kliknijmy na: Run->Files i Run->Data- zobaczymy pliki outputowe. Widać w nazwach numery jednostek logicznych, które zdefiniowaliśmy w pliku inputowym, zauważymy również, że Fluka zapisała wyniki OSOBNO dla każdego cyklu. Cykle można traktować, jak kolejne eksperymenty, czyli wraz z ich zwiększoną liczbą, zmniejszamy niepewności i wpływ fluktuacji statystycznych. W dodatku, jak symulacja się zawiesi - można wykorzystać skończone cykle Po zastanowieniu wydaje się to logiczne.

Musimy teraz połączyć wyniki. W tym celu klikamy Run->Data->Process i czekamy na zielone okienko informujące, ile i jakie pliki outputowe są łączone. Widok powinien być taki:

"PROCESS"

Błędy po wykonaniu symulacji

Chociaż symulacja skończyła się prawidłowo, możemy przy procesowaniu wyników dostać znowu czerwonawe okienko z Errors zamiast zielonego z sukcesem Data Merging. Błędy na tym etapie spowodowane są błędami w geometrii - np. obszar do Scoringu wykracza poza region w Geometry, albo regiony są źle nazwane lub zdefinowane, albo coś jest źle z zakresami rozkładów. Musimy to znaleźć sami i puścić symulację od nowa.

Może tutaj pojawić się błąd z Gnuplota - np, że ma za małą paletę barw. Wtedy administrator powinien zainstalować jego inną wersję. Może się również zdarzyć, że brakuje danych na rozkładzie - wtedy Gnuplot nie ma co wyświetlić. W tej sytuacji po prostu zwiększamy liczbę Primaries.

Gdy symulacja skończy się szybko i dostaniemy na końcu uspokajające potwierdzenie Finished OK, możemy nie zauważyć, że w rzeczywistości nic się nie wykonało. Na skutek niezauważonych błędów w Inpucie, symulacja się zakończyła bez wyników, ale zauważyć to można dopiero patrząc na Run->Files - w oknie będzie tylko numer jednego cyklu zamiast np. pięciu. Albo będzą wyniki wszystkich cykli, ale poprzedniej symulacji. Wtedy znowu wracamy do inputu i szukamy blędu…

Wykonanie rozkładów

Uff, już niedługo…
Klikamy Plot->Oz i widzimy listę stworzonych przez nas rozkładów. Feel free to click!
Proszę teraz przyjrzeć się informacjom wypisanym w oknie Flaira i przetestować wszystkie możliwe przyciski! Fluka ma naprawdę ogromne możliwości…

"PLOT"

Wskazówki praktyczne

Dyskusja wyników

Dzisiejsze laboratorium skończymy, gdy KAŻDY uczestnik dostanie rozkłady i omówi je z prowadzącym.

Dla dociekliwych

  1. Symulację można wykonć z konsoli, bez Flaira, komendą:
    rfluka -M 5 beczka
    
  2. Proszę oglądnąć (w edytorze lub Flairze: Run->Data->Files->Cycles->data->Viewer) pliki z wynikami. Co w nich jest? Jakie informacje? Jak zapisane? Czy po “wyklikaniu” rysunków nie mamy ochoty zrobić ich w innym programie?
    Zapraszamy zatem do konwersji wyników Fluki do ROOTa FLOOT
  3. Użytkownik Fluki nie może zmieniać źródeł (nawet ich oglądnąć), ale ma dostęp do wszystkich generowanych zmiennych, nawet tych, które nie są widoczne w standardowym procesingu. Do takich należą np. parametry wygenerownych cząstek wtórnych czy parametry śladów. Informacje o nich znajdują się w fortranowskich tablicach, zwanych COOMMONami i zdolny użytkownik może z nich zrobić rozkłady, patrz tutaj. Jest jakiś chętny/chętna do spróbowania?