= GUARDYAN (GPU Assisted Reactor Dynamic Analysis) = == 1. Working Copy == Ahhoz legyen egy working copy-d, létre kell hoznod awingen egy mappát, belelépned majd kiadni a következő parancsot: \\ ''svn co http : //localhost/svn/T DM CC_SDK/branches/qtv2 .'' \\ Ha egy másik ágat szeretnél fejleszteni, akkor értelemszerűen a TDMCC_SDK utáni részt kell módosítani. == 2. Környezeti változók beállítása == A forrásfájlok között található egy set_env fájl, mellyel be kell állítanunk fordításhoz és futtatáshoz a környezeti változókat, jelen esetben a cuda elérési útja van megadva. Futtatás és fordítás előtt ki kell adni a . ./set_env parancsot. == 3. Függőségek == Boost program options: 1.54 \\ CUDA: 8.0 \\ NVIDIA driver: 375.66 \\ GCC: 5.4.0 \\ Qt: 5.5.1 \\ == 4. Fordítás == A környezeti változók beállítása után (mely az adott terminálra vonatkozik csak) indíthatunk egy qtcreator-t és szerkeszthetjük, fordíthatjuk és debu- golhatjuk a programot. 5Parancssorból dolgozva a rebuild fájlt használva és a ./rebuild parancsot kiadva fordíthatjuk újra a kódot. Ez jelenleg négy parancsot tartalmaz: * colormake -f Makefile clean : törli a lefordított állományokat * colormake -f Makefile distclean : törli a generált Makefile-okat * qmake -r -spec linux-g++-64 CONFIG+="create_pc create_prl linkq_pkgconfig" : újra legenerálja a Makefile-okat a változtatások alapján. A CONFIG után az idézőjelbe egy debug-ot beszúrva a CPU és a GPU kód is debug módban fordul. * colormake -f Makefile -j 1 : lefordítja a programot az új Makefile-ok alapján. A -j opció megmondja a fordítónak, hogy hány CPU szálat használhat. A colormake, mint ahogy a neve is mutatja színezve jelöli a fordítás lépé- seit, így az error-ok és a warning-ok könnyebben megtalálhatóak. == 5. Alkalmazás futtatása == Az alkalmazás neve TDMCCApp64, melynek elkészült egy ''-f'' kapcsolója mellyel a program kivezetett beállításait módosíthatjuk újrafordítás nélkül. Az alkalmazás futtatásához a \\ ''TDMCCApp64 -f neutrontransport.cfg'' \\ parancsot kell kiadni, ahol a ''-f'' kapcsoló után beállításokat tartalmazó fájl neve áll. A programnak megadható a -g kapcsoló, melynek hatására grafikus kezelői felülettel indul a program. A forráskódok mellett található egy neutrontransport.cfg fájl, mely tartalmazza a lehetséges beállításokat: * ''output_file_name = output.txt'' : Időlépésenként a teljesítményt és annak szórását tartalmazó fájl. * ''number_of_neutrons = 4194304'' : A szimulálandó neutronok száma, jelenleg kettő egész számú hatványa lehet. * ''particles_per_thread = 8'' : A GPU-n egy szálan szimulált neutronok száma. * ''simulation_time = 1.0'' : Szimuláció hossza másodperc egységben. * ''length_of_time_step = 5e-4'' : Egy időlépés hossza másodperc egységben. * ''length_of_time_step_feedback = 5e-4'' : Egy szakasz hossza másodpercben. * ''sigma_a = 0.16382'' : Abszorpciós hatáskeresztmetszet 1/cm egységben. * ''sigma_t = 1.0'' : Teljes hatáskeresztmetszet 1/cm egységben. * ''sigma_f = 0.25'' : Hasadási hatáskeresztmetszet 1 cm egységben. * ''beta = 0.0065'' : Későneutron hányad. * ''lambda = 0.1115'': Későneutron csoport bomlási állandója 1/s egységben. * ''length_x = 5.0' : Geometria mérete az x-tengely mentén centiméter egységben. * ''length_y = 10.0'' : Geometria mérete az y-tengely mentén centiméter egységben. * ''length_z = 12.0'' : Geometria mérete az z-tengely mentén centiméter egységben. * ''length_r = 50.0'' : Geometria radiális mérete centiméter egységben. * ''splitlimit = 400.0'' : Trajektória felhasításának határa. * ''roulettelimit = 10.0'' : Orosz rulett határa. * ''roulette_restore_value = 10.0'' : Orosz rulett értéke. * ''device_index = -1'' : GPU eszköz indexe, -1 esetén automatikusan választ a szabad GPU-k közül. * ''volume_size_x = 64'' : Térfogat x-irányú felbontása. * ''volume_size_y = 64'' : Térfogat y-irányú felbontása. * ''volume_size_z = 64'' : Térfogat z-irányú felbontása. * ''create_volume = 0'' : Neutronsűrűség térfogati eloszlásának kimentése. Ha az értéke 1, akkor szakaszonként kimenti a program. * ''velocity_group1 = 2.2e5'' : Egy neutroncsoport esetén a neutron sebessége cm/s egységben. * ''velocity_group2 = 1.95e9'' : Kétcsoport közelítésben a második csoport neutronjainak sebessége cm/s egységben. * ''create_histogram = 0'' : Hisztogram készítési opció. Ha az értéke 1 akkor szakaszonként fájlba menti a program a neutronok súlyából készített hisztogramot. * ''histogram_size = 1024'' : A hisztogram osztásainak száma. * ''source_type = 0'' : Forrás indítása egyenletes eloszlásból (0 ) vagy koszinuszosból (1 ). * ''reflector = 1'' : Külső felület reflektáló (1 ), vákuum (0 ). * ''reactor = Box'' : Reaktor geometria alakja: Box (téglatest), Sphere (gömb) vagy Cylinder (henger) lehet az értéke. * ''print_history_period = 10'' : Neutron history kiírásának periódusa időlépés egységekben. * ''history_collision_length = 50'' : Egy history-ban kigyűjtött láncok ütközési hossza. * ''history_time = 1.0e-4'' : Egy history maximális időbeli hossza másodperc egységben. * ''number_of_energy_groups = 2'' : Energia csoportok száma, 1 vagy 2 lehet az értéke. * ''print_history_start = 99'' : Az értéke megmondja hogy a history kiírása hányadik szakasztól kezdődjön. A paraméterek sorrendje nem számít, a "#" jellel hagyhatunk figyelmen kívül egy beállítást, ekkor a program a default beállítást fogja használni erre az adott paraméterre, az egyenlőségjel megadása kötelező. == 6. Geometria leíró formátuma == == 7. Anyagi leíró formátuma == == 8. Grafikus felület == [[Image(gui_page1.png, 55%)]] [[Image(gui_page2.png, 55%)]] == 9. Tagek számozása == A létrehozás dátuma majd ponttal elválasztva az adott napon kiadott verzio száma: pl.: '''17.05.05.01''' 2017.május 5-én kiadott első verzió. == 10. Kimenetek formátuma == ** output.txt \\ Egy szöveges fájl, mely három oszlopot tartalmaz, az első oszlopban található a szakasz kezdetének időpontja a másodikban a leadott teljesítmény, a harmadikban pedig a teljesítmény szórása. ** volume_t*.raw \\ A neutronsűrűség térbeli eloszlása a .cfg fájlban megadott volume_size_x, volume_size_y, volume_size_z paramétereknek megfelelően. ** histogram_t*.txt \\ A súlyokból képzett histogram_size méretű hisztogramot tartalmazó fájl. ** history_t*.raw \\ Bináris fájl a neutronok történetéről. A fájl egy fejléccel kezdődik mely tartalmazza a neutronok számát (unsigned long long) és az egy neutronhoz tartozó tulajdonságok számát (unsigned int). A fejléc után az abban megadott számú neutron adatai következnek a következő sorrendben: neutron lánc indexe (unsigned int), reakció típúsa (char), x-koordináta (float), y-koordináta (float), z-koordináta (float), időpont (float), súly (float). A reakció típusa azt mondja meg, hogy a neutron az adott lépésben milyen reakcióban vett részt, hasadásban (f ), elasztikus szórásban (e), inelasztikus szórásban (i) vagy prekurzorrá vált (p). ** material_volume.raw \\ Anyagindexeket tartalmazó térbeli eloszlás a .cfg fájlban megadott volume_size_x, volume_size_y, volume_size_z paramétereknek megfelelően. == 11. Egyéb == * [wiki:resztvevok A projektben résztvevők] * [wiki:hasznos Hasznos tudnivalók] * [wiki:ubuntu Ubuntu]