| #!/usr/bin/env -S gnuplot -c |
| outputfile = '' |
| datafilepre = '../dep_en_L/tmpdata/' |
| datafilepost = '.dat' |
| LS = ARG1 |
| |
| SPECIAL_L = 32 |
| ZOOMEDIN = 1 # Whether we want to include zoomed in graphs (1) or not (0) |
| USEHACK = 1 # In theory, due to the defaults of run.bash, SUI = 1900*150. But for L=96, we used other values, so setting USEHACK=1 gives a different value for SUMI(96). |
| |
| # COMPORTAMENT CRÍTIC (extret de l'anàlisi fet a l'informe): |
| TC = 2.268 |
| BETA = 0.13 |
| GAMMA = 1.77 |
| |
| # All LS except for 96, since it's low quality data. |
| PartialLS = system('LS="'. LS .'"; PartialLS=""; for L in $LS; do if [ $L -ne 96 ]; then PartialLS+="$L "; fi; done; echo $PartialLS') |
| |
| TERMINALS = "svg png tex" |
| |
| svgTerminal = "set terminal svg size 800, 800 font \"Computer Modern,Tinos,Helvetica,15\"; pointSize=0.5" |
| pngTerminal = "set terminal pngcairo size 800, 800 font \"Computer Modern,Tinos,Helvetica,15\"; pointSize=0.7" |
| texTerminal = "set terminal cairolatex size 8.5cm, 8.5cm; pointSize=0.7" |
| graphStyle = "with linespoints pointsize pointSize" |
| |
| SUMI(L) = (USEHACK ? (L == 96 ? 1400*16 : 1900*150) : 1900*150) |
| suffix(CHOOSEL) = (CHOOSEL == 0 ? '_ALLL' : (CHOOSEL == 1 ? '' : '_L' . SPECIAL_L)) |
| |
| set style line 101 lc rgb '#808080' lt 1 lw 1 |
| set border 3 front ls 101 |
| set tics nomirror out scale 0.75 |
| set linetype 99963 dashtype (6, 0, 0, 10) |
| set style line 102 lc rgb '#d6d7d9' lt 99963 lw 1 |
| set grid back ls 102 |
| |
| set xlabel "T" |
| set yrange [*<0:0<*] |
| # ------------------------------------ |
| # Gràfica per la capacitat calorífica: |
| # ------------------------------------ |
| set title "" |
| |
| # CHOOSEL can be: |
| # - 0: all Ls will be drawn |
| # - 1: all Ls except for 96 will be drawn |
| # - 2: only L=32 will be drawn |
| do for [CHOOSEL = 0:2] { |
| do for [TERM in TERMINALS] { |
| if (TERM eq "tex") { |
| @texTerminal |
| set ylabel '$c_V$' |
| title_1 = '$\frac{\text{Var}(e)}{T^2}$' |
| title_1alt = 'L = %d' |
| title_2 = '$\frac{d\langle e \rangle}{dT}$' |
| set key spacing 2 |
| } else { |
| set ylabel 'Capacitat calorífica' |
| title_1 = 'Var(e)/T^2' |
| title_1alt = 'L = %d' |
| title_2 = 'd<e>/dT' |
| set key spacing 1.25 |
| if (TERM eq "png") { |
| @pngTerminal |
| } else { |
| @svgTerminal |
| } |
| } |
| |
| set output outputfile.'capacitat_calorifica'.suffix(CHOOSEL).'.'.TERM |
| set yrange [*<0:0<*] |
| |
| if (CHOOSEL == 0) { |
| set yrange [0:2.6] |
| plot for [L in LS] datafilepre . L . datafilepost using 2:10 @graphStyle title sprintf(title_1alt, L+0) |
| } else { |
| if (CHOOSEL == 1) { |
| plot for [L in PartialLS] datafilepre . L . datafilepost using 2:10 @graphStyle title sprintf(title_1alt, L+0) |
| } else { |
| plot datafilepre . SPECIAL_L . datafilepost using 2:10 @graphStyle title sprintf(title_1, SPECIAL_L), \ |
| datafilepre . SPECIAL_L . '_derivada_E' .datafilepost using 1:($2/(SPECIAL_L**2)) with points pointsize 1.2*pointSize title sprintf(title_2, SPECIAL_L) |
| } |
| } |
| } |
| } |
| |
| set yrange [*<0:0<*] |
| set ylabel "" |
| |
| # ---------------------------------------- |
| # Gràfica per la susceptibilitat magnètica |
| # ---------------------------------------- |
| set title "" |
| |
| # CHOOSEL can be: |
| # - 0: all Ls will be drawn |
| # - 1: all Ls except for 96 will be drawn |
| # - 2: only L=32 will be drawn |
| do for [CHOOSEL = 0:3] { |
| set ylabel 'Susceptibilitat magnètica' |
| |
| @svgTerminal |
| set output outputfile.'susceptibilitat_magnetica'. suffix(CHOOSEL) .'.svg' |
| if (CHOOSEL == 0) { |
| set yrange [0:175] |
| plot for [L in LS] datafilepre . L . datafilepost using 2:11 @graphStyle title "L = ".L |
| } else { |
| if (CHOOSEL == 1) { |
| set yrange [0:75] |
| plot for [L in PartialLS] datafilepre . L . datafilepost using 2:11 @graphStyle title "L = ".L |
| } else { |
| set yrange [0:22] |
| plot datafilepre . SPECIAL_L . datafilepost using 2:11 @graphStyle lc 3 title '$\chi$' |
| } |
| } |
| |
| @pngTerminal |
| set output outputfile.'susceptibilitat_magnetica'. suffix(CHOOSEL) .'.png' |
| replot |
| |
| @texTerminal |
| set ylabel '$\chi$' |
| set output outputfile.'susceptibilitat_magnetica'. suffix(CHOOSEL) .'.tex' |
| replot |
| } |
| |
| set yrange [*<0:0<*] |
| |
| # -------------------------------------------------------------- |
| # Gràfica per la susceptibilitat magnètica (finite size scaling) |
| # -------------------------------------------------------------- |
| set title "" |
| |
| set xlabel 'L^{1/\nu} t' |
| set ylabel '\chi/(L^{\gamma/\nu})' |
| |
| set key spacing 1.25 |
| |
| @svgTerminal |
| set output outputfile.'susceptibilitat_magnetica_fss.svg' |
| plot for [L in PartialLS] datafilepre . L . datafilepost using (L*($2 - TC)/TC):($11/(L**GAMMA)) @graphStyle title "L = ".L |
| |
| @pngTerminal |
| set output outputfile.'susceptibilitat_magnetica_fss.png' |
| replot |
| |
| @texTerminal |
| set xlabel '$L^{1/\nu} t$' |
| set ylabel '$\chi/L^{\gamma/\nu}$' |
| set key spacing 1.66 |
| set output outputfile.'susceptibilitat_magnetica_fss.tex' |
| replot |
| |
| set key spacing 1.25 |
| set xlabel 'T' |
| |
| # --------------------- |
| # Gràfica per l'energia |
| # --------------------- |
| |
| # CHOOSEL can be: |
| # - 0: all Ls will be drawn |
| # - 1: all Ls except for 96 will be drawn |
| # - 2: only L=32 will be drawn |
| do for [CHOOSEL = 0:2] { |
| do for [TERM in TERMINALS] { |
| if (TERM eq "tex") { |
| @texTerminal |
| title_l = 'L = %d' |
| title_e = '$\langle e \rangle$' |
| title_sqrtee = '$-\sqrt{\langle e^2 \rangle}$' |
| set key spacing 1.66 |
| } else { |
| title_l = 'L = %d' |
| title_e = '<e>' |
| title_sqrtee = '-sqrt(<e^2>)' |
| set key spacing 1.25 |
| if (TERM eq "png") { |
| @pngTerminal |
| } else { |
| @svgTerminal |
| } |
| } |
| set output outputfile.'energia'.suffix(CHOOSEL).'.'.TERM |
| |
| set origin 0, 0 |
| set size 1, 1 |
| set xtics auto |
| set ytics auto |
| |
| if (ZOOMEDIN = 1) { |
| set multiplot |
| } |
| |
| unset object 1 |
| |
| set title "" |
| set xlabel "T" |
| if (TERM eq "tex" && CHOOSEL != 2) { |
| set ylabel '$\langle e \rangle$' |
| } else { |
| set ylabel "Energia per partícula" |
| } |
| set key bottom right |
| set key noopaque |
| set autoscale x |
| set yrange [*<0:0<*] |
| |
| if (TERM eq "tex") { |
| set ytics 0.5 |
| } |
| |
| if (CHOOSEL == 0) { |
| plot for [L in LS] datafilepre . L . datafilepost using 2:($3/(L**2)) @graphStyle title sprintf(title_l, L+0) |
| } else { |
| if (CHOOSEL == 1) { |
| plot for [L in PartialLS] datafilepre . L . datafilepost using 2:($3/(L**2)) @graphStyle title sprintf(title_l, L+0) |
| } else { |
| plot datafilepre . SPECIAL_L . datafilepost using 2:($3/(SPECIAL_L**2)) @graphStyle title sprintf(title_e, SPECIAL_L), \ |
| datafilepre . SPECIAL_L . datafilepost using 2:(-sqrt($4)/(SPECIAL_L**2)) @graphStyle title sprintf(title_sqrtee, SPECIAL_L) |
| } |
| } |
| |
| if (ZOOMEDIN = 1) { |
| if (TERM eq "tex") { |
| set origin 0.175, 0.575 |
| } else { |
| set origin 0.1, 0.525 |
| } |
| set size 0.6, 0.4 |
| set title "" |
| set xlabel "" |
| set ylabel "" |
| set key off |
| if (CHOOSEL != 2) { |
| set xrange [2.3:2.36] |
| set yrange [-1.5:-1.2] |
| if (TERM eq "tex") { |
| set xtics 0.03 |
| set ytics 0.15 |
| } |
| } else { |
| set xrange [2.35:2.4] |
| set yrange [-1.3:-1.2] |
| set xtics 0.025 |
| if (TERM eq "tex") { |
| set ytics 0.05 |
| } |
| } |
| set object 1 rectangle from graph 0,0 to graph 1,1 behind fillcolor rgb 'white' fillstyle solid noborder |
| replot |
| |
| unset multiplot |
| } |
| } |
| } |
| |
| set key spacing 1.25 |
| set origin 0, 0 |
| set size 1, 1 |
| set autoscale x |
| set yrange [*<0:0<*] |
| set xlabel "T" |
| set ylabel "" |
| set xtics auto |
| set ytics auto |
| unset object 1 |
| |
| # ---------------------------- |
| # Gràfica per la magnetització |
| # ---------------------------- |
| set title "" |
| |
| # CHOOSEL can be: |
| # - 0: all Ls will be drawn |
| # - 1: all Ls except for 96 will be drawn |
| # - 2: only L=32 will be drawn |
| do for [CHOOSEL = 0:2] { |
| do for [TERM in TERMINALS] { |
| if (TERM eq "tex") { |
| @texTerminal |
| title_m = '$\langle |m| \rangle$' |
| title_malt = '$L = %d$' |
| title_sqrtmm = '$\sqrt{\langle m^2 \rangle}$' |
| if (CHOOSEL == 2) { |
| set key spacing 2 |
| } else { |
| set key spacing 1.66 |
| } |
| } else { |
| title_m = '<|m|>' |
| title_malt = 'L = %d' |
| title_sqrtmm = 'sqrt(<m^2>)' |
| set key spacing 1.25 |
| if (TERM eq "png") { |
| @pngTerminal |
| } else { |
| @svgTerminal |
| } |
| } |
| |
| if (TERM eq "tex" && CHOOSEL != 2) { |
| set ylabel '$\langle |m| \rangle$' |
| } else { |
| set ylabel "Magnetització per partícula" |
| } |
| |
| set output outputfile.'magnetitzacio'.suffix(CHOOSEL).'.'.TERM |
| set key top right |
| if (CHOOSEL == 0) { |
| plot for [L in LS] datafilepre . L . datafilepost using 2:($7/(L**2)) @graphStyle title sprintf(title_malt, L+0) |
| } else { |
| if (CHOOSEL == 1) { |
| plot for [L in PartialLS] datafilepre . L . datafilepost using 2:($7/(L**2)) @graphStyle title sprintf(title_malt, L+0) |
| } else { |
| plot datafilepre . SPECIAL_L . datafilepost using 2:($7/(SPECIAL_L**2)) @graphStyle title sprintf(title_m, SPECIAL_L), \ |
| datafilepre . SPECIAL_L . datafilepost using 2:(sqrt($8)/(SPECIAL_L**2)) @graphStyle title sprintf(title_sqrtmm, SPECIAL_L) |
| } |
| } |
| } |
| } |
| |
| # -------------------------------------------------- |
| # Gràfica per la magnetització (finite size scaling) |
| # -------------------------------------------------- |
| set title "" |
| set ylabel "Magnetització per partícula" |
| |
| # CHOOSEL can be: |
| # - 0: all Ls will be drawn |
| # - 1: all Ls except for 96 will be drawn |
| # - 2: only L=32 will be drawn |
| do for [TERM in TERMINALS] { |
| if (TERM eq "tex") { |
| @texTerminal |
| set xlabel '$L^{1/\nu} t$' |
| set ylabel '$\langle |m| \rangle L^{\beta/\nu}$' |
| set key spacing 1.66 |
| } else { |
| set xlabel 'L^{1/\nu} t' |
| set ylabel '<|m|> L^{\beta/\nu}' |
| set key spacing 1.25 |
| if (TERM eq "png") { |
| @pngTerminal |
| } else { |
| @svgTerminal |
| } |
| } |
| |
| set output outputfile.'magnetitzacio_fss.'.TERM |
| set key top right |
| plot for [L in PartialLS] datafilepre . L . datafilepost using (L*($2 - TC)/TC):($7/(L**2)*(L**(BETA))) @graphStyle title sprintf('L = %s', L) |
| } |