-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- There was a double counting of the dw factor (silly me 🙈) - A very high wres value is needed to obtain sharp transitions > Updated the README and the showcase directory > Now plot.Uline() takes in also the Luttinger integral values, to plot them along the quasiparticle renormalization weights.
- Loading branch information
1 parent
8aa4104
commit 7856799
Showing
6 changed files
with
378 additions
and
33 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
output/ | ||
*.fig | ||
*.gif | ||
*.asv | ||
*.sfit |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,23 +1,33 @@ | ||
# What MOTTlab is | ||
## What `MOTTlab` is | ||
A didactic/explorative implementation of (real axis) IPT-based dynamical mean-field theory for the half-filled Mott-Hubbard transition on the Bethe lattice, within MATLAB. | ||
|
||
# License and stuff | ||
This code has been implemented taking inspiration from these two didactic sources: | ||
1. http://www.physics.rutgers.edu/~haule/681/Perturbation.pdf ([local copy](docs/haule_IPTtheory_rutgers.pdf)) | ||
2. https://www.cond-mat.de/events/correl19/manuscripts/rozenberg.pdf ([local copy](docs/rozenberg_review_julich.pdf)) | ||
and the hands-on material given therein, in particular a tutorial-intended jupyter notebook provided by Óscar Nájera (available [on his cloud](http://mycore.core-cloud.net/index.php/s/oAz0lIWuBM90Gqt), or [locally](legacy/PYTHON/real_ipt-text_v3.ipynb)) under the BSD 3-Clause License. Here we provide a Matlab rewrite, plus some extensions (phase diagram loops, including convergence and self-mixing control, various post-processing and data analysis routines), again under BSD 3-Clause License. You can read more about allowed use of this code in the LICENSE file. | ||
## What you can get out of it | ||
Here we present a few examples of what you can obtain spending some time on the `MOTTlab`. | ||
|
||
A few fancy examples of what you can obtain running some simulation within the MOTTlab: visualizing the interaction-driven Mott transition at different relevant temperatures! | ||
> Characterize the interaction-driven quantum Mott transition through different physical markers, such as the _timeless classic_ quasiparticle renormalization weight _Z<sub>F</sub>_ , or the _quantized_ Luttinger integral _I<sub>L</sub>_, which gives some exotic hints of a topological interpretation. | ||
![Mott-Transition-Markers-zeroT](./showcase/ZvsL_beta1e6_wres2e15.svg) | ||
|
||
> Truly visualize what happens at different relevant temperatures by means of the fanciest animations! | ||
Temperature | DOS | SELF-ENERGY | ||
:-------------------------:|:-------------------------:|:-------------------------: | ||
`T -> 0: 2nd order MIT` |![Mott-Transition-AnimatedDOS-zeroT](./showcase/uDOS_zeroT.gif) | ![Mott-Transition-AnimatedSIGMA-zeroT](./showcase/uSigma_zeroT.gif) | ||
`Intermediate T: 1st order MIT` |![Mott-Transition-AnimatedDOS-intermediateT](./showcase/uDOS_beta50.gif) | ![Mott-Transition-AnimatedSIGMA-intermediateT](./showcase/uSigma_beta50.gif) | ||
`High T: supercritical MIT` |![Mott-Transition-AnimatedDOS-highT](./showcase/uDOS_beta1.gif) | ![Mott-Transition-AnimatedSIGMA-highT](./showcase/uSigma_beta1.gif) | ||
|
||
# TODO | ||
- [ ] Insert a "restarting" protocol for full phase diagram spans. The gloc0=0 condition appers to be too unstable to obtain accurate UC1 lines. | ||
## Licensing and legacy code | ||
This code has been implemented taking inspiration from these two didactic sources: | ||
1. http://www.physics.rutgers.edu/~haule/681/Perturbation.pdf ([local copy](docs/haule_IPTtheory_rutgers.pdf)) | ||
2. https://www.cond-mat.de/events/correl19/manuscripts/rozenberg.pdf ([local copy](docs/rozenberg_review_julich.pdf)) | ||
and the hands-on material given therein, in particular a tutorial-intended jupyter notebook provided by Óscar Nájera (available [on his cloud](http://mycore.core-cloud.net/index.php/s/oAz0lIWuBM90Gqt), or [locally](legacy/PYTHON/real_ipt-text_v3.ipynb)) under the BSD 3-Clause License. Here we provide an extensive MATLAB rewrite, augmented by basic phase-diagram workflows, with convergence and self-mixing control, various post-processing tools, finally some exploration of novel material, with explicit references to the relevant research papers. Everything again under BSD 3-Clause License. You can read more about allowed use of this code in the [LICENSE](./LICENSE) file. | ||
|
||
------------- | ||
|
||
## TODO | ||
- [x] Compute a MIvsFL marker based on the divergence of Im[Sigma(0)] (much sensible, very inexpensive), so to obtain sharper phase diagrams with respect to the Z-derived ones. | ||
At the moment we implement the "strenght of correlations", S = norm[Sigma(0)-Sigma_HF], as defined in `PRL 114 185701`, with actual neat results: the marker is almost zero accross the whole FL phase and starts increasing fast in the Mott insulator. | ||
- [ ] Compute the Luttinger Integral, as defined in `PRB 102 081110(R)`. Since it appears to be quantized it could become the definitive _flag_ for phase diagrams; much better than Z or S for it is an _integer_. | ||
UPDATE: Luttinger Theorem currently works for the FL phase *only*; the MI integer result for now is missing, for it arises from the nonanalytic Mott pole in the self-energy, which requires the most careful numerical treatment. | ||
- [x] Compute the Luttinger Integral, as defined in `PRB 102 081110(R)`. Since it appears to be quantized it could become the definitive _flag_ for phase diagrams; much better than Z or S for it is an _integer_. | ||
UPDATE: Luttinger Theorem currently works for very low temperatures only. It may well be an inherent limitation (in that case it would be a good marker for low temperature lines, but not phase diagrams). Also note that the quality of the first order step at the transition highly depends on the frequency resolution, so to have sharp boundaries you need to have at least `wres=2^14`, which makes the IPT solver far slower. | ||
- [ ] Insert a "restarting" protocol for lines and full phase diagram spans. The gloc0=0 condition appers to be too unstable to obtain accurate UC1 values. Furthermore this would most probably speed up a lot the convergence (lowering the required number of iterations), so to enable a relevant slowdown of the single iteration (e.g. bigger frequency resolution). | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,31 @@ | ||
%% BSD 3-Clause License | ||
% | ||
% Copyright (c) 2020, Gabriele Bellomia | ||
% All rights reserved. | ||
|
||
function I = LuttingerIntegral(w,sloc,gloc) | ||
function [I,Lfig] = LuttingerIntegral(w,sloc,gloc) | ||
%% Computes the Luttinger sum-rule, as defined in PRB 102 081110 | ||
% | ||
% Input: | ||
% w : real valued array, \omega domain | ||
% sloc : complex valued array, \Sigma(\omega) function | ||
% gloc : complex valued array, G_{loc}(\omega) function | ||
% Output: | ||
% I = \frac{2}{\pi}\Im\int_{-\infty}^{0} dw G_loc(w) d\Sigma(w) / dw | ||
% = \frac{1}{\pi}\Im\int_{-\infty}^{\infty}dwG_loc(w)d\Sigma(w)/dw | ||
dw = w(2)-w(1); | ||
ds = diff(sloc); | ||
% | ||
%% BSD 3-Clause License | ||
% | ||
% Copyright (c) 2020, Gabriele Bellomia | ||
% All rights reserved. | ||
global DoDEBUG | ||
ds = diff(sloc); % dSigma -> already eliminates dw! | ||
g_ = gloc(1:end-1); | ||
integrand = smoothdata(imag(g_.*ds)); | ||
I = 1/pi*(dw*sum(integrand)); | ||
%plot(w_,integrand); | ||
integrand = imag(g_.*ds); | ||
I = 1/pi*sum(integrand); | ||
I = abs(I); % J. Phys.: Condens. Matter 28 (2016) 025601 | ||
if DoDEBUG | ||
Lfig = figure("Name",'Luttinger integrand','Visible','off'); | ||
plot(w(1:end-1),integrand); | ||
xlabel('\omega'); | ||
ylabel('Im[G(\omega)\partial\Sigma/\partial\omega]'); | ||
ylim([-0.1,0.2]); | ||
end | ||
end | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,13 @@ | ||
function line = Uline(Z,beta,Umin,Ustep,Umax) | ||
function line = Uline(Z,I,beta,Umin,Ustep,Umax) | ||
line = figure("Name",'U-driven MIT'); | ||
U = Umin:Ustep:Umax; | ||
scatter(2.*U,Z,'k','filled'); hold on | ||
scatter(2.*U,I,'r','filled'); % (Units: D=2t) | ||
title(sprintf('IPT | U-driven MIT at T = %f',1/beta)) | ||
xlabel('$U/t$','Interpreter','latex') | ||
ylabel('$Z = M/M^*$','Interpreter','latex') | ||
legend({'$Z_F = 1 / ( 1 - Re[\partial_\omega\Sigma(0)] )$',... | ||
'$I_L = 1/\pi\int d\omega Im[G(\omega)\partial_\omega\Sigma(\omega)]$'},... | ||
'Interpreter','latex') | ||
end | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.