class: titlepage .title[ Nuclear local density of a given system ] .subtitle[ L. Melchior, T. Gennuso - ENSIIE - 2018 :ok_hand: ] --- layout: true class: animated fadeIn middle .footnote[ Nuclear local density - L. Melchior, T. Gennuso - ENSIIE - 2018 ] --- class: toc top # Table of content 1. Project Setup -- 1. What we do here ? -- 2. Vision and plotting based -- 3. Cascading Makefiles -- 2. Our Wonderful Code -- 1. Class -- 2. Plot Functions -- 3. The tough problems we solved -- 1. Factoriel precision -- 4. Results -- 1. 2D plots -- 2. 3D visualisation with povray --- class: middle # Project Setup - What we do here ? * We compute nuclear local density probabily for a given system -- * We were given data, we mix them and compute a probability density in a given volume -- * Basically, * choose a volume in our data * sum every probability density in it * you have the probability that a nuclear particule is in this chosen volume ??? Utiliser result3D.subcube(0,0,0, 3,3,3).sum() par exemple. --- # Project Setup - Vision and plotting based * Workflow focused on the results -- * Little optimisation -- * Use of "-O3" flag and little loop optimization -- * Less than a seconde -- * Enough to be Human friendly --- # Project Setup - Cascading Makefiles .tree.hcenter[ project_root * Makefile * /doc * Makefile * /src * Makefile * /test * Makefile * /povray * Makefile ] ??? Voici comment est organisée l'arborescence des Makefile de notre projet. -- * One make to build them all. ??? Permet de compiler le code et la doc avec seulement une seule commande dans le répertoire source. -- * But you do not lose your flexibility. ??? On peut aussi compiler seulement les sources depuis le dossier idoine, c'est plus confortable quand on travaille. -- * make work : do the work --- class: middle # Our Wonderful Code - Class .tree.hcenter[ main * Df3 convertion * savedata * LocDens * Basis * Poly * Laguerre matrix * Hermite matrix * all_cste.hpp ] --- # The Tough Problems We Solved - Factoriel precision * Factoriel produce huge number -- * Lead to long long int use -- * To avoid numerical loss, created a FactOnFact function for R part --- # The Tough Problems We Solved - 3D Visualisation * First approach using a custom representation of space, matrix and cube -- * Leads to incompatibility with provided function (for 3D plot) -- * We change everything in some function -- * We use linear approximation for a fastest plot --- # Results - 2D plots ## Global view .row[ .column.w40.middle[ ```gnuplot set title "Density of probability (large)" set terminal jpeg unset key set tic scale 0 unset cbrange #<-- set cblabel "Probability" unset cbtics set xrange [-20:20] set yrange [-10:10] interval1 = '(($1*40/64)-20)' interval2 = '(($2*20/32)-10)' set view map set pm3d interpolate 10,10 set output "graphs/HeatMapLarge.jpeg" splot "results/results_2D.dat" matrix using @interval1:@interval2:3 with pm3d ```] .column.w55.middle[ .hcenter.shadow[![](images/HeatMapLarge.jpeg)] ] ] --- # Results - 2D plots ## It is actually not all empty around .hcenter.shadow[![](images/HeatMapLog.jpeg)] --- # Results - 2D plots ## But in the center... .row[ .column.w40.middle[ ```pov set title "Density of probability (close-up)" set terminal jpeg unset key set tic scale 0 set cbrange [0.14:0.16] #<-- set cblabel "Probability" unset cbtics set xrange [-20:20] set yrange [-10:10] interval1 = '(($1*40/64)-20)' interval2 = '(($2*20/32)-10)' set view map set pm3d interpolate 10,10 set output "graphs/HeatMap.jpeg" splot "results/results_2D.dat" matrix using @interval1:@interval2:3 with pm3d ``` ] .column.w55.middle[ .hcenter.shadow[![](images/HeatMap.jpeg)] ] ] --- # Results - 3D with povray .hcenter.shadow.w90[![](images/visu_custom.png)]