diff --git a/README.md b/README.md index e0068c6269a89fce2df9123aeaaef4b25fe18e94..d5a70239dbf04bb9cc08a3af13fc4fe6a96c5f95 100644 --- a/README.md +++ b/README.md @@ -34,8 +34,8 @@ The functions of `rtrg_c` can be tested and benchmarked using `test.py` and `ben For best performance some parameters in the code should be adapted as explained in the code and in `doc/main.tex`. The best values for these parameters depends mainly on the size of the Floquet matrices and the number of available OMP threads. Enabling more parallelization may slightly improve performance for large matrices but significantly worsen the performance for small matrices. Note that `rtrg_c` works best with F-ordered numpy arrays, see `doc/main.tex` or (in python) `help(rtrg_c)`. -The experimental code for `rtrg_cublas` aims to provide the same functionality as `rtrg_c`, but uses CUBLAS (framework for nvidia GPUs) to speed up the matrix products. -Note that `rtrg_cublas` is probably less stable and can be much slower than `rtrg_c` if not configured correctly. +The highly experimental code for `rtrg_cublas` aims to provide the same functionality as `rtrg_c`, but uses CUBLAS (framework for nvidia GPUs) to speed up the matrix products. +Note that `rtrg_cublas` is outdated, less stable, and much slower than `rtrg_c` if not configured correctly. ### Floquet matrix classes The class `RGfunction` in `rtrg.py` provide a high-level interface for calculations with Floquet matrices including replicas with shifted energy argument in python. @@ -49,28 +49,13 @@ In `kondo.py` the framework of FRTRG is applied to the Kondo model. ## Performance The option `compact` is used to improve performance for the special case `method==J` with V(-t)=-V(t), `voltage_branches==0` and large `nmax`. -The options `use_reference_implementation`, `ignore_symmetries`, `enforce_symmetric` are only for testing. They are reduce the performance. +The options `use_reference_implementation`, `ignore_symmetries`, `enforce_symmetric` are only for testing. They reduce the performance. -The options `include_Ga` and `solve_integral_exactly` are not as optimized as the rest of the code and are partially incompatible with methods that improve performance. - -Some performance tests: -```sh -time OMP_NUM_THREADS=1 python gen_data.py --omega=16.5372 --method=mu --nmax=24 --vdc=33.0744 --vac=33.0744 --voltage_branches=4 --log_time=10 --d=1e9 --rtol=1e-8 --atol=1e-10 --save=all --threads=1 --log_level=DEBUG --filename=data/frtrg-trash-01.h5 ... -``` -Depending on the extra options the duration varies: - -| option | duration (s) | -| ------ | ------------ | -| none | 31.261 | -| `ignore_symmetries` | 54.652 | -| `include_Ga` | 63.09 | -| `include_Ga` `ignore_symmetries` | 74.89 | -| `solve_integral_exactly` | 96.48 | -| `solve_integral_exactly`, `ignore_symmetries` | 102.97 | -| `solve_integral_exactly`, `include_Ga` | 119.08 | -| `solve_integral_exactly`, `include_Ga`, `ignore_symmetries` | 122.82 | ## Versions +version 14.16: +* improved initial condition for dΛL/dE from linear response + version 14.15: * set Tk=1 in second order truncation diff --git a/tikz/convergence-o3-rel.tex b/tikz/convergence-o3-rel.tex index c8f5fdcae9682784fc82f743f1a45ed18fa13cca..27845517c1d27687db9edd0807c54213b835376c 100644 --- a/tikz/convergence-o3-rel.tex +++ b/tikz/convergence-o3-rel.tex @@ -65,7 +65,7 @@ line join=round }, clip = false, - legend entries = {without $G^a$, full RG equations}, + legend entries = {without $\smash{\Ga}$, full RG equations}, legend cell align = left, legend style = { legend pos = outer north east, diff --git a/tikz/convergence-o3.tex b/tikz/convergence-o3.tex index bf7d6724b437767840817f127ce7174026df5a2a..bb3f2f295b7e20aa5d43164895c59a143533cc37 100644 --- a/tikz/convergence-o3.tex +++ b/tikz/convergence-o3.tex @@ -65,7 +65,7 @@ line join=round }, clip = false, - legend entries = {without $G^a$, full RG equations}, + legend entries = {without $\smash{\Ga}$, full RG equations}, legend cell align = left, legend style = { legend pos = outer north east, diff --git a/tikz/convergence-o3a-rel.tex b/tikz/convergence-o3a-rel.tex index f2217d4f502c4b54223e9e95cdd2c70d87111527..19133828c798a2198eda2704fa21da547d8f3fbd 100644 --- a/tikz/convergence-o3a-rel.tex +++ b/tikz/convergence-o3a-rel.tex @@ -65,7 +65,7 @@ line join=round }, clip = false, - legend entries = {approx.~integral, full RG equations}, + legend entries = {approximated integral, full RG equations}, legend cell align = left, legend style = { legend pos = outer north east, diff --git a/tikz/convergence-o3a.tex b/tikz/convergence-o3a.tex index 90ce6220f7f290ce1d03adc972fb200563832514..2edbd98a54a7d2aaad1e3e92fecda9a6de45e2e2 100644 --- a/tikz/convergence-o3a.tex +++ b/tikz/convergence-o3a.tex @@ -65,7 +65,7 @@ line join=round }, clip = false, - legend entries = {approx.~integral, full RG equations}, + legend entries = {approximated integral, full RG equations}, legend cell align = left, legend style = { legend pos = outer north east, diff --git a/tikz/convergence-o3a_ispline.tex b/tikz/convergence-o3a_ispline.tex index 93e34fc4b044a39547b26ec96e2d0d05af705e61..5c240afc26d36ed98a013628a7404cd3f7674d91 100644 --- a/tikz/convergence-o3a_ispline.tex +++ b/tikz/convergence-o3a_ispline.tex @@ -65,7 +65,7 @@ line join=round }, clip = false, - legend entries = {from $\Gamma^\gamma$, from $\delta\Gamma^\gamma$}, + legend entries = {from $\smash{\hat\Gamma^\gamma}$, from $\delta\smash{\hat\Gamma^\gamma}$}, legend cell align = left, legend style = { legend pos = outer north east, diff --git a/tikz/current_convergence_all.tex b/tikz/current_convergence_all.tex index 8857e16652b729c1abf7a02648c9cb11f631d427..831f421737d5fb6a4925e66797b3debbc8035ebc 100644 --- a/tikz/current_convergence_all.tex +++ b/tikz/current_convergence_all.tex @@ -1,10 +1,10 @@ \tikzsetnextfilename{current_convergence_all}% -\newcommand\imgsize{32mm}% +\newcommand\imgsize{29mm}% \begin{tikzpicture} \begin{axis}[ name = idc, title = $I_\mathrm{avg}$, - title style = {yshift = -2mm}, + title style = {yshift = -2.55mm}, height = \imgsize, width = \imgsize, scale only axis, @@ -21,8 +21,8 @@ at = (idc.south), anchor = north, title = $I_\mathrm{osc}$, - title style = {yshift = -2mm}, - yshift = -8mm, + title style = {yshift = -2.2mm}, + yshift = -7mm, height = \imgsize, width = \imgsize, scale only axis, @@ -39,7 +39,7 @@ name = idc_diff, at = (idc.east), anchor = west, - xshift = 4mm, + xshift = 5mm, %title = {$|I_\mathrm{avg}(\Lambda_0=10^9\tkrg) - I_\mathrm{avg}|/I_\mathrm{avg}$}, %title = {relative deviation at $\Lambda_0=10^9\tkrg$}, title = {good initial condition}, @@ -59,7 +59,7 @@ name = iac_diff, at = (iac.east), anchor = west, - xshift = 4mm, + xshift = 5mm, %title = {$|I_\mathrm{osc}(\Lambda_0=10^9\tkrg) - I_\mathrm{osc}|/I_\mathrm{osc}$}, %title style = {yshift = -2mm}, height = \imgsize, @@ -175,5 +175,6 @@ ] \addplot graphics[ymin=0, ymax=1, xmin=0, xmax=0.0534487] {../figdata/colorbar_viridis_horizontal.png}; \end{axis} - \node[xshift=2mm, yshift=9mm] at (idc_diff.north east) {relative deviation at $\Lambda_0=10^9\tkrg$ from $\Lambda_0=\infty$}; + \node[yshift=8mm] at (idc.north) {current}; + \node[xshift=2mm, yshift=8mm] at (idc_diff.north east) {relative deviation at $\Lambda_0=10^9\tkrg$ from $\Lambda_0=\infty$}; \end{tikzpicture} diff --git a/tikz/overview.tex b/tikz/overview.tex index 5d2bf2e2f526ce5c999c9fd1a91c6e52b3526d26..7db586b2ee258dee89b039441fdf07b898485000 100644 --- a/tikz/overview.tex +++ b/tikz/overview.tex @@ -2,7 +2,7 @@ \begin{tikzpicture} \begin{axis}[ width=9.5cm, - height=9.5cm, + height=10cm, scale only axis, xmin=0, xmax=10, ymin=0, ymax=10, @@ -14,28 +14,41 @@ zlabel = {$\Omega~(\tkv)$}, axis lines* = left, axis on top, - clip = false, + clip = true, ] + %\addplot3[surf] graphics[ + % points={ + % %(10,10,4.804) => (757.5,1644) + % %%(0,10,4.804) => (0,1151) + % %(10,0,4.804) => (1515,1151) + % %(10,0,0) => (1471,549) + % %(0,0,0) => (757.5,0) + % (10,10,4.804) => (400,1000) + % %(10,0,4.804) => (800,700) + % (10,0,0) => (800,300) + % (0,0,0) => (400,0) + % (0,0,4.804) => (400,400) + % } + %] {overview_pixmap.png}; \addplot3[surf] graphics[ points={ - %(10,10,4.804) => (757.5,1644) - %%(0,10,4.804) => (0,1151) - %(10,0,4.804) => (1515,1151) - %(10,0,0) => (1471,549) - %(0,0,0) => (757.5,0) - (10,10,4.804) => (400,1000) - %(10,0,4.804) => (800,700) - (10,0,0) => (800,300) - (0,0,0) => (400,0) - (0,0,4.804) => (400,400) + (0,0,0) => (4,0) + (10,0,0) => (8,3) + (0,10,0) => (0,3) + (0,10,4.804) => (0,7) + %(10,10,4.804) => (4,10) + %(10,0,4.804) => (8,7) } - ] {overview_pixmap.png}; + ] {dummy.png}; + \addplot graphics[points={(11.68,1.66) (11.68,21.705)}] {../figdata/overview_z_rotated.png}; + \addplot graphics[points={(0,0) (6.666667,16.666667)}] {../figdata/overview_x_sheared.png}; + \addplot graphics[points={(0,0) (16.666667,6.666667)}] {../figdata/overview_y_sheared.png}; \addplot3[black] table[x expr={0}, y=vdc, z=omega]{../figdata/overview_contour_x.dat}; \addplot3[black] table[x=vac, y expr={0}, z=omega]{../figdata/overview_contour_y.dat}; \addplot3[black] table[x=vac, y=vdc, z expr={4.804}]{../figdata/overview_contour_z.dat}; \addplot3[gray,thin] coordinates {(0,0,0) (0,0,4.804)}; \addplot3[gray,thin] coordinates {(10,0,4.804) (0,0,4.804) (0,10,4.804)}; - %\addplot3[surf] graphics[points={(0,0,0)=>(0,0)}] {../figdata/overview_x.png}; - \node[anchor=north east] at (axis description cs:0,1) {(a)}; + \coordinate (a) at (axis description cs:0,1); \end{axis} + \node[anchor=north east] at (a) {(a)}; \end{tikzpicture}