Closed danielguterding closed 1 year ago
Thank you for the PR. I need to fix the tests because Python 3.6 is no more supported. Please give me some time.
Now, the develop
branch has been updated to new Python, numpy, scipy versions.
develop
branch. Could you merge the develop
branch into yours?Thank you for the help with updating Python. I have merged your changes and will now also add some test cases.
Do you have any comments on the code?
Thank you! I still see some failure on GitHub Actions. Let me figure out what's wrong on my local machine.
Does your code only support diagonal self-energy or support off-diagonal elements?
For your information, I have an experimental Python implementation of analytic continuation for multi-orbital systems (with the correct treatment of semipositive definite condition).
https://github.com/shinaoka/spm_omega
This uses my general ADMM optimizer.
https://github.com/SpM-lab/admmsolver
I have been thinking merging it into DCore, but I have not done it yet. If your code does not support off-diagonal elements, we could consider to merge our efforts.
Thank you for the suggestion. My current code only supports self-energies that are diagonal in orbital and spin indices. However, I would like to finish the current project and move on to something else. I could integrate your code during the next semester break (Q1 2024).
Also, what is your motivation to write your own ADMM solver? There are many industrial-grade solvers for this type of problem. With the configuration I am using, the solver usually runs for only a couple of seconds on a single core.
I have yet to add some tests to this PR. Most likely I will be done tomorrow.
I believe we're complete now. Please have a look.
Thank you!
Yes, let us first merge your code.
@k-yoshimi Could you have a quick look?
Also, what is your motivation to write your own ADMM solver? There are many industrial-grade solvers for this type of problem. With the configuration I am using, the solver usually runs for only a couple of seconds on a single core. I am unaware of a Python library supporting semi-positive semidefinite constraints for complex matrices. If it exits, it'd make sense to use it.
That one failing test was unstable. I improved it. Please try again.
I don't understand this test failure. I think we need to debug locally with the exact container that runs the tests.
I simplified the test and removed explicit testing of U and VT matrices.
@danielguterding Thank you for improving the test.
I simplified the test and removed explicit testing of U and VT matrices.
I think there are phase degrees of freedom in U and VT and so different system or library versions may cause the discrepancy in U and VT. I think your simplification where only S is checked is a good modification.
@shinaoka I looked at the code and checked that it was safe to merge into develop branch.
@yomichi I think you verified the self-energy analysis connection, could you run a sample if you have one? If it is OK, it would be helpful if you could upload the input file you ran as a sample.
@yomichi I think you verified the self-energy analysis connection, could you run a sample if you have one? If it is OK, it would be helpful if you could upload the input file you ran as a sample.
Can I help with that somehow? I have run quite a few test cases on my side, but didn't find the place where end-to-end tests live in DCore.
Once @yomichi approves, it will be ready to merge the PR.
I'm sorry for the late reply, but I did run the code. I think the results are fine.
It would be good to have default values for some parameters such as spm.show_fit = false
.
@yomichi Would you upload some samples, if you can?
I'm sorry for the late reply, but I did run the code. I think the results are fine. It would be good to have default values for some parameters such as
spm.show_fit = false
.
Thank you for this suggestion. I added reasonable default values for all non-physical parameters.
I used U=4 Hubbard model on the square lattice with pomerol
.
[model]
seedname = square
lattice = square
norb = 1
nelec = 1.0
t = -1.0
kanamori = [(4.0, 0.0, 0.0)]
nk0 = 8
nk1 = 8
nk2 = 1
[system]
T = 0.1
n_iw = 1000
fix_mu = True
mu = 2.0
[impurity_solver]
name = pomerol
exec_path{str} = /Users/yomichi/opt/pomerol/bin/pomerol2dcore
n_bath{int} = 3
fit_gtol{float} = 1e-6
[control]
max_step = 100
sigma_mix = 0.5
converge_tol = 1e-5
[tool]
knode = [(G,0,0,0),(X,0.5,0,0),(M,0.5,0.5,0),(G,0,0,0)]
nk_line = 100
omega_max = 6.0
omega_min = -6.0
Nomega = 401
broadening = 0.4
Are there any questions that are still open?
No, ready to merge! (Sorry, we were stuck in a conference). Thank you for your contributions!
@danielguterding Thank you for your contribution. We'll add the tutorial for analytical continuation.
dcore_pade.py
todcore_anacont_pade.py
.cvxpy
.anacont_spm.py
.dcore_anacont_spm_interactive.py
) and non-interactive (dcore_anacont_spm.py
) analytic continuation via sparse modeling.Open points: