TRIQS / solid_dmft

solid_dmft is a versatile python wrapper to perform DFT+DMFT calculations utilizing the TRIQS software library.
https://triqs.github.io/solid_dmft/
Other
32 stars 19 forks source link

[feat] enable MPI for maxent_gf_imp #55

Closed the-hampel closed 1 year ago

the-hampel commented 1 year ago

I enabled MPI for the impurity Gf maxent routine. @merkelm could you check if this makes sense to you? I successfully checked the results for correctness with the integrated test, but also with other DMFT results.

merkelm commented 1 year ago

@the-hampel, thanks for the commit. If I remember correctly, the reason why I did not implement this functionality is because it becomes a bit complicated when there are blocks of different sizes. Do the changes work for blocks that are not 1x1 and if there are different blocks of different sizes in the Green function?

the-hampel commented 1 year ago

So I tried this now for a five orbital Gf with one block 3x3 and one block 2x2:

block struct. : {'up_0': [0, 1, 2], 'up_1': [0, 1], 'down_1': [0, 1], 'down_0': [0, 1, 2]}

The output with the old and new version looks the same (apart from the suppressed output from maxent):

Starting run with 12 MPI rank(s) at : 2023-08-09 14:57:01.245297
Continuing impurities with blocks: 
- Imp 0: ['total_0', 'total_1']
--------------------------------------------------

Rank 0: solving impurity 1 block 'total_0'

Rank 1: solving impurity 1 block 'total_1'
appending
appending
appending
appending
Optimal alphas , Imp 1 block 'total_1': 
--- Real part ---
 [[10  4]
 [-1 10]]
(a -1 indicates that maxent did not run for this block due to symmetry)
appending
Optimal alphas , Imp 1 block 'total_0': 
--- Real part ---
 [[14 12  8]
 [-1 14  6]
 [-1 -1 10]]
(a -1 indicates that maxent did not run for this block due to symmetry)
--------------------------------------------------------------------------------
DONE
Total run time: 17 s.

I plotted the resulting spectral function and they seem reasonable to me (very crude accuracy) for the system: image . The only thing I observed is that the orbital i<j are filled with nan. But I believe that was the case before as well. Do you remember what the problem back then was? Right now it seems to work as it should.