In [1]:
import h5py
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
import multifile
import os
matplotlib.rcParams["figure.dpi"] = 100

import matplotlib.pyplot as plt

SMALL_SIZE = 8
MEDIUM_SIZE = 12
BIGGER_SIZE = 14

plt.rc('font', size=BIGGER_SIZE)          # controls default text sizes
plt.rc('axes', titlesize=BIGGER_SIZE)     # fontsize of the axes title
plt.rc('axes', labelsize=BIGGER_SIZE)     # fontsize of the x and y labels
plt.rc('xtick', labelsize=MEDIUM_SIZE)    # fontsize of the tick labels
plt.rc('ytick', labelsize=MEDIUM_SIZE)    # fontsize of the tick labels
plt.rc('legend', fontsize=MEDIUM_SIZE)    # legend fontsize
plt.rc('figure', titlesize=BIGGER_SIZE)   # fontsize of the figure title
plt.rcParams["font.family"] = "serif"
plt.rcParams["text.usetex"] = True
plt.rcParams["font.family"] = "cmr10",  # Computer Modern Roman
#plt.rcParams.update({'font.family': 'serif', 'font.size': 14, 'font.weight': 'normal'})
In [5]:
dir_half_rightbottom = "/media/aiman/data/omega_influence/final_withrest_beta20_withrest_omega0_influence_halffilling_Ueffseq0"# "./final_beta20_hubbardholstein/halffilling_rightbottomcorner_small"
dir_half_lefttop = "/media/aiman/data/omega_influence/final_withrest_beta20_withrest_omega0_influence_halffilling_Ueffgeq0"


datnames_half_rightbottom = [dir_half_rightbottom + "/" + o for o in os.listdir(dir_half_rightbottom)]
datnames_half_lefttop = [dir_half_lefttop + "/" + o for o in os.listdir(dir_half_lefttop)]



#latest
#dir_doped_lefttop = r"./final_beta20_hubbardholstein/doping_lefttop_beta20Vh1p0U2p5"
#dir_doped_rightbottom = r"./final_beta20_hubbardholstein/doping_rightbottom_noM_beta20Vh2p2U1p7"

dir_doped_lefttop = r"/media/aiman/data/omega_influence/final_beta20_withrest_omega0_influence_doped_Ueffgeq0_small"
dir_doped_rightbottom = r"/media/aiman/data/omega_influence/final_beta20_withrest_omega0_influence_doped_Ueffseq0_small"

dir_doped_lefttop_no_se = r"/media/aiman/data/omega_influence/no_se_final_beta20_withrest_omega0_influence_doped_Ueffgeq0_small"
dir_doped_rightbottom_no_se = r"/media/aiman/data/omega_influence/no_se_final_beta20_withrest_omega0_influence_doped_Ueffseq0_small"


datnames_doped_lefttop = [dir_doped_lefttop + "/" + o for o in os.listdir(dir_doped_lefttop)]
datnames_doped_rightbottom = [dir_doped_rightbottom + "/" + o for o in os.listdir(dir_doped_rightbottom)]


datnames_doped_lefttop_no_se = [dir_doped_lefttop_no_se + "/" + o for o in os.listdir(dir_doped_lefttop_no_se)]
datnames_doped_rightbottom_no_se = [dir_doped_rightbottom_no_se + "/" + o for o in os.listdir(dir_doped_rightbottom_no_se)]



dir_half_rightbottom_acoustic = "/media/aiman/data/omega_influence/acoustic_beta20_withrest_omega0_influence_halffilling_Ueffleq0/"
dir_half_lefttop_acoustic = "/media/aiman/data/omega_influence/acoustic_beta20_withrest_omega0_influence_halffilling_Ueffgeq0/" #"./halffilling_lefttopcorner_small"


datnames_half_rightbottom_acoustic = [dir_half_rightbottom_acoustic + "/" + o for o in os.listdir(dir_half_rightbottom_acoustic)]
datnames_half_lefttop_acoustic = [dir_half_lefttop_acoustic + "/" + o for o in os.listdir(dir_half_lefttop_acoustic)]




dir_bubdiagnostics_doped_rightbottom = "/media/aiman/data/omega_influence/bubble_fluct_diag/final_beta20_withrest_omega0_influence_doped_Ueffseq0_fine_for_bubble_fluctdiag_small/"
dir_bubdiagnostics_doped_lefttop = "/media/aiman/data/omega_influence/bubble_fluct_diag/final_beta20_withrest_omega0_influence_doped_Ueffgeq0_fine_for_bubble_fluctdiag_small/" #"./halffilling_lefttopcorner_small"


datnames_bubdiagnostics_doped_rightbottom = [dir_bubdiagnostics_doped_rightbottom + "/" + o for o in os.listdir(dir_bubdiagnostics_doped_rightbottom)]
datnames_bubdiagnostics_doped_lefttop = [dir_bubdiagnostics_doped_lefttop + "/" + o for o in os.listdir(dir_bubdiagnostics_doped_lefttop)]
In [7]:
dir_doping_dependence = "/media/aiman/data/omega_influence/chi_vs_doping/"
datnames_doping_dependence = [dir_doping_dependence + "/" + o for o in os.listdir(dir_doping_dependence)]
In [4]:
GammaXM_path = []
def load(dat_names, drop=0, acoustic=False):
    global GammaXM_path
    objs = []

    for dat_dir in dat_names:
        print(dat_dir)
        #print(dat_dir)
        mf = multifile.MultiFile(dat_dir + '/')
        obj = {}
        
        idx_M = mf.params_file["Model/Special_points"].attrs["idx_M"]
        idx_00 = mf.params_file["Model/Special_points"].attrs["idx_00"]
        GammaXM_path = np.array(mf.params_file["Model/Special_paths/path_Gamma_X_M"])
        obj['dir'] = dat_dir
        obj['U'] = mf.params_file["Model"].attrs["U"]
        obj['g0'] = mf.params_file["Model"].attrs["g0"]
        obj['Omega0'] = mf.params_file["Model"].attrs["OMEGA0"]
        obj['Vh'] = 2*obj['g0']*obj['g0']/obj['Omega0']
        if not mf.is_finished:
            print(dat_dir)
            continue
        
        #
#        if not mf.is_diverged:
#            drop = 0
#        if drop == 0:
        f = mf.open_final_file()

        obj['filling'] = f["Flow_obs"].attrs['Filling']
        obj['delta_mu'] = f["Flow_obs"].attrs["delta_mu"]
        print(obj['filling'])
#        else:
#            f = mf.open_file_number(mf.scales_count - drop)
        #print(f["Flow_obs/S_Wave_Susc_info"].attrs.keys())
        #print(np.array(f["Flow_obs/S_Wave_Susc_info"].keys)[0, 0])
        obj['leading_susc'] = f["Flow_obs/S_Wave_Susc_info"].attrs['Leading_name']
        obj['max_sc'] = max(f['Flow_obs/Postprocessing_Susc_info/RE_Susc_sc'][0, :, 0, 0, 0, 0, 0, 0]) #f["Flow_obs/S_Wave_Susc_info"].attrs['RE_Max_sc'] # max(f['Flow_obs/Postprocessing_Susc_info/RE_Susc_sc'][0, :, 0, 0, 0, 0, 0, 0])  # 
        obj['max_d'] = max(f['Flow_obs/Postprocessing_Susc_info/RE_Susc_d'][0, :, 0, 0, 0, 0, 0, 0]) #f["Flow_obs/S_Wave_Susc_info"].attrs['RE_Max_d'] #max(f['Flow_obs/Postprocessing_Susc_info/RE_Susc_d'][0, :, 0, 0, 0, 0, 0, 0]) #
        obj['max_m'] = max(f['Flow_obs/Postprocessing_Susc_info/RE_Susc_m'][0, :, 0, 0, 0, 0, 0, 0]) #f["Flow_obs/S_Wave_Susc_info"].attrs['RE_Max_m'] #max(f['Flow_obs/Postprocessing_Susc_info/RE_Susc_m'][0, :, 0, 0, 0, 0, 0, 0]) #

        obj['max_sc_fl'] = f["Flow_obs/S_Wave_Susc_info"].attrs['RE_Max_sc'] # max(f['Flow_obs/Postprocessing_Susc_info/RE_Susc_sc'][0, :, 0, 0, 0, 0, 0, 0])  # 
        obj['max_d_fl'] = f["Flow_obs/S_Wave_Susc_info"].attrs['RE_Max_d'] #max(f['Flow_obs/Postprocessing_Susc_info/RE_Susc_d'][0, :, 0, 0, 0, 0, 0, 0]) #
        obj['max_m_fl'] = f["Flow_obs/S_Wave_Susc_info"].attrs['RE_Max_m'] #max(f['Flow_obs/Postprocessing_Susc_info/RE_Susc_m'][0, :, 0, 0, 0, 0, 0, 0]) #

        
        dsc = f['Flow_obs/Postprocessing_Susc_info/RE_Susc_sc'].shape[2] > 1
        if dsc:
            obj['max_dsc'] = max(f['Flow_obs/Postprocessing_Susc_info/RE_Susc_sc'][0, :, 1, 1, 0, 0, 0, 0])

        obj['leading_w'] = f["Flow_obs/w_info"].attrs['Leading_name']
        obj['max_w_sc'] = f["Flow_obs/w_info"].attrs['RE_Max_sc']
        obj['max_w_d'] = f["Flow_obs/w_info"].attrs['RE_Max_d']
        obj['max_w_m'] = f["Flow_obs/w_info"].attrs['RE_Max_m']
        
        obj['lambda_sc'] = np.array(f["lambda_func/RE_SC"])[:, 0, :, 0]
        obj['lambda_d'] = np.array(f["lambda_func/RE_D"])[:, 0, :, 0]
        obj['lambda_m'] = np.array(f["lambda_func/RE_M"])[:, 136, :, 0]
        
        obj['w_d'] = np.array(f["w_func/RE_D"])[:, 136]
        obj['RE_Sigma'] = np.array(f["Sig/RE"])
        obj['IM_Sigma'] = np.array(f["Sig/IM"])
        obj["Sigma_momgrid"] = np.array(f["Sig/momgrid"])
        obj["Sigma_fgrid"] = np.array(f["Sig/fgrid"])
        f.close()
        
        f = mf.open_final_file()
        #print(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_d"].shape)
        chi_split_objs = {}
        for chan in ["sc", "d", "m"]:
            if chan == "sc":
                    special_idx = idx_00
            else:
                    special_idx = idx_M

            contribs_from_minus_2U = None
            if not acoustic:
                contribs_from_minus_2U = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_bare_vertex".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0] + np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_sc_double_counting".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0] + np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_d_double_counting".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0] + np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_m_double_counting".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0]
            else:
                contribs_from_minus_2U = -2.0*np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_bare_vertex".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0]
                
            chi_split_objs[("chi_{0}_fl".format(chan))] = np.array(f["Flow_obs/S_Wave_Susc_info/RE_Susc_{0}".format(chan)])[0, special_idx]
            chi_split_objs[("chi_{0}_full".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0]
            chi_split_objs[("chi_{0}_bubble".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_bubble_contribution".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0]
            chi_split_objs[("chi_{0}_mbe".format(chan))] = -contribs_from_minus_2U/2.0
            chi_split_objs[("chi_{0}_sbe_from_sc".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_nabla_sc".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0] + contribs_from_minus_2U/2.0
            chi_split_objs[("chi_{0}_sbe_from_d".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_nabla_d".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0] + 0.5 * contribs_from_minus_2U/2.0
            chi_split_objs[("chi_{0}_sbe_from_m".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_nabla_m".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0] + 1.5 * contribs_from_minus_2U/2.0

            if "RE_Susc_{0}_vertex_contribution_from_M_m".format(chan) in f["Flow_obs/Postprocessing_Susc_info/"].keys():
                chi_split_objs[("chi_{0}_sbe_from_Mm".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_M_m".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0]
                chi_split_objs[("chi_{0}_sbe_from_Md".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_M_d".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0]
                chi_split_objs[("chi_{0}_sbe_from_Msc".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_M_sc".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0]
        
        if dsc:
            special_idx = idx_00
            chan = 'sc'    
            contribs_from_minus_2U = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_bare_vertex".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0] + np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_sc_double_counting".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0] + np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_d_double_counting".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0] + np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_m_double_counting".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0]

            chi_split_objs[("chi_d{0}_fl".format(chan))] = 0.0*np.array(f["Flow_obs/S_Wave_Susc_info/RE_Susc_{0}".format(chan)])[0, special_idx]
            chi_split_objs[("chi_d{0}_full".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0]
            chi_split_objs[("chi_d{0}_bubble".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_bubble_contribution".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0]
            chi_split_objs[("chi_d{0}_mbe".format(chan))] = -contribs_from_minus_2U/2.0
            chi_split_objs[("chi_d{0}_sbe_from_sc".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_nabla_sc".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0] + contribs_from_minus_2U/2.0
            chi_split_objs[("chi_d{0}_sbe_from_d".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_nabla_d".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0] + 0.5 * contribs_from_minus_2U/2.0
            chi_split_objs[("chi_d{0}_sbe_from_m".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_nabla_m".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0] + 1.5 * contribs_from_minus_2U/2.0
            if "RE_Susc_{0}_vertex_contribution_from_M_m".format(chan) in f["Flow_obs/Postprocessing_Susc_info/"].keys():
                chi_split_objs[("chi_d{0}_sbe_from_Mm".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_M_m".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0]
                chi_split_objs[("chi_d{0}_sbe_from_Md".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_M_d".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0]
                chi_split_objs[("chi_d{0}_sbe_from_Msc".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_M_sc".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0]


        
        f.close()
  
        obj['chi_split'] = chi_split_objs
        
        objs.append(obj)
    return objs
In [6]:
objs_halffillingrightbottom = sorted(load(datnames_half_rightbottom, drop=10) , key=lambda o1: o1['Omega0']) 
objs_halffillinglefttop = sorted(load(datnames_half_lefttop, drop=10) , key=lambda o1: o1['Omega0'])

objs_doped_lefttop = sorted(load(datnames_doped_lefttop, drop=10), key=lambda o1: o1['Omega0'])
objs_doped_rightbottom = sorted(load(datnames_doped_rightbottom, drop=10), key=lambda o1: o1['Omega0'])

objs_doped_lefttop_no_se = sorted(load(datnames_doped_lefttop_no_se, drop=10), key=lambda o1: o1['Omega0'])
objs_doped_rightbottom_no_se = sorted(load(datnames_doped_rightbottom_no_se, drop=10), key=lambda o1: o1['Omega0'])

objs_halffillingrightbottom_acoustic = sorted(load(datnames_half_rightbottom_acoustic, drop=10, acoustic=True) , key=lambda o1: o1['Omega0']) 
objs_halffillinglefttop_acoustic = sorted(load(datnames_half_lefttop_acoustic, drop=10, acoustic=True) , key=lambda o1: o1['Omega0'])

objs_bubdiagnostics_doped_rightbottom = sorted(load(datnames_bubdiagnostics_doped_rightbottom) , key=lambda o1: o1['Omega0'])
objs_bubdiagnostics_doped_lefttop = sorted(load(datnames_bubdiagnostics_doped_lefttop) , key=lambda o1: o1['Omega0'])


#objs_finitedoping = load(dat_names_finitedoping, drop=5)

#at_vh_u = lambda vh, u : (lambda obj: abs(obj["Vh"] - vh) < 0.01 and abs(obj["U"] - u) < 0.01)

#objs_finitedoping_vh2p5_u0 = sorted(list(filter( at_vh_u(2.5, 0), objs_finitedoping)) , key=lambda o1: o1['Omega0'])
#objs_finitedoping_vh2p5_u2 = sorted(list(filter( at_vh_u(2.5, 2), objs_finitedoping)) , key=lambda o1: o1['Omega0'])
#objs_finitedoping_vh2p5_u3 = sorted(list(filter( at_vh_u(2.5, 3), objs_finitedoping)) , key=lambda o1: o1['Omega0'])
/media/aiman/data/fluctuation_diag/anti_withrest_beta20_withrest_omega0_influence_halffilling_Ueffseq0/dat__g02_OMEGA010_U1p5_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.49999692650283395
/tmp/ipykernel_30316/1552136659.py:14: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  GammaXM_path = np.array(mf.params_file["Model/Special_paths/path_Gamma_X_M"])
/tmp/ipykernel_30316/1552136659.py:56: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  obj['lambda_sc'] = np.array(f["lambda_func/RE_SC"])[:, 0, :, 0]
/tmp/ipykernel_30316/1552136659.py:57: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  obj['lambda_d'] = np.array(f["lambda_func/RE_D"])[:, 0, :, 0]
/tmp/ipykernel_30316/1552136659.py:58: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  obj['lambda_m'] = np.array(f["lambda_func/RE_M"])[:, 136, :, 0]
/tmp/ipykernel_30316/1552136659.py:60: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  obj['w_d'] = np.array(f["w_func/RE_D"])[:, 136]
/tmp/ipykernel_30316/1552136659.py:61: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  obj['RE_Sigma'] = np.array(f["Sig/RE"])
/tmp/ipykernel_30316/1552136659.py:62: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  obj['IM_Sigma'] = np.array(f["Sig/IM"])
/tmp/ipykernel_30316/1552136659.py:63: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  obj["Sigma_momgrid"] = np.array(f["Sig/momgrid"])
/tmp/ipykernel_30316/1552136659.py:64: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  obj["Sigma_fgrid"] = np.array(f["Sig/fgrid"])
/tmp/ipykernel_30316/1552136659.py:78: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  contribs_from_minus_2U = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_bare_vertex".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0] + np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_sc_double_counting".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0] + np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_d_double_counting".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0] + np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_m_double_counting".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0]
/tmp/ipykernel_30316/1552136659.py:82: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_{0}_fl".format(chan))] = np.array(f["Flow_obs/S_Wave_Susc_info/RE_Susc_{0}".format(chan)])[0, special_idx]
/tmp/ipykernel_30316/1552136659.py:83: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_{0}_full".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0]
/tmp/ipykernel_30316/1552136659.py:84: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_{0}_bubble".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_bubble_contribution".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0]
/tmp/ipykernel_30316/1552136659.py:86: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_{0}_sbe_from_sc".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_nabla_sc".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0] + contribs_from_minus_2U/2.0
/tmp/ipykernel_30316/1552136659.py:87: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_{0}_sbe_from_d".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_nabla_d".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0] + 0.5 * contribs_from_minus_2U/2.0
/tmp/ipykernel_30316/1552136659.py:88: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_{0}_sbe_from_m".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_nabla_m".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0] + 1.5 * contribs_from_minus_2U/2.0
/tmp/ipykernel_30316/1552136659.py:91: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_{0}_sbe_from_Mm".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_M_m".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0]
/tmp/ipykernel_30316/1552136659.py:92: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_{0}_sbe_from_Md".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_M_d".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0]
/tmp/ipykernel_30316/1552136659.py:93: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_{0}_sbe_from_Msc".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_M_sc".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0]
/media/aiman/data/fluctuation_diag/anti_withrest_beta20_withrest_omega0_influence_halffilling_Ueffseq0/dat__g02_OMEGA010000_U1p5_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.49999910275727694
/media/aiman/data/fluctuation_diag/anti_withrest_beta20_withrest_omega0_influence_halffilling_Ueffseq0/dat__g02_OMEGA00p1_U1p5_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.5000080695832649
/media/aiman/data/fluctuation_diag/anti_withrest_beta20_withrest_omega0_influence_halffilling_Ueffseq0/dat__g02_OMEGA00p01_U1p5_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.5000024980389293
/media/aiman/data/fluctuation_diag/anti_withrest_beta20_withrest_omega0_influence_halffilling_Ueffseq0/dat__g02_OMEGA01_U1p5_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.49999647539249775
/media/aiman/data/fluctuation_diag/anti_withrest_beta20_withrest_omega0_influence_halffilling_Ueffseq0/dat__g02_OMEGA0100_U1p5_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.4999901408322835
/media/aiman/data/fluctuation_diag/anti_withrest_beta20_withrest_omega0_influence_halffilling_Ueffseq0/dat__g02_OMEGA01000_U1p5_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.499999012885428
/media/aiman/data/fluctuation_diag/anti_withrest_beta20_withrest_omega0_influence_halffilling_Ueffgeq0/dat__g01p4_OMEGA010000_U2p2_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.4999866658100453
/media/aiman/data/fluctuation_diag/anti_withrest_beta20_withrest_omega0_influence_halffilling_Ueffgeq0/dat__g01p4_OMEGA00p1_U2p2_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.5000084727199458
/media/aiman/data/fluctuation_diag/anti_withrest_beta20_withrest_omega0_influence_halffilling_Ueffgeq0/dat__g01p4_OMEGA01_U2p2_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.4999919942536689
/media/aiman/data/fluctuation_diag/anti_withrest_beta20_withrest_omega0_influence_halffilling_Ueffgeq0/dat__g01p4_OMEGA01000_U2p2_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.49998793819066395
/media/aiman/data/fluctuation_diag/anti_withrest_beta20_withrest_omega0_influence_halffilling_Ueffgeq0/dat__g01p4_OMEGA00p01_U2p2_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.5000093123369569
/media/aiman/data/fluctuation_diag/anti_withrest_beta20_withrest_omega0_influence_halffilling_Ueffgeq0/dat__g01p4_OMEGA0100_U2p2_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.4999969604365495
/media/aiman/data/fluctuation_diag/anti_withrest_beta20_withrest_omega0_influence_halffilling_Ueffgeq0/dat__g01p4_OMEGA010_U2p2_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.49998776278655566
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/final_beta20_withrest_omega0_influence_doped_Ueffgeq0_small/dat__g01_OMEGA01000_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.3916818360211912
/tmp/ipykernel_30316/1552136659.py:98: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  contribs_from_minus_2U = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_bare_vertex".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0] + np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_sc_double_counting".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0] + np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_d_double_counting".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0] + np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_m_double_counting".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0]
/tmp/ipykernel_30316/1552136659.py:100: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_d{0}_fl".format(chan))] = 0.0*np.array(f["Flow_obs/S_Wave_Susc_info/RE_Susc_{0}".format(chan)])[0, special_idx]
/tmp/ipykernel_30316/1552136659.py:101: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_d{0}_full".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0]
/tmp/ipykernel_30316/1552136659.py:102: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_d{0}_bubble".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_bubble_contribution".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0]
/tmp/ipykernel_30316/1552136659.py:104: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_d{0}_sbe_from_sc".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_nabla_sc".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0] + contribs_from_minus_2U/2.0
/tmp/ipykernel_30316/1552136659.py:105: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_d{0}_sbe_from_d".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_nabla_d".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0] + 0.5 * contribs_from_minus_2U/2.0
/tmp/ipykernel_30316/1552136659.py:106: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_d{0}_sbe_from_m".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_nabla_m".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0] + 1.5 * contribs_from_minus_2U/2.0
/tmp/ipykernel_30316/1552136659.py:108: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_d{0}_sbe_from_Mm".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_M_m".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0]
/tmp/ipykernel_30316/1552136659.py:109: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_d{0}_sbe_from_Md".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_M_d".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0]
/tmp/ipykernel_30316/1552136659.py:110: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_d{0}_sbe_from_Msc".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_M_sc".format(chan)])[0, special_idx, 1, 1, 0, 0, 0, 0]
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/final_beta20_withrest_omega0_influence_doped_Ueffgeq0_small/dat__g01_OMEGA010000_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.3916776730053092
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/final_beta20_withrest_omega0_influence_doped_Ueffgeq0_small/dat__g01_OMEGA01_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.3916853956883317
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/final_beta20_withrest_omega0_influence_doped_Ueffgeq0_small/dat__g01_OMEGA00p01_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.39167883741726095
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/final_beta20_withrest_omega0_influence_doped_Ueffgeq0_small/dat__g01_OMEGA00p1_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.39167766993054287
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/final_beta20_withrest_omega0_influence_doped_Ueffgeq0_small/dat__g01_OMEGA0100_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.3916839986050895
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/final_beta20_withrest_omega0_influence_doped_Ueffgeq0_small/dat__g01_OMEGA010_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.39167766347607463
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/final_beta20_withrest_omega0_influence_doped_Ueffseq0_small/dat__g02_OMEGA01_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.39167989469095327
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/final_beta20_withrest_omega0_influence_doped_Ueffseq0_small/dat__g02_OMEGA00p1_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.3916732567557158
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/final_beta20_withrest_omega0_influence_doped_Ueffseq0_small/dat__g02_OMEGA00p01_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.3916765438913463
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/final_beta20_withrest_omega0_influence_doped_Ueffseq0_small/dat__g02_OMEGA010000_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.3916776604574812
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/final_beta20_withrest_omega0_influence_doped_Ueffseq0_small/dat__g02_OMEGA01000_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.3916776616463902
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/final_beta20_withrest_omega0_influence_doped_Ueffseq0_small/dat__g02_OMEGA010_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.39167766108366614
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/final_beta20_withrest_omega0_influence_doped_Ueffseq0_small/dat__g02_OMEGA0100_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.3916776631297781
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/no_se_final_beta20_withrest_omega0_influence_doped_Ueffgeq0_small/dat__g01_OMEGA00p1_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM
0.39167766522557534
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/no_se_final_beta20_withrest_omega0_influence_doped_Ueffgeq0_small/dat__g01_OMEGA010_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM
0.39167766522557534
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/no_se_final_beta20_withrest_omega0_influence_doped_Ueffgeq0_small/dat__g01_OMEGA01000_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM
0.39167766522557534
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/no_se_final_beta20_withrest_omega0_influence_doped_Ueffgeq0_small/dat__g01_OMEGA00p01_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM
0.39167766522557534
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/no_se_final_beta20_withrest_omega0_influence_doped_Ueffgeq0_small/dat__g01_OMEGA0100_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM
0.39167766522557534
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/no_se_final_beta20_withrest_omega0_influence_doped_Ueffgeq0_small/dat__g01_OMEGA010000_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM
0.39167766522557534
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/no_se_final_beta20_withrest_omega0_influence_doped_Ueffgeq0_small/dat__g01_OMEGA01_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM
0.39167766522557534
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/no_se_final_beta20_withrest_omega0_influence_doped_Ueffseq0_small/dat__g02_OMEGA0100_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM
0.39167766522557534
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/no_se_final_beta20_withrest_omega0_influence_doped_Ueffseq0_small/dat__g02_OMEGA010000_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM
0.39167766522557534
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/no_se_final_beta20_withrest_omega0_influence_doped_Ueffseq0_small/dat__g02_OMEGA00p01_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM
0.39167766522557534
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/no_se_final_beta20_withrest_omega0_influence_doped_Ueffseq0_small/dat__g02_OMEGA010_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM
0.39167766522557534
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/no_se_final_beta20_withrest_omega0_influence_doped_Ueffseq0_small/dat__g02_OMEGA01_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM
0.39167766522557534
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/no_se_final_beta20_withrest_omega0_influence_doped_Ueffseq0_small/dat__g02_OMEGA01000_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM
0.39167766522557534
/media/aiman/data/omega_influence_finite_doping_withrest_final_small/no_se_final_beta20_withrest_omega0_influence_doped_Ueffseq0_small/dat__g02_OMEGA00p1_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM
0.39167766522557534
/media/aiman/data/acoustic_beta20_withrest_omega0_influence_halffilling_Ueffleq0//dat__g031p622777_OMEGA01000_U1p5_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.5000000354920053
/tmp/ipykernel_30316/1552136659.py:80: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  contribs_from_minus_2U = -2.0*np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_bare_vertex".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0]
/media/aiman/data/acoustic_beta20_withrest_omega0_influence_halffilling_Ueffleq0//dat__g010_OMEGA0100_U1p5_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.5000024084314295
/media/aiman/data/acoustic_beta20_withrest_omega0_influence_halffilling_Ueffleq0//dat__g0100_OMEGA010000_U1p5_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.5000000412486796
/media/aiman/data/acoustic_beta20_withrest_omega0_influence_halffilling_Ueffleq0//dat__g01_OMEGA01_U1p5_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.49999992797357207
/media/aiman/data/acoustic_beta20_withrest_omega0_influence_halffilling_Ueffleq0//dat__g00p1_OMEGA00p01_U1p5_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.5000023343947849
/media/aiman/data/acoustic_beta20_withrest_omega0_influence_halffilling_Ueffleq0//dat__g010000000_OMEGA0100000000000000_U1p5_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.49999924114873007
/media/aiman/data/acoustic_beta20_withrest_omega0_influence_halffilling_Ueffleq0//dat__g00p316228_OMEGA00p1_U1p5_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.5000044117695774
/media/aiman/data/acoustic_beta20_withrest_omega0_influence_halffilling_Ueffleq0//dat__g03p162278_OMEGA010_U1p5_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.5000001736779712
/media/aiman/data/acoustic_beta20_withrest_omega0_influence_halffilling_Ueffgeq0//dat__g00p083666_OMEGA00p01_U2p2_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.49999999893276514
/media/aiman/data/acoustic_beta20_withrest_omega0_influence_halffilling_Ueffgeq0//dat__g083p666003_OMEGA010000_U2p2_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.5000000107910061
/media/aiman/data/acoustic_beta20_withrest_omega0_influence_halffilling_Ueffgeq0//dat__g08p3666_OMEGA0100_U2p2_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.5000000172361266
/media/aiman/data/acoustic_beta20_withrest_omega0_influence_halffilling_Ueffgeq0//dat__g02p645751_OMEGA010_U2p2_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.5000000684070388
/media/aiman/data/acoustic_beta20_withrest_omega0_influence_halffilling_Ueffgeq0//dat__g00p264575_OMEGA00p1_U2p2_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.5000095184076133
/media/aiman/data/acoustic_beta20_withrest_omega0_influence_halffilling_Ueffgeq0//dat__g00p83666_OMEGA01_U2p2_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.4999906233568561
/media/aiman/data/acoustic_beta20_withrest_omega0_influence_halffilling_Ueffgeq0//dat__g08366600p265341_OMEGA0100000000000000_U2p2_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.500000008133696
/media/aiman/data/acoustic_beta20_withrest_omega0_influence_halffilling_Ueffgeq0//dat__g026p457513_OMEGA01000_U2p2_V0_TP0_Mu0_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.5000000168963353
/media/aiman/data/bubble_fluct_diag/final_beta20_withrest_omega0_influence_doped_Ueffseq0_fine_for_bubble_fluctdiag_small//dat__g02_OMEGA00p6_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.39166860068557485
/media/aiman/data/bubble_fluct_diag/final_beta20_withrest_omega0_influence_doped_Ueffseq0_fine_for_bubble_fluctdiag_small//dat__g02_OMEGA00p7_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.39167763735098204
/media/aiman/data/bubble_fluct_diag/final_beta20_withrest_omega0_influence_doped_Ueffseq0_fine_for_bubble_fluctdiag_small//dat__g02_OMEGA00p3_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.39167489577445747
/media/aiman/data/bubble_fluct_diag/final_beta20_withrest_omega0_influence_doped_Ueffseq0_fine_for_bubble_fluctdiag_small//dat__g02_OMEGA00p8_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.3916776481875376
/media/aiman/data/bubble_fluct_diag/final_beta20_withrest_omega0_influence_doped_Ueffseq0_fine_for_bubble_fluctdiag_small//dat__g02_OMEGA00p2_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.39167766254538616
/media/aiman/data/bubble_fluct_diag/final_beta20_withrest_omega0_influence_doped_Ueffseq0_fine_for_bubble_fluctdiag_small//dat__g02_OMEGA00p5_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.391677649502873
/media/aiman/data/bubble_fluct_diag/final_beta20_withrest_omega0_influence_doped_Ueffseq0_fine_for_bubble_fluctdiag_small//dat__g02_OMEGA00p9_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.39167765762743423
/media/aiman/data/bubble_fluct_diag/final_beta20_withrest_omega0_influence_doped_Ueffseq0_fine_for_bubble_fluctdiag_small//dat__g02_OMEGA00p4_U1p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.3916776536404267
/media/aiman/data/bubble_fluct_diag/final_beta20_withrest_omega0_influence_doped_Ueffgeq0_fine_for_bubble_fluctdiag_small//dat__g01_OMEGA00p9_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.3916867928930937
/media/aiman/data/bubble_fluct_diag/final_beta20_withrest_omega0_influence_doped_Ueffgeq0_fine_for_bubble_fluctdiag_small//dat__g01_OMEGA00p3_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.39167766621676836
/media/aiman/data/bubble_fluct_diag/final_beta20_withrest_omega0_influence_doped_Ueffgeq0_fine_for_bubble_fluctdiag_small//dat__g01_OMEGA00p5_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.3916776658652777
/media/aiman/data/bubble_fluct_diag/final_beta20_withrest_omega0_influence_doped_Ueffgeq0_fine_for_bubble_fluctdiag_small//dat__g01_OMEGA00p8_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.391677665383815
/media/aiman/data/bubble_fluct_diag/final_beta20_withrest_omega0_influence_doped_Ueffgeq0_fine_for_bubble_fluctdiag_small//dat__g01_OMEGA00p4_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.3916778222229426
/media/aiman/data/bubble_fluct_diag/final_beta20_withrest_omega0_influence_doped_Ueffgeq0_fine_for_bubble_fluctdiag_small//dat__g01_OMEGA00p2_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.3916776662371872
/media/aiman/data/bubble_fluct_diag/final_beta20_withrest_omega0_influence_doped_Ueffgeq0_fine_for_bubble_fluctdiag_small//dat__g01_OMEGA00p6_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.39167766578630225
/media/aiman/data/bubble_fluct_diag/final_beta20_withrest_omega0_influence_doped_Ueffgeq0_fine_for_bubble_fluctdiag_small//dat__g01_OMEGA00p7_U2p5_V0_TP-0p25_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.39167791858134426
In [7]:
objs_doping_dependence = sorted(load(datnames_doping_dependence) , key=lambda o1: o1['filling'])
/media/aiman/data/chi_vs_doping//dat__g01p5_OMEGA01p5_U0_V0_TP0_Mu-2p8_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA5_C5_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.10626529599299556
/tmp/ipykernel_30316/1552136659.py:14: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  GammaXM_path = np.array(mf.params_file["Model/Special_paths/path_Gamma_X_M"])
/tmp/ipykernel_30316/1552136659.py:56: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  obj['lambda_sc'] = np.array(f["lambda_func/RE_SC"])[:, 0, :, 0]
/tmp/ipykernel_30316/1552136659.py:57: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  obj['lambda_d'] = np.array(f["lambda_func/RE_D"])[:, 0, :, 0]
/tmp/ipykernel_30316/1552136659.py:58: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  obj['lambda_m'] = np.array(f["lambda_func/RE_M"])[:, 136, :, 0]
/tmp/ipykernel_30316/1552136659.py:60: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  obj['w_d'] = np.array(f["w_func/RE_D"])[:, 136]
/tmp/ipykernel_30316/1552136659.py:61: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  obj['RE_Sigma'] = np.array(f["Sig/RE"])
/tmp/ipykernel_30316/1552136659.py:62: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  obj['IM_Sigma'] = np.array(f["Sig/IM"])
/tmp/ipykernel_30316/1552136659.py:63: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  obj["Sigma_momgrid"] = np.array(f["Sig/momgrid"])
/tmp/ipykernel_30316/1552136659.py:64: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  obj["Sigma_fgrid"] = np.array(f["Sig/fgrid"])
/tmp/ipykernel_30316/1552136659.py:78: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  contribs_from_minus_2U = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_bare_vertex".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0] + np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_sc_double_counting".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0] + np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_d_double_counting".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0] + np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_m_double_counting".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0]
/tmp/ipykernel_30316/1552136659.py:82: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_{0}_fl".format(chan))] = np.array(f["Flow_obs/S_Wave_Susc_info/RE_Susc_{0}".format(chan)])[0, special_idx]
/tmp/ipykernel_30316/1552136659.py:83: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_{0}_full".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0]
/tmp/ipykernel_30316/1552136659.py:84: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_{0}_bubble".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_bubble_contribution".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0]
/tmp/ipykernel_30316/1552136659.py:86: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_{0}_sbe_from_sc".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_nabla_sc".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0] + contribs_from_minus_2U/2.0
/tmp/ipykernel_30316/1552136659.py:87: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_{0}_sbe_from_d".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_nabla_d".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0] + 0.5 * contribs_from_minus_2U/2.0
/tmp/ipykernel_30316/1552136659.py:88: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_{0}_sbe_from_m".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_nabla_m".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0] + 1.5 * contribs_from_minus_2U/2.0
/tmp/ipykernel_30316/1552136659.py:91: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_{0}_sbe_from_Mm".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_M_m".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0]
/tmp/ipykernel_30316/1552136659.py:92: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_{0}_sbe_from_Md".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_M_d".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0]
/tmp/ipykernel_30316/1552136659.py:93: DeprecationWarning: `product` is deprecated as of NumPy 1.25.0, and will be removed in NumPy 2.0. Please use `prod` instead.
  chi_split_objs[("chi_{0}_sbe_from_Msc".format(chan))] = np.array(f["Flow_obs/Postprocessing_Susc_info/RE_Susc_{0}_vertex_contribution_from_M_sc".format(chan)])[0, special_idx, 0, 0, 0, 0, 0, 0]
/media/aiman/data/chi_vs_doping//dat__g01p5_OMEGA01p5_U0_V0_TP0_Mu-1p4_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA5_C5_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.2580834888302045
/media/aiman/data/chi_vs_doping//dat__g01p5_OMEGA01p5_U0_V0_TP0_Mu-2p4_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA5_C5_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.14527574887849176
/media/aiman/data/chi_vs_doping//dat__g01p5_OMEGA01p5_U0_V0_TP0_Mu-1p6_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA5_C5_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.23330782140567985
/media/aiman/data/chi_vs_doping//dat__g01p5_OMEGA01p5_U0_V0_TP0_Mu-2p2_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA5_C5_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.16590484542205364
/media/aiman/data/chi_vs_doping//dat__g01p5_OMEGA01p5_U0_V0_TP0_Mu-2_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA5_C5_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.18737211980141355
/media/aiman/data/chi_vs_doping//dat__g01p5_OMEGA01p5_U0_V0_TP0_Mu-1p8_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA5_C5_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.20979488347814196
/media/aiman/data/chi_vs_doping//dat__g01p5_OMEGA01p5_U0_V0_TP0_Mu-1p2_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA5_C5_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.2843494239588918
/media/aiman/data/chi_vs_doping//dat__g01p5_OMEGA01p5_U0_V0_TP0_Mu-1_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA5_C5_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.3124434061987892
/media/aiman/data/chi_vs_doping//dat__g01p5_OMEGA01p5_U0_V0_TP0_Mu-2p6_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1_BETA5_C5_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_NOMIXEDBUBS_FIXFILLING_RESTFUNC_ALLSYMM_SELFEN_FLOW
0.1254144684305078
In [8]:
def plot_sucs_vs_filling(objs_, chan = "sc,d", with_legend = True, title= "", lims = None, ax = None, no_xticks = False, no_yticks =False, square = True, no_ylabel = False):
    n_vals = [o['filling'] for o in objs_]
    max_sc_vals = [1.0/o['max_sc'] for o in objs_]
    max_d_vals = [1.0/o['max_d'] for o in objs_]
    max_m_vals = [1.0/o['max_m'] for o in objs_]

    dsc = 'max_dsc' in objs_[0].keys()
    max_dsc_vals = []
    if dsc:
        max_dsc_vals = [o['max_dsc'] for o in objs_]

    if ax == None:
        ax = plt.gca()

    if not no_xticks:
        ax.set_xlabel(r"$n$")
    else:
        ax.set_xticks([])

    if not no_yticks:
        if not no_ylabel:
            ax.set_ylabel(r"$\chi^{-1}/t$")
    else:
        ax.set_yticks([])


    if lims != None:
        ax.set_ylim(lims)
    
    U = objs_[-1]['U']
    Vh = objs_[-1]['Vh']
    #print(U)
    #print(Vh)
    sc_marker = r"o-" if (U == 0) else ("o-" if U == 2 else "o-")
    d_marker = r"s-" if (U == 0) else ("s-" if U == 2 else "s-")
    m_marker = r"^-" if (U == 0) else ("^-" if U == 2 else "^-")
    dsc_marker = r"H-"
    if title != "":
        ax.set_title(title)

    if square:
        ax.set_aspect('equal')
    if "m" in chan:
        ax.plot(n_vals, max_m_vals, m_marker, markersize=8, markeredgecolor='black', label=r"$\mathrm{M}$", color='b')
    if "d" in chan:
        line_obj, = ax.plot(n_vals, max_d_vals, d_marker, markersize=8, markeredgecolor='black',  label=r"$\mathrm{D}$", color='g')
        ax.plot([], [], sc_marker, markersize=8, markeredgecolor='black', label=r"$\mathrm{SC}$", color='r')

    if "sc" in chan:
        ax.plot(n_vals, max_sc_vals, sc_marker, markersize=8, markeredgecolor='black', label=r"$\mathrm{SC}$", color='r')
        
    if "d" in chan:
        line_obj.set_label(r"$\mathrm{D}$")
    if dsc:
        ax.plot(n_vals, max_dsc_vals, dsc_marker, markersize=8, markeredgecolor='black', label=r"$\mathrm{dSC}}$", color='purple')
    if square:
        ax.set_aspect('equal')
        ax.set_aspect(1./ax.get_data_ratio())
    if with_legend:
        ax.legend()
In [9]:
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(4.0*2*0.9, 3.1*1*0.9))  # Adjust figsize as needed

plot_sucs_vs_filling(objs_doping_dependence, ax=axes[0], square=False, chan="d", no_xticks=False)
plot_sucs_vs_filling(objs_doping_dependence, ax=axes[1], square=False, chan="sc", with_legend=False, no_ylabel = True)


plt.subplots_adjust(wspace=0.18, hspace=0.00)

#axes[0].set_title(r"$U_{eff} > 0$", loc="center", y=0.8, fontsize=15)
#axes[1].set_title(r"$U_{eff} < 0$", loc="center", y=0.8, fontsize=15)

plt.savefig('horizontal_doping_influence_beta5_Ueff=m3_withrest.svg', dpi=300, bbox_inches='tight', pad_inches=0)  # Save the figure with higher DPI for better resolution
/tmp/ipykernel_13027/82150483.py:1: UserWarning: cmr10 font should ideally be used with mathtext, set axes.formatter.use_mathtext to True
  fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(4.0*2*0.9, 3.1*1*0.9))  # Adjust figsize as needed
No description has been provided for this image
In [9]:
def plot_inv_sucs(objs_, with_legend = True, title= "", symlog= False, lims = None, ax = None, no_xticks = False, no_yticks =False, no_ylabel=False, square = True):
    omega0_vals = [o['Omega0'] for o in objs_]
    max_sc_vals = [1./o['max_sc'] for o in objs_]
    max_d_vals = [1./o['max_d'] for o in objs_]
    max_m_vals = [1./o['max_m'] for o in objs_]

    dsc = 'max_dsc' in objs_[0].keys()
    max_dsc_vals = []
    if dsc:
        max_dsc_vals = [1./o['max_dsc'] for o in objs_]

    if ax == None:
        ax = plt.gca()

    if not no_xticks:
        ax.set_xlabel(r"$\omega_0/t$")
    else:
        ax.set_xticks([])

    if not no_yticks:
        if not no_ylabel:
            ax.set_ylabel(r"$\chi^{-1}/t$")
    else:
        ax.set_yticks([])
        
    if symlog:
        ax.set_yscale('symlog', linthresh=1)
    #plt.yscale('log')


    if lims != None:
        ax.set_ylim(lims)
    
    U = objs_[-1]['U']
    Vh = objs_[-1]['Vh']
    
    sc_marker = r"o-" if (U == 0) else ("o-" if U == 2 else "o-")
    d_marker = r"s-" if (U == 0) else ("s-" if U == 2 else "s-")
    m_marker = r"^-" if (U == 0) else ("^-" if U == 2 else "^-")
    dsc_marker = r"H-"
    if title != "":
        ax.set_title(title)

    if square:
        ax.set_aspect('equal')

    omega0_vals_strs = []
    for omega in omega0_vals:
        if omega >= 0.99999:
            omega0_vals_strs.append(str(int(omega)))
        else:
            omega0_vals_strs.append(str(omega))
    ax.plot(omega0_vals_strs, max_m_vals, m_marker, markersize=8, markeredgecolor='black', label=r"$\mathrm{M}$", color='b')
    line_obj, = ax.plot(omega0_vals_strs, max_d_vals, d_marker, markersize=8, markeredgecolor='black',  label=r"$\mathrm{D}$", color='g')
    ax.plot(omega0_vals_strs, max_sc_vals, sc_marker, markersize=8, markeredgecolor='black', label=r"$\mathrm{SC}$", color='r')
    line_obj.set_label(r"$\mathrm{D}$")
    if dsc:
        ax.plot(omega0_vals_strs, max_dsc_vals, dsc_marker, markersize=8, markeredgecolor='black', label=r"$\mathrm{dSC}$", color='purple')
    if square:
        ax.set_aspect('equal')
        ax.set_aspect(1./ax.get_data_ratio())
    if with_legend:
        ax.legend()
In [10]:
def plot_inv_sucs_with_wo_se(objs_, objs_no_se_, ax = None, with_legend = True, title= "", symlog= False, square = True, lims=None, sig_nosig_legend = True):
    omega0_vals = [o['Omega0'] for o in objs_]
    max_sc_vals = [1./o['max_sc'] for o in objs_]
    max_d_vals = [1./o['max_d'] for o in objs_]
    max_m_vals = [1./o['max_m'] for o in objs_]
    max_sc_vals_no_se = [1./o['max_sc'] for o in objs_no_se_]
    max_d_vals_no_se = [1./o['max_d'] for o in objs_no_se_]
    max_m_vals_no_se = [1./o['max_m'] for o in objs_no_se_]

    dsc = 'max_dsc' in objs_[0].keys()
    max_dsc_vals = []
    max_dsc_vals_no_se = []

    if ax == None:
        ax = plt.gca()

    
    if dsc:
        max_dsc_vals = [1./o['max_dsc'] for o in objs_]
        max_dsc_vals_no_se = [1./o['max_dsc'] for o in objs_no_se_]
    if lims != None:
        ax.set_ylim(lims)

    ax.set_xlabel(r"$\omega_0/t$")
    ax.set_ylabel(r"$\chi^{-1}/t$")
    if symlog:
        ax.set_yscale('symlog')
    #plt.yscale('log')
    
    U = objs_[-1]['U']
    Vh = objs_[-1]['Vh']
    
    sc_marker = r"o-" if (U == 0) else ("o-" if U == 2 else "o-")
    d_marker = r"s-" if (U == 0) else ("s-" if U == 2 else "s-")
    m_marker = r"^-" if (U == 0) else ("^-" if U == 2 else "^-")
    dsc_marker = r"H-"

    sc_marker_no_se = r"o--"
    d_marker_no_se = r"s--"
    m_marker_no_se = r"^--"
    dsc_marker_no_se = r"H--"
    
    if title != "":
        ax.set_title(title)

    if square:
        ax.set_aspect('equal')

    omega0_vals_strs = []
    for omega in omega0_vals:
        if omega >= 0.99999:
            omega0_vals_strs.append(str(int(omega)))
        else:
            omega0_vals_strs.append(str(omega))
    
    ax.plot(omega0_vals_strs, max_m_vals_no_se, m_marker_no_se, markersize=8, markeredgecolor='black', markerfacecolor=(1.0, 1.0, 1.0, 0.0),  color='blue')
    ax.plot(omega0_vals_strs, max_dsc_vals_no_se, dsc_marker_no_se, markersize=8, markeredgecolor='black', markerfacecolor=(1.0, 1.0, 1.0, 0.0), color='purple')
    
    ax.plot(omega0_vals_strs, max_m_vals, m_marker, markersize=8, markeredgecolor='black', color='blue')
    ax.plot(omega0_vals_strs, max_dsc_vals, dsc_marker, markersize=8, markeredgecolor='black', color='purple')


    ax.plot([], "^", markeredgecolor='black', label=r"$\mathrm{M}$", color='blue', markersize=8)
    ax.plot([],"H",  markeredgecolor='black', label=r"$\mathrm{dSC}$", color='purple', markersize=8)

    
    if sig_nosig_legend:
        ax.plot([], "-", label=r"with $\dot{\Sigma}$", color='black')
        ax.plot([],"--", label=r"$\dot{\Sigma} = 0$", color='black')
    
    
    #line_obj, = plt.plot(omega0_vals_strs, max_d_vals, d_marker, markersize=8, markeredgecolor='black',  label=r"$\chi_{\mathrm{D}}^{-1}$", color='g')
    #plt.plot(omega0_vals_strs, max_sc_vals, sc_marker, markersize=8, markeredgecolor='black', label=r"$\chi_{\mathrm{SC}}^{-1}$", color='r')
    #line_obj.set_label(r"$\chi_{\mathrm{D}}^{-1}$")
    #if dsc:
    if square:
        ax.set_aspect('equal')
        ax.set_aspect(1./ax.get_data_ratio())
    if with_legend:
        ax.legend(loc="lower right", ncol=2, fontsize=12, columnspacing=1.0)
In [11]:
def plot_inv_sucs_with_wo_se_sc_and_d(objs_, objs_no_se_, ax = None, with_legend = True, title= "", symlog= False, no_xticks = False, square = True, show_dsc_and_m_legend = False, lims=None, no_ylabel=False):
    omega0_vals = [o['Omega0'] for o in objs_]
    max_sc_vals = [1./o['max_sc'] for o in objs_]
    max_d_vals = [1./o['max_d'] for o in objs_]
    max_m_vals = [1./o['max_m'] for o in objs_]
    max_sc_vals_no_se = [1./o['max_sc'] for o in objs_no_se_]
    max_d_vals_no_se = [1./o['max_d'] for o in objs_no_se_]
    max_m_vals_no_se = [1./o['max_m'] for o in objs_no_se_]
    if ax == None:
        ax = plt.gca()

    if not no_xticks:
        ax.set_xlabel(r"$\omega_0/t$")
    else:
        ax.set_xticks([])
    
    dsc = 'max_dsc' in objs_[0].keys()
    max_dsc_vals = []
    max_dsc_vals_no_se = []
    if dsc:
        max_dsc_vals = [1./o['max_dsc'] for o in objs_]
        max_dsc_vals_no_se = [1./o['max_dsc'] for o in objs_no_se_]
    if lims != None:
        ax.set_ylim(lims)

    if not no_xticks:
        ax.set_xlabel(r"$\omega_0/t$")
    if not no_ylabel:
        ax.set_ylabel(r"$\chi^{-1}/t$")
    if symlog:
        ax.set_yscale('symlog')
    #plt.yscale('log')
    
    U = objs_[-1]['U']
    Vh = objs_[-1]['Vh']
    
    sc_marker = r"o-" if (U == 0) else ("o-" if U == 2 else "o-")
    d_marker = r"s-" if (U == 0) else ("s-" if U == 2 else "s-")
    m_marker = r"^-" if (U == 0) else ("^-" if U == 2 else "^-")
    dsc_marker = r"H-"

    sc_marker_no_se = r"o--"
    d_marker_no_se = r"s--"
    m_marker_no_se = r"^--"
    dsc_marker_no_se = r"H--"
    
    if title != "":
        ax.set_title(title)
    omega0_vals_strs = []
    for omega in omega0_vals:
        if omega >= 0.99999:
            omega0_vals_strs.append(str(int(omega)))
        else:
            omega0_vals_strs.append(str(omega))
    
    if square:
        ax.set_aspect('equal')
    ax.plot(omega0_vals_strs, max_d_vals_no_se, d_marker_no_se, markersize=8, markeredgecolor='black', markerfacecolor=(1.0, 1.0, 1.0, 0.0),  color='green')
    ax.plot(omega0_vals_strs, max_sc_vals_no_se, sc_marker_no_se, markersize=8, markeredgecolor='black', markerfacecolor=(1.0, 1.0, 1.0, 0.0), color='red')
    
    ax.plot(omega0_vals_strs, max_d_vals, d_marker, markersize=8, markeredgecolor='black', color='green')
    ax.plot(omega0_vals_strs, max_sc_vals, sc_marker, markersize=8, markeredgecolor='black', color='red')


    
    ax.plot([], " ", markeredgecolor='black', label=r" ", color='blue', markersize=8)
    ax.plot([],"--", label=r"$\dot{\Sigma} = 0$", color='black')
    ax.plot([], "-", label=r"with $\dot{\Sigma}$", color='black')
    ax.plot([], " ", markeredgecolor='black', label=r" ", color='blue', markersize=8)

      
    ax.plot([], "^", markeredgecolor='black', label=r"$\mathrm{M}$", color='blue', markersize=8)
    ax.plot([], "s", markeredgecolor='black', label=r"$\mathrm{D}$", color='green', markersize=8)
    ax.plot([],"o",  markeredgecolor='black', label=r"$\mathrm{SC}$", color='red', markersize=8) 
    ax.plot([],"H",  markeredgecolor='black', label=r"$\mathrm{dSC}$", color='purple', markersize=8)


    if show_dsc_and_m_legend:
        ax.plot([], "^", markeredgecolor='black', label=r"$\mathrm{M}$", color='blue', markersize=8)
        ax.plot([],"H",  markeredgecolor='black', label=r"$\mathrm{dSC}$", color='purple', markersize=8)
     
    #line_obj, = plt.plot(omega0_vals_strs, max_d_vals, d_marker, markersize=8, markeredgecolor='black',  label=r"$\chi_{\mathrm{D}}^{-1}$", color='g')
    #plt.plot(omega0_vals_strs, max_sc_vals, sc_marker, markersize=8, markeredgecolor='black', label=r"$\chi_{\mathrm{SC}}^{-1}$", color='r')
    #line_obj.set_label(r"$\chi_{\mathrm{D}}^{-1}$")
    #if dsc:
    if square:
        ax.set_aspect('equal')
        ax.set_aspect(1./ax.get_data_ratio())
    if with_legend:
        ax.legend(loc="upper right", ncol=2, fontsize=11, columnspacing=0.3, bbox_to_anchor=(1.02, 1))
In [12]:
from matplotlib.ticker import MaxNLocator  # Correct import
from matplotlib.ticker import ScalarFormatter
def plot_fluct_diag_chi(channel, symlog = False, add_shade = False, geq = None, objs_ = objs_halffillingrightbottom, with_legend = False, dwave_sc = False, single_channel = None, title = "", with_M_ = False, with_symlog = False, ax_ = None, no_xticks=False):
    if ax_ is None:
        ax_ = plt.gca()
    vals_sc_full = []
    vals_sc_sc = []
    vals_sc_d = []
    vals_sc_m = []
    vals_sc_ueff = []
    vals_sc_bub = []

    with_M = ('chi_'+channel+'_sbe_from_Mm' in objs_[0]['chi_split'].keys()) and with_M_
    vals_sc_Msc = []
    vals_sc_Md = []
    vals_sc_Mm = []
    
    for o in objs_:
        vals_sc_full.append(o['chi_split']['chi_'+channel+'_full'])
        vals_sc_sc.append(o['chi_split']['chi_'+channel+'_sbe_from_sc'] + o['chi_split']['chi_'+channel+'_sbe_from_Msc'])
        vals_sc_d.append(o['chi_split']['chi_'+channel+'_sbe_from_d'] + o['chi_split']['chi_'+channel+'_sbe_from_Md'])
        vals_sc_m.append(o['chi_split']['chi_'+channel+'_sbe_from_m'] + o['chi_split']['chi_'+channel+'_sbe_from_Mm'])
        vals_sc_bub.append(o['chi_split']['chi_'+channel+'_bubble'])
        vals_sc_ueff.append(o['chi_split']['chi_'+channel+'_mbe'])
        #if with_M:
        vals_sc_Msc.append(o['chi_split']['chi_'+channel+'_sbe_from_Msc'])
        vals_sc_Md.append(o['chi_split']['chi_'+channel+'_sbe_from_Md'])
        vals_sc_Mm.append(o['chi_split']['chi_'+channel+'_sbe_from_Mm'])

    vals_sc_Msc = np.array(vals_sc_Msc)
    vals_sc_Md = np.array(vals_sc_Md)
    vals_sc_Mm = np.array(vals_sc_Mm)

    
    U = objs_[-1]['U']
    Vh = objs_[-1]['Vh']
    omega0_vals = [o['Omega0'] for o in objs_]
    
    sc_marker = r"o-" if (U == 0) else ("o-." if U == 2 else "o--")
    d_marker = r"s-" if (U == 0) else ("s-." if U == 2 else "s--")
    m_marker = r"^-" if (U == 0) else ("^-." if U == 2 else "^--")
    U_marker = r"x-" if (U == 0) else ("x-." if U == 2 else "x--")
    bubble_marker = r"*-" if (U == 0) else ("*-." if U == 2 else "*--")
    print(U, Vh)
    if title != "":
        ax_.set_title(title)
    ax_.set_xlabel(r"$\omega_0/t$")
    if geq is None:
        ax_.set_ylabel(r"$\chi^{"+(channel.upper() if channel != "dsc" else "dSC")+r"}t$")
        ax_.set_ylabel("")
    else:
        ax_.set_ylabel(r"$\chi t$")# (U_{eff} "+ (r">" if geq else r"<") + r" 0)$")
    if no_xticks:
        ax_.set_xticks([])
        ax_.set_xlabel("")
        
    ax_.axhline(0, color='gray')
    if with_symlog:
        ax_.set_yscale('symlog', linthresh=1)
    ax_.set_aspect('equal')


    omega0_vals_strs = []
    for omega in omega0_vals:
        if omega >= 0.99999:
            omega0_vals_strs.append(str(int(omega)))
        else:
            omega0_vals_strs.append(str(omega))
    
    
    the_color = None
    if channel == "sc":
        the_color = 'r'
    if channel == "m":
        the_color = "b"
    if channel == "d":
        the_color = "g"
    if channel == "dsc":
        the_color = "purple"
    
    line_obj = None
    if single_channel == 'd' or single_channel is None:
        line_obj, _, _ = ax_.errorbar(omega0_vals_strs,  vals_sc_d, elinewidth=7, yerr=[vals_sc_Md, np.zeros(len(vals_sc_Md))], ecolor=(0.0, 1.0, 0.0, 0.35), fmt=d_marker, markersize=8, markeredgecolor='black', markerfacecolor='g',label=r"$\chi^{"+channel.upper()+r"}_{\overline{\nabla}^D}$", color=the_color)
    if single_channel == 'm' or single_channel is None:
        ax_.errorbar(omega0_vals_strs, vals_sc_m, elinewidth=4.5, yerr=[vals_sc_Mm, np.zeros(len(vals_sc_Mm))], fmt = m_marker, ecolor=(0.0, 0.0, 1.0, 0.35), markersize=8, markeredgecolor='black', markerfacecolor='b', label=r"$\chi^{"+channel.upper()+r"}_{\overline{\nabla}^M}$", color=the_color)
    if (single_channel == 'sc' or single_channel is None):
        ax_.errorbar(omega0_vals_strs, vals_sc_sc, elinewidth=2.0, yerr = [vals_sc_Msc, np.zeros(len(vals_sc_Msc))], ecolor=(1.0, 0.0, 0.0, 0.35),  fmt = sc_marker, markersize=8, markeredgecolor='black', markerfacecolor='r', label=r"$\chi^{"+channel.upper()+r"}_{\overline{\nabla}^{SC}}$", color=the_color)
        line_obj.set_label(r"$\chi^{"+channel.upper()+r"}_{\overline{\nabla}^D}$")
    if (single_channel == 'u' or single_channel is None) and not dwave_sc:
        ax_.plot(omega0_vals_strs, vals_sc_ueff, U_marker, markersize=10, markeredgecolor='black', markerfacecolor='grey', label=r"$\chi^{"+channel.upper()+r"}_{U_{eff}}$", color=the_color)
    if single_channel == 'bubble' or single_channel is None:
        ax_.plot(omega0_vals_strs, vals_sc_bub, bubble_marker, markersize=12, markeredgecolor='black', markerfacecolor='white', label=r"$\chi^{"+channel.upper()+r"}_{bubble}$", color=the_color)

    if with_M:
        if single_channel == 'Msc' or single_channel is None:
            ax_.plot(omega0_vals_strs, vals_sc_Msc, sc_marker[0], label=r"$\chi^{"+channel.upper()+r"}_{M^{SC}}$", color=the_color)
        if single_channel == 'Md' or single_channel is None:
            ax_.plot(omega0_vals_strs, vals_sc_Md, d_marker[0], label=r"$\chi^{"+channel.upper()+r"}_{M^D}$", color=the_color)
        if single_channel == 'Mm' or single_channel is None:
            ax_.plot(omega0_vals_strs, vals_sc_Mm, m_marker[0], label=r"$\chi^{"+channel.upper()+r"}_{M^M}$", color=the_color)
        
    ax_.set_aspect('equal')
    ax_.set_aspect(1./ax_.get_data_ratio())
    if add_shade:
        ax_.axvspan(0, 0.9, color='gray', alpha=0.3)  # alpha controls transparency

    #plt.gca().yaxis.set_major_locator(MaxNLocator(nbins=6))   # 8 ticks on y-axis

    #plt.gca().yaxis.set_major_formatter(ScalarFormatter())
    #plt.gca().ticklabel_format(style='plain', axis='y')  # Ensure plain formatting

    
    #plt.gca().set_aspect('equal')
    if with_legend:
        ax_.legend()
In [130]:
# Half filling $U = 2.5t, V_h = 1.0t, U_{eff} = 1.5t$
In [13]:
#plt.rcParams["figure.figsize"] = (8,6)

objs_halffilling_upperhalf = sorted(objs_halffillinglefttop , key=lambda o1: o1['Omega0'])
objs_halffilling_lowerhalf = sorted(objs_halffillingrightbottom , key=lambda o1: o1['Omega0'])

objs_halffilling_upperhalf_acoustic = sorted(objs_halffillinglefttop_acoustic , key=lambda o1: o1['Omega0'])
objs_halffilling_lowerhalf_acoustic = sorted(objs_halffillingrightbottom_acoustic , key=lambda o1: o1['Omega0'])


#plot_fluct_diag_chi('sc', objs_ = objs_halffilling_upperhalf[2:-1])#, title ="$U = 2t, V_h = 1.7t$")
In [14]:
plot_inv_sucs(objs_halffilling_lowerhalf[1:-1], title ="$U_{eff} < 0$", lims=[-0.2, 7.5])
plt.savefig('halfleq.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution

#objs_halffilling_upperhalf[0]
/tmp/ipykernel_30316/1876461287.py:13: UserWarning: cmr10 font should ideally be used with mathtext, set axes.formatter.use_mathtext to True
  ax = plt.gca()
No description has been provided for this image
In [133]:
plot_inv_sucs(objs_halffilling_upperhalf[1:-1], title ="$U_{eff} > 0$", lims=[-0.2, 7.5])
plt.savefig('halfgeq.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution
/tmp/ipykernel_13027/1876461287.py:13: UserWarning: cmr10 font should ideally be used with mathtext, set axes.formatter.use_mathtext to True
  ax = plt.gca()
No description has been provided for this image
In [230]:
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(3.7*2*0.9, 3.3*1*0.9))  

plot_inv_sucs(objs_halffilling_upperhalf[1:-1], ax = axes[0], no_xticks = False, square=True)
plot_inv_sucs(objs_halffilling_lowerhalf[1:-1], ax = axes[1], square=True, with_legend = False, no_ylabel=True)

plt.subplots_adjust(wspace=0.0, hspace=0.00)

axes[0].set_title(r"$U_{\mathrm{eff}} > 0$", loc="center", y=1., fontsize=15)
axes[1].set_title(r"$U_{\mathrm{eff}} < 0$", loc="center", y=1., fontsize=15)

plt.savefig('horizontal_omega_influence_beta20_halffilling_withrest.svg', dpi=300, bbox_inches='tight', pad_inches=0)  # Save the figure with higher DPI for better resolution
/tmp/ipykernel_53564/3001197494.py:1: UserWarning: cmr10 font should ideally be used with mathtext, set axes.formatter.use_mathtext to True
  fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(3.7*2*0.9, 3.3*1*0.9))
No description has been provided for this image
In [231]:
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(3.7*2*0.9, 3.3*1*0.9))  

plot_inv_sucs(objs_doped_lefttop[1:-1], ax = axes[0], no_xticks = False, square=True, lims=[-0.2, 9.0])
plot_inv_sucs(objs_doped_rightbottom[1:-1], ax = axes[1], square=True, no_ylabel=True, with_legend = False, lims=[-0.2, 4.6])

plt.subplots_adjust(wspace=0.0, hspace=0.00)

font_settings = {'family': 'serif', 'size': 14, 'weight': 'bold'}


axes[0].set_title(r"$U_\mathrm{eff} > 0$", loc="center", y=1., fontsize=15, fontdict=font_settings)
axes[1].set_title(r"$U_\mathrm{eff} < 0$", loc="center", y=1., fontsize=15, fontdict=font_settings)

plt.savefig('horizontal_omega_influence_beta20_doped_withrest.svg', dpi=300, bbox_inches='tight', pad_inches=0)  # Save the figure with higher DPI for better resolution
/tmp/ipykernel_53564/3360883990.py:1: UserWarning: cmr10 font should ideally be used with mathtext, set axes.formatter.use_mathtext to True
  fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(3.7*2*0.9, 3.3*1*0.9))
No description has been provided for this image
In [890]:
plot_inv_sucs(objs_halffilling_lowerhalf_acoustic[1:-2], title ="$U_{eff} < 0$")
plt.savefig('halfleq_acoustic.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution

#objs_halffilling_upperhalf[0]
No description has been provided for this image
In [891]:
plot_inv_sucs(objs_halffilling_upperhalf_acoustic[1:-2], title ="$U_{eff} > 0$")
plt.savefig('halfgeq_acoustic.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution
No description has been provided for this image
In [305]:
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(3.7*2*0.9, 3.3*1*0.9))  

plot_inv_sucs(objs_halffilling_upperhalf_acoustic[1:-2], ax = axes[0], no_xticks = False, square=True)
plot_inv_sucs(objs_halffilling_lowerhalf_acoustic[1:-2], ax = axes[1], square=True, with_legend = False, no_ylabel=True)

plt.subplots_adjust(wspace=0.0, hspace=0.00)

axes[0].set_title(r"$U_{\mathrm{eff}} > 0$", loc="center", y=1., fontsize=15)
axes[1].set_title(r"$U_{\mathrm{eff}} < 0$", loc="center", y=1., fontsize=15)

plt.savefig('horizontal_omega_influence_beta20_halffilling_withrest_acoustic.svg', dpi=300, bbox_inches='tight', pad_inches=0)  # Save the figure with higher DPI for better resolution
/tmp/ipykernel_53564/3094668279.py:1: UserWarning: cmr10 font should ideally be used with mathtext, set axes.formatter.use_mathtext to True
  fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(3.7*2*0.9, 3.3*1*0.9))
No description has been provided for this image
In [552]:
from matplotlib.lines import Line2D


legend_elements_g1 = [
Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r'            '), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], markerfacecolor='blue', marker='^', markeredgecolor='black', markersize=8, linestyle='None', label=r'$\chi^{*}_{\overline{\nabla}^\mathrm{M}} + \chi^{*}_{M^\mathrm{M}}$'), # Green marker

    
    Line2D([0], [0], markerfacecolor='green', marker='s', markeredgecolor='black', markersize=8, linestyle='None', label=r'$\chi^{*}_{\overline{\nabla}^\mathrm{D}} + \chi^{*}_{M^\mathrm{D}}$'),   # Red marker

     Line2D([0], [0], markerfacecolor='red', marker='o', markeredgecolor='black', markersize=8, linestyle='None', label=r'$\chi^{*}_{\overline{\nabla}^\mathrm{SC}} + \chi^{*}_{M^\mathrm{SC}}$'),   # Blue marker
   

    Line2D([0], [0], markerfacecolor='grey', marker='x', markeredgecolor='black', markersize=10, linestyle='None', label=r'$\chi^{*}_{U_{eff}}$'),  # Blue marker

    Line2D([0], [0], markerfacecolor='white', marker='*', markeredgecolor='black', markersize=12, linestyle='None', label=r'$\chi^{*}_0$'),   # Blue marker

    #Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line


    #Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line


]

legend_elements_g2 = [
       # Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    
    Line2D([0], [0], color='blue', linestyle='--', label=r'$\chi^{\mathrm{M}}_{*}$'),   # Dotted red line
    
        
    Line2D([0], [0], color='green', linestyle='--', label=r'$\chi^{\mathrm{D}}_{*}$'),  # Dotted blue line

    Line2D([0], [0], color='red', linestyle='--', label=r'$\chi^{\mathrm{SC}}_{*}$'), # Dotted green line
]

fig, axes = plt.subplots(nrows=2, ncols=3, figsize=(4.8*3, 4.8*2))  # Adjust figsize as needed
plot_fluct_diag_chi('m', objs_ = objs_halffilling_upperhalf[1:-1], ax_ = axes[0][0], geq = True, add_shade=True, with_symlog = True, title ="")
plot_fluct_diag_chi('d', objs_ = objs_halffilling_upperhalf[1:-1], ax_ = axes[0][1], add_shade=True)#, title ="upper half")
plot_fluct_diag_chi('sc', objs_ = objs_halffilling_upperhalf[1:-1], ax_ = axes[0][2], add_shade=True)#, title ="upper half")
plot_fluct_diag_chi('m', objs_ = objs_halffilling_lowerhalf[1:-1], ax_ = axes[1][0], geq = False, add_shade=True)#, title ="upper half")
plot_fluct_diag_chi('d', objs_ = objs_halffilling_lowerhalf[1:-1], ax_ = axes[1][1], add_shade=True, with_symlog = True)#, title ="upper half")
plot_fluct_diag_chi('sc', objs_ = objs_halffilling_lowerhalf[1:-1], ax_ = axes[1][2], add_shade=True)#, title ="upper half")


l1 = axes[0][0].legend(handles=legend_elements_g1, loc='upper right', title='', ncol=2,
    handlelength=1.1,    # Shorter handles
    handletextpad=0.2,   # Less space between handles and text
    labelspacing=0.3,    # Less vertical space between labels
    borderpad=0.1,       # Smaller padding around the legend box
    columnspacing=0.4, frameon = True, fancybox=True # Less space between columns
                )
axes[0][0].add_artist(l1)

l2 = axes[0][0].legend(handles=legend_elements_g2, loc='upper center', title='', ncol=1, bbox_to_anchor=(0.5, 0.9), frameon = False)
axes[0][0].add_artist(l2)


#plt.legend(ncol=2)

plt.subplots_adjust(wspace=0.18, hspace=-0.01)

plt.savefig('fluctuation_diagnostics_optical_halffilling_beta20_withrest.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution


#plt.subplots_adjust(wspace=0.1, hspace=-0.1)
#plt.savefig('phase_diag_halffilling_beta20.png', dpi=300)  # Save the figure with higher DPI for better resolution
2.2 0.00392
2.2 0.00392
2.2 0.00392
1.5 0.008
1.5 0.008
1.5 0.008
No description has been provided for this image
In [67]:
from matplotlib.lines import Line2D


legend_elements_g1 = [
Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r'            '), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], markerfacecolor='blue', marker='^', markeredgecolor='black', markersize=8, linestyle='None', label=r'$\chi_{\overline{\nabla}^\mathrm{M}} + \chi_{M^\mathrm{M}}$'), # Green marker

    
    Line2D([0], [0], markerfacecolor='green', marker='s', markeredgecolor='black', markersize=8, linestyle='None', label=r'$\chi_{\overline{\nabla}^\mathrm{D}} + \chi_{M^\mathrm{D}}$'),   # Red marker

     Line2D([0], [0], markerfacecolor='red', marker='o', markeredgecolor='black', markersize=8, linestyle='None', label=r'$\chi_{\overline{\nabla}^\mathrm{SC}} + \chi_{M^\mathrm{SC}}$'),   # Blue marker
   

    Line2D([0], [0], markerfacecolor='grey', marker='x', markeredgecolor='black', markersize=10, linestyle='None', label=r'$\chi_{U_{\mathrm{eff}}}$'),  # Blue marker

    Line2D([0], [0], markerfacecolor='white', marker='*', markeredgecolor='black', markersize=12, linestyle='None', label=r'$\chi_{\mathrm{bubble}}$'),   # Blue marker

    #Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line


    #Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line


]

legend_elements_g2 = [
       # Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    
    Line2D([0], [0], color='blue', linestyle='--', label=r'$\chi^{\mathrm{M}}_{}$'),   # Dotted red line
    
        
    Line2D([0], [0], color='green', linestyle='--', label=r'$\chi^{\mathrm{D}}_{}$'),  # Dotted blue line

    Line2D([0], [0], color='red', linestyle='--', label=r'$\chi^{\mathrm{SC}}_{}$'), # Dotted green line
]

fig, axes = plt.subplots(nrows=2, ncols=3, figsize=(4.1*3, 4.1*2))  # Adjust figsize as needed
plot_fluct_diag_chi('m', objs_ = objs_halffilling_upperhalf[1:-1], ax_ = axes[0][0], no_xticks=True, geq = True, add_shade=False, with_symlog = True, title ="")
plot_fluct_diag_chi('d', objs_ = objs_halffilling_upperhalf[1:-1], ax_ = axes[0][1], no_xticks=True, add_shade=False)#, title ="upper half")
plot_fluct_diag_chi('sc', objs_ = objs_halffilling_upperhalf[1:-1], ax_ = axes[0][2], no_xticks=True, add_shade=False)#, title ="upper half")
plot_fluct_diag_chi('m', objs_ = objs_halffilling_lowerhalf[1:-1], ax_ = axes[1][0], geq = False, add_shade=False)#, title ="upper half")
plot_fluct_diag_chi('d', objs_ = objs_halffilling_lowerhalf[1:-1], ax_ = axes[1][1], add_shade=False, with_symlog = True)#, title ="upper half")
plot_fluct_diag_chi('sc', objs_ = objs_halffilling_lowerhalf[1:-1], ax_ = axes[1][2], add_shade=False)#, title ="upper half")


l1 = axes[0][0].legend(handles=legend_elements_g1, loc='upper right', title='', ncol=2,
    handlelength=1.1,    # Shorter handles
    handletextpad=0.2,   # Less space between handles and text
    labelspacing=0.3,    # Less vertical space between labels
    borderpad=0.1,       # Smaller padding around the legend box
    columnspacing=0.1, frameon = True, fancybox=True # Less space between columns
                )
axes[0][0].add_artist(l1)

#l2 = axes[0][0].legend(handles=legend_elements_g2, handlelength=1.3,handletextpad=0.2, loc='upper center', title='', ncol=1, bbox_to_anchor=(0.44, 0.95), frameon = False)
#axes[0][0].add_artist(l2)

#ax_right = axes[0][2].twinx()
#ax_right.tick_params(right=False, labelright=False)
#ax_right.spines['right'].set_visible(False)
#ax_right.set_ylabel(r'$U_{\mathrm{eff}} > 0$', fontsize=15)

#ax_right2 = axes[1][2].twinx()
#ax_right2.tick_params(right=False, labelright=False)
#ax_right2.spines['right'].set_visible(False)
#ax_right2.set_ylabel(r'$U_{\mathrm{eff}} < 0$', fontsize=15)

#plt.legend(ncol=2)

plt.subplots_adjust(wspace=0.18, hspace=-0.01)


fig.text(0.23, 0.88, r'$\chi^{\mathrm{M}}$', fontsize=16)

fig.text(0.24+0.27, 0.88, r'$\chi^{\mathrm{D}}$', fontsize=16)

fig.text(0.24+0.27+0.27, 0.88, r'$\chi^{\mathrm{SC}}$', fontsize=16)


fig.text(0.24+0.27+0.405, 0.68, r'$U_{\mathrm{eff}}> 0$', fontsize=16, rotation=90, ha='center', va='center')
fig.text(0.24+0.27+0.405, 0.32, r'$U_{\mathrm{eff}}< 0$', fontsize=16, rotation=90, ha='center', va='center')
plt.savefig('fluctuation_diagnostics_halffilling_beta20_withrest_optical.svg', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution


#plt.subplots_adjust(wspace=0.1, hspace=-0.1)
#plt.savefig('phase_diag_halffilling_beta20.png', dpi=300)  # Save the figure with higher DPI for better resolution
/tmp/ipykernel_13027/791364148.py:41: UserWarning: cmr10 font should ideally be used with mathtext, set axes.formatter.use_mathtext to True
  fig, axes = plt.subplots(nrows=2, ncols=3, figsize=(4.1*3, 4.1*2))  # Adjust figsize as needed
2.2 0.00392
2.2 0.00392
2.2 0.00392
1.5 0.008
1.5 0.008
1.5 0.008
No description has been provided for this image
In [19]:
from matplotlib.lines import Line2D


legend_elements_g1 = [
Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r'            '), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], markerfacecolor='blue', marker='^', markeredgecolor='black', markersize=8, linestyle='None', label=r'$\chi^{*}_{\overline{\nabla}^\mathrm{M}} + \chi^{*}_{M^\mathrm{M}}$'), # Green marker

    
    Line2D([0], [0], markerfacecolor='green', marker='s', markeredgecolor='black', markersize=8, linestyle='None', label=r'$\chi^{*}_{\overline{\nabla}^\mathrm{D}} + \chi^{*}_{M^\mathrm{D}}$'),   # Red marker

     Line2D([0], [0], markerfacecolor='red', marker='o', markeredgecolor='black', markersize=8, linestyle='None', label=r'$\chi^{*}_{\overline{\nabla}^\mathrm{SC}} + \chi^{*}_{M^\mathrm{SC}}$'),   # Blue marker
   

    Line2D([0], [0], markerfacecolor='grey', marker='x', markeredgecolor='black', markersize=10, linestyle='None', label=r'$\chi^{*}_{U_{eff}}$'),  # Blue marker

    Line2D([0], [0], markerfacecolor='yellow', marker='*', markeredgecolor='black', markersize=12, linestyle='None', label=r'$\chi^{*}_0$'),   # Blue marker

    #Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line


    #Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line


]

legend_elements_g2 = [
       # Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    
    Line2D([0], [0], color='blue', linestyle='--', label=r'$\chi^{\mathrm{M}}_{*}$'),   # Dotted red line
    
        
    Line2D([0], [0], color='green', linestyle='--', label=r'$\chi^{\mathrm{D}}_{*}$'),  # Dotted blue line

    Line2D([0], [0], color='red', linestyle='--', label=r'$\chi^{\mathrm{SC}}_{*}$'), # Dotted green line
]

fig, axes = plt.subplots(nrows=2, ncols=3, figsize=(4.8*3, 4.8*2))  # Adjust figsize as needed
plot_fluct_diag_chi('m', objs_ = objs_doped_lefttop[1:-1], ax_ = axes[0][0], geq = True, add_shade=False, title ="")
plot_fluct_diag_chi('d', objs_ = objs_doped_lefttop[1:-1], ax_ = axes[0][1], add_shade=False)#, title ="upper half")
plot_fluct_diag_chi('sc', objs_ = objs_doped_lefttop[1:-1], ax_ = axes[0][2], add_shade=False)#, title ="upper half")
plot_fluct_diag_chi('m', objs_ = objs_doped_rightbottom[1:-1], ax_ = axes[1][0], geq = False, add_shade=False)#, title ="upper half")
plot_fluct_diag_chi('d', objs_ = objs_doped_rightbottom[1:-1], ax_ = axes[1][1], add_shade=False)#, title ="upper half")
plot_fluct_diag_chi('sc', objs_ = objs_doped_rightbottom[1:-1], ax_ = axes[1][2], add_shade=False)#, title ="upper half")


l1 = axes[1][0].legend(handles=legend_elements_g1, loc='center right', bbox_to_anchor=(1.0, 0.62), title='', ncol=2,
    handlelength=1.1,    # Shorter handles
    handletextpad=0.2,   # Less space between handles and text
    labelspacing=0.3,    # Less vertical space between labels
    borderpad=0.1,       # Smaller padding around the legend box
    columnspacing=0.4, frameon = True, fancybox=True # Less space between columns
                )
axes[1][0].add_artist(l1)

l2 = axes[1][0].legend(handles=legend_elements_g2, loc='center right', title='', ncol=1, bbox_to_anchor=(0.66, 0.62), frameon = False)
axes[1][0].add_artist(l2)


#plt.legend(ncol=2)

plt.subplots_adjust(wspace=0.19, hspace=-0.01)

plt.savefig('fluctuation_diagnostics_optical_doped_beta20_withrest.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution


#plt.subplots_adjust(wspace=0.1, hspace=-0.1)
#plt.savefig('phase_diag_halffilling_beta20.png', dpi=300)  # Save the figure with higher DPI for better resolution
2.5 0.002
2.5 0.002
2.5 0.002
1.5 0.008
1.5 0.008
1.5 0.008
No description has been provided for this image
In [108]:
from matplotlib.lines import Line2D


legend_elements_g1 = [
Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r'            '), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], markerfacecolor='blue', marker='^', markeredgecolor='black', markersize=8, linestyle='None', label=r'$\chi_{\overline{\nabla}^\mathrm{M}} + \chi_{M^\mathrm{M}}$'), # Green marker

    
    Line2D([0], [0], markerfacecolor='green', marker='s', markeredgecolor='black', markersize=8, linestyle='None', label=r'$\chi_{\overline{\nabla}^\mathrm{D}} + \chi_{M^\mathrm{D}}$'),   # Red marker

     Line2D([0], [0], markerfacecolor='red', marker='o', markeredgecolor='black', markersize=8, linestyle='None', label=r'$\chi_{\overline{\nabla}^\mathrm{SC}} + \chi_{M^\mathrm{SC}}$'),   # Blue marker
   

    Line2D([0], [0], markerfacecolor='grey', marker='x', markeredgecolor='black', markersize=10, linestyle='None', label=r'$\chi_{U_{\mathrm{eff}}}$'),  # Blue marker

    Line2D([0], [0], markerfacecolor='white', marker='*', markeredgecolor='black', markersize=12, linestyle='None', label=r'$\chi_{\mathrm{bubble}}$'),   # Blue marker

    #Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line


    #Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line


]

legend_elements_g2 = [
       # Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    
    Line2D([0], [0], color='blue', linestyle='--', label=r'$\chi^{\mathrm{M}}_{}$'),   # Dotted red line
    
        
    Line2D([0], [0], color='green', linestyle='--', label=r'$\chi^{\mathrm{D}}_{}$'),  # Dotted blue line

    Line2D([0], [0], color='red', linestyle='--', label=r'$\chi^{\mathrm{SC}}_{}$'), # Dotted green line
]

fig, axes = plt.subplots(nrows=2, ncols=3, figsize=(4.1*3, 4.1*2))  # Adjust figsize as needed
plot_fluct_diag_chi('m', objs_ = objs_doped_lefttop[1:-1], ax_ = axes[0][0], geq = True, add_shade=False, title ="", no_xticks=True)
plot_fluct_diag_chi('d', objs_ = objs_doped_lefttop[1:-1], ax_ = axes[0][1], add_shade=False, no_xticks=True)#, title ="upper half")
plot_fluct_diag_chi('sc', objs_ = objs_doped_lefttop[1:-1], ax_ = axes[0][2], add_shade=False, no_xticks=True)#, title ="upper half")
plot_fluct_diag_chi('m', objs_ = objs_doped_rightbottom[1:-1], ax_ = axes[1][0], geq = False, add_shade=False)#, title ="upper half")
plot_fluct_diag_chi('d', objs_ = objs_doped_rightbottom[1:-1], ax_ = axes[1][1], add_shade=False)#, title ="upper half")
plot_fluct_diag_chi('sc', objs_ = objs_doped_rightbottom[1:-1], ax_ = axes[1][2], add_shade=False)#, title ="upper half")


l1 = axes[1][0].legend(handles=legend_elements_g1, loc='center right', title='', ncol=2,bbox_to_anchor=(1.0, 0.63),
    handlelength=1.1,    # Shorter handles
    handletextpad=0.2,   # Less space between handles and text
    labelspacing=0.3,    # Less vertical space between labels
    borderpad=0.1,       # Smaller padding around the legend box
    columnspacing=0.1, frameon = True, fancybox=True # Less space between columns
                )

#axes[1][0].legend(handles=legend_elements_g2, loc='center right', title='', ncol=1, bbox_to_anchor=(0.66, 0.62), frameon = False)

axes[1][0].add_artist(l1)

#l2 = axes[0][0].legend(handles=legend_elements_g2, handlelength=1.3,handletextpad=0.2, loc='upper center', title='', ncol=1, bbox_to_anchor=(0.44, 0.95), frameon = False)
#axes[0][0].add_artist(l2)

#ax_right = axes[0][2].twinx()
#ax_right.tick_params(right=False, labelright=False)
#ax_right.spines['right'].set_visible(False)
#ax_right.set_ylabel(r'$U_{\mathrm{eff}} > 0$', fontsize=15)

#ax_right2 = axes[1][2].twinx()
#ax_right2.tick_params(right=False, labelright=False)
#ax_right2.spines['right'].set_visible(False)
#ax_right2.set_ylabel(r'$U_{\mathrm{eff}} < 0$', fontsize=15)

#plt.legend(ncol=2)

plt.subplots_adjust(wspace=0.18, hspace=-0.01)


fig.text(0.23, 0.88, r'$\chi^{\mathrm{M}}$', fontsize=16)

fig.text(0.24+0.27, 0.88, r'$\chi^{\mathrm{D}}$', fontsize=16)

fig.text(0.24+0.27+0.27, 0.88, r'$\chi^{\mathrm{SC}}$', fontsize=16)


fig.text(0.24+0.27+0.405, 0.68, r'$U_{\mathrm{eff}}> 0$', fontsize=16, rotation=90, ha='center', va='center')
fig.text(0.24+0.27+0.405, 0.32, r'$U_{\mathrm{eff}}< 0$', fontsize=16, rotation=90, ha='center', va='center')
#plt.savefig('fluctuation_diagnostics_halffilling_beta20_withrest_acoustic.svg', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution
plt.savefig('fluctuation_diagnostics_doped_beta20_withrest_optical.svg', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution


#plt.subplots_adjust(wspace=0.1, hspace=-0.1)
#plt.savefig('phase_diag_halffilling_beta20.png', dpi=300)  # Save the figure with higher DPI for better resolution
/tmp/ipykernel_13027/3804780793.py:41: UserWarning: cmr10 font should ideally be used with mathtext, set axes.formatter.use_mathtext to True
  fig, axes = plt.subplots(nrows=2, ncols=3, figsize=(4.1*3, 4.1*2))  # Adjust figsize as needed
2.5 0.002
2.5 0.002
2.5 0.002
1.5 0.008
1.5 0.008
1.5 0.008
No description has been provided for this image
In [107]:
from matplotlib.lines import Line2D


legend_elements_g1 = [
Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r'            '), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], markerfacecolor='blue', marker='^', markeredgecolor='black', markersize=8, linestyle='None', label=r'$\chi_{\overline{\nabla}^\mathrm{M}} + \chi_{M^\mathrm{M}}$'), # Green marker

    
    Line2D([0], [0], markerfacecolor='green', marker='s', markeredgecolor='black', markersize=8, linestyle='None', label=r'$\chi_{\overline{\nabla}^\mathrm{D}} + \chi_{M^\mathrm{D}}$'),   # Red marker

     Line2D([0], [0], markerfacecolor='red', marker='o', markeredgecolor='black', markersize=8, linestyle='None', label=r'$\chi_{\overline{\nabla}^\mathrm{SC}} + \chi_{M^\mathrm{SC}}$'),   # Blue marker
   
    Line2D([0], [0], markerfacecolor='white', marker='*', markeredgecolor='black', markersize=12, linestyle='None', label=r'$\chi_{\mathrm{bubble}}$'),   # Blue marker

    #Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line


    #Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line


]

legend_elements_g2 = [
       # Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    
    Line2D([0], [0], color='blue', linestyle='--', label=r'$\chi^{\mathrm{M}}_{}$'),   # Dotted red line
    
        
    Line2D([0], [0], color='green', linestyle='--', label=r'$\chi^{\mathrm{D}}_{}$'),  # Dotted blue line

    Line2D([0], [0], color='red', linestyle='--', label=r'$\chi^{\mathrm{SC}}_{}$'), # Dotted green line
]



#l2 = axes[0][0].legend(handles=legend_elements_g2, handlelength=1.3,handletextpad=0.2, loc='upper center', title='', ncol=1, bbox_to_anchor=(0.44, 0.95), frameon = False)
#axes[0][0].add_artist(l2)

#ax_right = axes[0][2].twinx()
#ax_right.tick_params(right=False, labelright=False)
#ax_right.spines['right'].set_visible(False)
#ax_right.set_ylabel(r'$U_{\mathrm{eff}} > 0$', fontsize=15)

#ax_right2 = axes[1][2].twinx()
#ax_right2.tick_params(right=False, labelright=False)
#ax_right2.spines['right'].set_visible(False)
#ax_right2.set_ylabel(r'$U_{\mathrm{eff}} < 0$', fontsize=15)

#plt.legend(ncol=2)

fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(3.4*2*0.9, 3.3*1*0.9))  # Adjust figsize as needed

axes[1].set_yticks([])
plot_fluct_diag_chi('dsc', objs_ = objs_doped_rightbottom[1:-1], ax_ = axes[1], dwave_sc=True)#, title ="upper half")
ylims =axes[1].get_ylim()
axes[0].set_ylim(ylims)

plot_fluct_diag_chi('dsc', objs_ = objs_doped_lefttop[1:-1], ax_ = axes[0], dwave_sc=True)#, title ="upper half")

l1 = axes[0].legend(handles=legend_elements_g1, loc='center right', title='', ncol=2,bbox_to_anchor=(1.0, 0.46),
    handlelength=1.1,    # Shorter handles
    handletextpad=0.2,   # Less space between handles and text
    labelspacing=0.3,    # Less vertical space between labels
    borderpad=0.1,       # Smaller padding around the legend box
    columnspacing=0.1, frameon = True, fancybox=True # Less space between columns
                )

#axes[1][0].legend(handles=legend_elements_g2, loc='center right', title='', ncol=1, bbox_to_anchor=(0.66, 0.62), frameon = False)

axes[0].add_artist(l1)



plt.subplots_adjust(wspace=0.00, hspace=-0.01)

axes[0].set_title(r"$U_{\mathrm{eff}}> 0$")
axes[1].set_title(r"$U_{\mathrm{eff}} < 0$")
axes[0].set_ylabel(r"$\chi^{\mathrm{dSC}}t$")
#fig.text(0.23, 0.88, r'$\chi^{\mathrm{M}}$', fontsize=16)

#fig.text(0.24+0.27, 0.88, r'$\chi^{\mathrm{D}}$', fontsize=16)

#fig.text(0.24+0.27+0.27, 0.88, r'$\chi^{\mathrm{SC}}$', fontsize=16)


#fig.text(0.24+0.27+0.405, 0.68, r'$U_{\mathrm{eff}}> 0$', fontsize=16, rotation=0, ha='center', va='center')
#fig.text(0.24+0.27+0.405, 0.32, r'$U_{\mathrm{eff}}< 0$', fontsize=16, rotation=0, ha='center', va='center')
#plt.savefig('fluctuation_diagnostics_halffilling_beta20_withrest_acoustic.svg', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution
plt.savefig('fluctuation_diagnostics_dwave_doped_beta20_withrest_optical.svg', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution
/tmp/ipykernel_13027/1614580872.py:55: UserWarning: cmr10 font should ideally be used with mathtext, set axes.formatter.use_mathtext to True
  fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(3.4*2*0.9, 3.3*1*0.9))  # Adjust figsize as needed
1.5 0.008
2.5 0.002
No description has been provided for this image
In [134]:
from matplotlib.lines import Line2D


legend_elements_g1 = [
Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r'            '), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    Line2D([0], [0], markerfacecolor='blue', marker='^', markeredgecolor='black', markersize=8, linestyle='None', label=r'$\chi_{\overline{\nabla}^\mathrm{M}} + \chi_{M^\mathrm{M}}$'), # Green marker

    
    Line2D([0], [0], markerfacecolor='green', marker='s', markeredgecolor='black', markersize=8, linestyle='None', label=r'$\chi_{\overline{\nabla}^\mathrm{D}} + \chi_{M^\mathrm{D}}$'),   # Red marker

     Line2D([0], [0], markerfacecolor='red', marker='o', markeredgecolor='black', markersize=8, linestyle='None', label=r'$\chi_{\overline{\nabla}^\mathrm{SC}} + \chi_{M^\mathrm{SC}}$'),   # Blue marker
   

    Line2D([0], [0], markerfacecolor='grey', marker='x', markeredgecolor='black', markersize=10, linestyle='None', label=r'$\chi_{U_{eff}}$'),  # Blue marker

    Line2D([0], [0], markerfacecolor='white', marker='*', markeredgecolor='black', markersize=12, linestyle='None', label=r'$\chi_{\mathrm{bubble}}$'),   # Blue marker

    #Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line


    #Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line


]

legend_elements_g2 = [
       # Line2D([0], [0], color='black', linestyle='None', label=r''), # Dotted green line
    
    Line2D([0], [0], color='blue', linestyle='--', label=r'$\chi^{\mathrm{M}}_{}$'),   # Dotted red line
    
        
    Line2D([0], [0], color='green', linestyle='--', label=r'$\chi^{\mathrm{D}}_{}$'),  # Dotted blue line

    Line2D([0], [0], color='red', linestyle='--', label=r'$\chi^{\mathrm{SC}}_{}$'), # Dotted green line
]

fig, axes = plt.subplots(nrows=2, ncols=3, figsize=(4.1*3, 4.1*2))  # Adjust figsize as needed
plot_fluct_diag_chi('m', objs_ = objs_halffilling_upperhalf_acoustic[1:-2], ax_ = axes[0][0], geq = True, add_shade=False, no_xticks=True, with_symlog = True, title ="")
plot_fluct_diag_chi('d', objs_ = objs_halffilling_upperhalf_acoustic[1:-2], ax_ = axes[0][1], no_xticks=True, add_shade=False)#, title ="upper half")
plot_fluct_diag_chi('sc', objs_ = objs_halffilling_upperhalf_acoustic[1:-2], ax_ = axes[0][2], no_xticks=True, add_shade=False)#, title ="upper half")
plot_fluct_diag_chi('m', objs_ = objs_halffilling_lowerhalf_acoustic[1:-2], ax_ = axes[1][0], geq = False, add_shade=False)#, title ="upper half")
plot_fluct_diag_chi('d', objs_ = objs_halffilling_lowerhalf_acoustic[1:-2], ax_ = axes[1][1], add_shade=False, with_symlog = True)#, title ="upper half")
plot_fluct_diag_chi('sc', objs_ = objs_halffilling_lowerhalf_acoustic[1:-2], ax_ = axes[1][2], add_shade=False)#, title ="upper half")


l1 = axes[0][0].legend(handles=legend_elements_g1, loc='upper right', title='', ncol=2,
    handlelength=1.1,    # Shorter handles
    handletextpad=0.2,   # Less space between handles and text
    labelspacing=0.3,    # Less vertical space between labels
    borderpad=0.1,       # Smaller padding around the legend box
    columnspacing=0.1, frameon = True, fancybox=True # Less space between columns
                )
axes[0][0].add_artist(l1)

#l2 = axes[0][0].legend(handles=legend_elements_g2, handlelength=1.3,handletextpad=0.2, loc='upper center', title='', ncol=1, bbox_to_anchor=(0.44, 0.95), frameon = False)
#axes[0][0].add_artist(l2)

#ax_right = axes[0][2].twinx()
#ax_right.tick_params(right=False, labelright=False)
#ax_right.spines['right'].set_visible(False)
#ax_right.set_ylabel(r'$U_{\mathrm{eff}} > 0$', fontsize=15)

#ax_right2 = axes[1][2].twinx()
#ax_right2.tick_params(right=False, labelright=False)
#ax_right2.spines['right'].set_visible(False)
#ax_right2.set_ylabel(r'$U_{\mathrm{eff}} < 0$', fontsize=15)

#plt.legend(ncol=2)

plt.subplots_adjust(wspace=0.18, hspace=-0.01)


fig.text(0.23, 0.88, r'$\chi^{\mathrm{M}}$', fontsize=16)

fig.text(0.24+0.27, 0.88, r'$\chi^{\mathrm{D}}$', fontsize=16)

fig.text(0.24+0.27+0.27, 0.88, r'$\chi^{\mathrm{SC}}$', fontsize=16)


fig.text(0.24+0.27+0.405, 0.68, r'$U_{\mathrm{eff}}> 0$', fontsize=16, rotation=90, ha='center', va='center')
fig.text(0.24+0.27+0.405, 0.32, r'$U_{\mathrm{eff}}< 0$', fontsize=16, rotation=90, ha='center', va='center')
plt.savefig('fluctuation_diagnostics_halffilling_beta20_withrest_acoustic.svg', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution


#plt.subplots_adjust(wspace=0.1, hspace=-0.1)
#plt.savefig('phase_diag_halffilling_beta20.png', dpi=300)  # Save the figure with higher DPI for better resolution
/tmp/ipykernel_13027/1039410162.py:41: UserWarning: cmr10 font should ideally be used with mathtext, set axes.formatter.use_mathtext to True
  fig, axes = plt.subplots(nrows=2, ncols=3, figsize=(4.1*3, 4.1*2))  # Adjust figsize as needed
2.2 1.4
2.2 1.4
2.2 1.4
1.5 2.0
1.5 2.0
1.5 2.0
No description has been provided for this image

Finite doping $U = 2.5t, V_h = 1.0t, U_{eff} = 1.5t$¶

In [27]:
#plot_inv_sucs(objs_doped_lefttop[1:], title ="$U_{eff} > 0$")#title ="$U = 2.5t, V_H = 1.0t$")
#plt.savefig('dopedgeq.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution
In [28]:
plot_inv_sucs(objs_doped_lefttop[1:-1], title ="$U_{eff} > 0$")#, symlog=True)#title ="$U = 2.5t, V_H = 1.0t$")
plt.savefig('doped_with_rest_geq.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution
No description has been provided for this image
In [26]:
 
No description has been provided for this image
In [29]:
plot_inv_sucs(objs_doped_lefttop_no_se[1:-1], title ="$U_{eff} > 0, \dot{\Sigma} = 0$", symlog=True)#title ="$U = 2.5t, V_H = 1.0t$")
plt.savefig('no_se_doped_with_rest_geq.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution
No description has been provided for this image
In [109]:
plt.figure(figsize=(4.8, 4.0)) 
plot_inv_sucs_with_wo_se(objs_doped_lefttop[1:-1], objs_doped_lefttop_no_se[1:-1], title ="", symlog=False, square=False)#title ="$U = 2.5t, V_H = 1.0t$")
plt.savefig('se_effect_doped_with_rest_geq_zoom.svg', dpi=300, bbox_inches='tight', pad_inches=0)  # Save the figure with higher DPI for better resolution
/tmp/ipykernel_18817/4145096624.py:55: MatplotlibDeprecationWarning: Support for passing numbers through unit converters is deprecated since 3.5 and support will be removed two minor releases later; use Axis.convert_units instead.
  ax.plot([], "^", markeredgecolor='black', label=r"$(\chi^{\mathrm{M}})^{-1}$", color='blue', markersize=8)
/tmp/ipykernel_18817/4145096624.py:56: MatplotlibDeprecationWarning: Support for passing numbers through unit converters is deprecated since 3.5 and support will be removed two minor releases later; use Axis.convert_units instead.
  ax.plot([],"H",  markeredgecolor='black', label=r"$(\chi^{\mathrm{dSC}})^{-1}$", color='purple', markersize=8)
/tmp/ipykernel_18817/4145096624.py:58: MatplotlibDeprecationWarning: Support for passing numbers through unit converters is deprecated since 3.5 and support will be removed two minor releases later; use Axis.convert_units instead.
  ax.plot([], "-", label=r"with $\dot{\Sigma}$", color='black')
/tmp/ipykernel_18817/4145096624.py:59: MatplotlibDeprecationWarning: Support for passing numbers through unit converters is deprecated since 3.5 and support will be removed two minor releases later; use Axis.convert_units instead.
  ax.plot([],"--", label=r"$\dot{\Sigma} = 0$", color='black')
No description has been provided for this image
In [110]:
plt.figure(figsize=(4.8, 4.0)) 
plot_inv_sucs_with_wo_se_sc_and_d(objs_doped_rightbottom[1:-1], objs_doped_rightbottom_no_se[1:-1], title ="", symlog=False, square=False)#title ="$U = 2.5t, V_H = 1.0t$")
plt.savefig('se_effect_doped_with_rest_leq_zoom.svg', dpi=300, bbox_inches='tight', pad_inches=0)  # Save the figure with higher DPI for better resolution
/tmp/ipykernel_18817/3042629883.py:52: MatplotlibDeprecationWarning: Support for passing numbers through unit converters is deprecated since 3.5 and support will be removed two minor releases later; use Axis.convert_units instead.
  ax.plot([], "s", markeredgecolor='black', label=r"$(\chi^{\mathrm{D}})^{-1}$", color='green', markersize=8)
/tmp/ipykernel_18817/3042629883.py:53: MatplotlibDeprecationWarning: Support for passing numbers through unit converters is deprecated since 3.5 and support will be removed two minor releases later; use Axis.convert_units instead.
  ax.plot([],"o",  markeredgecolor='black', label=r"$(\chi^{\mathrm{SC}})^{-1}$", color='red', markersize=8)
/tmp/ipykernel_18817/3042629883.py:55: MatplotlibDeprecationWarning: Support for passing numbers through unit converters is deprecated since 3.5 and support will be removed two minor releases later; use Axis.convert_units instead.
  ax.plot([], "-", label=r"with $\dot{\Sigma}$", color='black')
/tmp/ipykernel_18817/3042629883.py:56: MatplotlibDeprecationWarning: Support for passing numbers through unit converters is deprecated since 3.5 and support will be removed two minor releases later; use Axis.convert_units instead.
  ax.plot([],"--", label=r"$\dot{\Sigma} = 0$", color='black')
No description has been provided for this image
In [304]:
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(3.7*2*0.9, 3.3*1*0.9))  

plot_inv_sucs_with_wo_se_sc_and_d(objs_doped_rightbottom[1:-1], objs_doped_rightbottom_no_se[1:-1], with_legend=True, ax = axes[1], no_ylabel=True, title ="", symlog=False, square=True, no_xticks=False, show_dsc_and_m_legend= False)#title ="$U = 2.5t, V_H = 1.0t$")
plot_inv_sucs_with_wo_se(objs_doped_lefttop[1:-1], objs_doped_lefttop_no_se[1:-1], ax = axes[0], with_legend=False,sig_nosig_legend = False, title ="", symlog=False, square=True)#title ="$U = 2.5t, V_H = 1.0t$")

plt.subplots_adjust(wspace=0.0, hspace=0.00)


axes[1].set_title(r"$U_{\mathrm{eff}} < 0$", loc="center", y=1.0, x=0.5, fontsize=15)
axes[0].set_title(r"$U_{\mathrm{eff}} > 0$", loc="center", y=1.0, x=0.5, fontsize=15)


plt.savefig('horizontal_se_effect_doped_with_rest_zoom.svg', dpi=300, bbox_inches='tight', pad_inches=0)  # Save the figure with higher DPI for better resolution
/tmp/ipykernel_53564/770704513.py:1: UserWarning: cmr10 font should ideally be used with mathtext, set axes.formatter.use_mathtext to True
  fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(3.7*2*0.9, 3.3*1*0.9))
/tmp/ipykernel_53564/2638232444.py:66: MatplotlibDeprecationWarning: Support for passing numbers through unit converters is deprecated since 3.5 and support will be removed two minor releases later; use Axis.convert_units instead.
  ax.plot([], " ", markeredgecolor='black', label=r" ", color='blue', markersize=8)
/tmp/ipykernel_53564/2638232444.py:67: MatplotlibDeprecationWarning: Support for passing numbers through unit converters is deprecated since 3.5 and support will be removed two minor releases later; use Axis.convert_units instead.
  ax.plot([],"--", label=r"$\dot{\Sigma} = 0$", color='black')
/tmp/ipykernel_53564/2638232444.py:68: MatplotlibDeprecationWarning: Support for passing numbers through unit converters is deprecated since 3.5 and support will be removed two minor releases later; use Axis.convert_units instead.
  ax.plot([], "-", label=r"with $\dot{\Sigma}$", color='black')
/tmp/ipykernel_53564/2638232444.py:69: MatplotlibDeprecationWarning: Support for passing numbers through unit converters is deprecated since 3.5 and support will be removed two minor releases later; use Axis.convert_units instead.
  ax.plot([], " ", markeredgecolor='black', label=r" ", color='blue', markersize=8)
/tmp/ipykernel_53564/2638232444.py:72: MatplotlibDeprecationWarning: Support for passing numbers through unit converters is deprecated since 3.5 and support will be removed two minor releases later; use Axis.convert_units instead.
  ax.plot([], "^", markeredgecolor='black', label=r"$\mathrm{M}$", color='blue', markersize=8)
/tmp/ipykernel_53564/2638232444.py:73: MatplotlibDeprecationWarning: Support for passing numbers through unit converters is deprecated since 3.5 and support will be removed two minor releases later; use Axis.convert_units instead.
  ax.plot([], "s", markeredgecolor='black', label=r"$\mathrm{D}$", color='green', markersize=8)
/tmp/ipykernel_53564/2638232444.py:74: MatplotlibDeprecationWarning: Support for passing numbers through unit converters is deprecated since 3.5 and support will be removed two minor releases later; use Axis.convert_units instead.
  ax.plot([],"o",  markeredgecolor='black', label=r"$\mathrm{SC}$", color='red', markersize=8)
/tmp/ipykernel_53564/2638232444.py:75: MatplotlibDeprecationWarning: Support for passing numbers through unit converters is deprecated since 3.5 and support will be removed two minor releases later; use Axis.convert_units instead.
  ax.plot([],"H",  markeredgecolor='black', label=r"$\mathrm{dSC}$", color='purple', markersize=8)
/tmp/ipykernel_53564/101069314.py:63: MatplotlibDeprecationWarning: Support for passing numbers through unit converters is deprecated since 3.5 and support will be removed two minor releases later; use Axis.convert_units instead.
  ax.plot([], "^", markeredgecolor='black', label=r"$\mathrm{M}$", color='blue', markersize=8)
/tmp/ipykernel_53564/101069314.py:64: MatplotlibDeprecationWarning: Support for passing numbers through unit converters is deprecated since 3.5 and support will be removed two minor releases later; use Axis.convert_units instead.
  ax.plot([],"H",  markeredgecolor='black', label=r"$\mathrm{dSC}$", color='purple', markersize=8)
No description has been provided for this image
In [962]:
#(small magnetic fluctuations -> garbage)
plot_inv_sucs_with_wo_se(objs_doped_lefttop[2:-1], objs_doped_rightbottom_no_se[2:-1], title ="$U_{eff} > 0$", symlog=False)#title ="$U = 2.5t, V_H = 1.0t$")
plt.savefig('se_effect_doped_with_rest_geq.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution
No description has been provided for this image
In [ ]:
 
In [31]:
plot_fluct_diag_chi('sc', objs_ = objs_doped_lefttop[1:])#, title ="upper half")
plt.savefig('doped_sc_Ugeq.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution
2.5 0.0002
No description has been provided for this image
In [32]:
plot_fluct_diag_chi('d', objs_ = objs_doped_lefttop[1:])#, title ="upper half")
plt.savefig('doped_d_Ugeq.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution
2.5 0.0002
No description has been provided for this image
In [33]:
plot_fluct_diag_chi('m', objs_ = objs_doped_lefttop[1:])#, title ="upper half")
plt.savefig('doped_m_Ugeq.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution
2.5 0.0002
No description has been provided for this image
In [34]:
plot_fluct_diag_chi('dsc', objs_ = objs_doped_lefttop[1:])#, title ="upper half")
plt.savefig('doped_dsc_Ugeq.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution
2.5 0.0002
No description has been provided for this image

Finite doping $U = 1.7t, V_h = 2.2t, U_{eff} = -0.5t$¶

In [311]:
plot_inv_sucs(objs_doped_rightbottom[1:], title ="$U_{eff} < 0$")
plt.savefig('dopedleq.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution
No description has been provided for this image
In [36]:
plot_inv_sucs(objs_doped_rightbottom[1:-1], title ="$U_{eff} < 0$")
plt.savefig('with_rest_dopedleq.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution
No description has been provided for this image
In [55]:
plot_inv_sucs(objs_doped_rightbottom_no_se[1:], title ="$U_{eff} < 0$")
plt.savefig('with_rest_dopedleq_no_se.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_1174708/2912924763.py in <module>
----> 1 plot_inv_sucs(objs_doped_rightbottom_no_se[1:], title ="$U_{eff} < 0$")
      2 plt.savefig('with_rest_dopedleq_no_se.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution

NameError: name 'objs_doped_rightbottom_no_se' is not defined
In [246]:
plot_fluct_diag_chi('sc', objs_ = objs_doped_rightbottom[1:])#, title ="upper half")
plt.savefig('doped_sc_Uleq.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution
No description has been provided for this image
In [126]:
plot_fluct_diag_chi('d', objs_ = objs_doped_rightbottom[1:])#, title ="upper half")
plt.savefig('doped_d_Uleq.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution
No description has been provided for this image
In [248]:
plot_fluct_diag_chi('m', objs_ = objs_doped_rightbottom[1:])#, title ="upper half")
plt.savefig('doped_m_Uleq.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution
No description has been provided for this image
In [37]:
plot_fluct_diag_chi('dsc', objs_ = objs_doped_rightbottom[1:])#, title ="upper half")
plt.savefig('doped_dsc_Uleq.png', dpi=300, bbox_inches="tight")  # Save the figure with higher DPI for better resolution
No description has been provided for this image
In [49]:
 
In [15]:
def get_bubble_integrand(G1, G2, q_mom_idx, ):
    return G

def compute_bare_green(freq, k, t, tp, mu):
    """
    Compute the bare Green's function G0 for a given momentum coordinate and frequency.
    
    Parameters:
      freq : complex or float
             Frequency at which to evaluate the Green's function. For Matsubara frequencies,
             use freq = 1j*omega.
      k    : array-like of length 2
             Momentum coordinate [kx, ky] in the Brillouin zone.
      t    : float
             Nearest-neighbor hopping amplitude.
      tp   : float
             Next-nearest-neighbor hopping amplitude.
      mu   : float
             Chemical potential.
             
    Returns:
      G0   : complex
             The bare Green's function evaluated at (freq, k).
    """
    kx, ky = k
    # Calculate the non-interacting dispersion epsilon(k)
    epsilon = -2 * t * (np.cos(kx) + np.cos(ky)) - 4 * tp * np.cos(kx) * np.cos(ky)
    # Compute the shifted dispersion: xi(k) = epsilon(k) - mu
    xi = epsilon - mu
    # Compute the bare Green's function: G0(iω,k)=1/(iω - xi(k))
    G0 = 1.0 / (freq - xi)
    return G0


def compute_dressed_green(RE_Sigma, IM_Sigma, fgrid, momgrid, t, tp, mu):
    """
    Compute the dressed Green's function G using the Dyson equation:
    
        G(iω,k) = 1 / ( G0(iω,k)^{-1} - Σ(iω,k) )
    
    but now the self-energy is provided via its real and imaginary parts.
    
    Parameters:
      RE_Sigma: numpy array of shape (n_freq, n_mom) with the real part of the self-energy.
      IM_Sigma: numpy array of shape (n_freq, n_mom) with the imaginary part of the self-energy.
      fgrid   : numpy array of Matsubara frequencies (real numbers; use 1j*f for the frequency).
      momgrid : numpy array of shape (n_mom, 2) with momentum coordinates (kx, ky) in the Brillouin zone.
      t       : float, nearest-neighbor hopping amplitude.
      tp      : float, next-nearest-neighbor hopping amplitude.
      mu      : float, chemical potential.
      
    Returns:
      G       : numpy array of shape (n_freq, n_mom)
                The dressed Green's function.
    """
    # Combine the real and imaginary parts into a complex self-energy:
    Sigma = RE_Sigma + 1j * IM_Sigma

    n_freq = len(fgrid)
    n_mom = len(momgrid)
    
    # Preallocate an array for the bare Green's function.
    G0 = np.empty((n_freq, n_mom), dtype=complex)
    
    # Loop over momentum and frequency to compute G0 for each combination.
    for m, k in enumerate(momgrid):
        for i, freq in enumerate(fgrid):
            # Here we assume fgrid contains the Matsubara frequencies as real numbers.
            # Multiply by 1j to obtain the complex frequency.
            G0[i, m] = compute_bare_green(1j * freq, k, t, tp, mu)
    
    # Compute the dressed Green's function using the Dyson equation:
    G = 1.0 / (1.0 / G0 - Sigma)
    
    return G



def compute_quasiparticle_properties(RE_Sigma, IM_Sigma, fgrid, no_interpolate=False):
    """
    Compute the quasiparticle residue Z and the interpolated self-energy at zero frequency, Sigma0,
    for each momentum point by performing a cubic interpolation of the self-energy on the Matsubara frequency grid.
    
    Parameters:
      RE_Sigma : numpy array of shape (n_freq, n_mom)
                 Real part of the Matsubara self-energy.
      IM_Sigma : numpy array of shape (n_freq, n_mom)
                 Imaginary part of the Matsubara self-energy.
      fgrid    : numpy array of Matsubara frequencies (real numbers).
                 These frequencies will be used in the interpolation.
      
    Returns:
      Z      : numpy array of shape (n_mom,)
               Quasiparticle residue computed as
               Z(k) = 1 / (1 - [dSigma/df|_{f=0}]/i)
      Sigma0 : numpy array of shape (n_mom,)
               The extrapolated self-energy at zero frequency, Sigma(0), obtained from the cubic fit.
    """
    # Combine real and imaginary parts into a complex self-energy
    Sigma = RE_Sigma + 1j * IM_Sigma
    
    n_freq, n_mom = Sigma.shape
    # Choose the "first" Matsubara frequency at index n_freq//2 and the two following points.
    idx0 = n_freq // 2
    indices = [idx0, idx0+1, idx0+2]
    
    # Preallocate arrays for Sigma(0) and its derivative dSigma/df at f=0.
    Sigma0 = np.zeros(n_mom, dtype=complex)
    dSigma0 = np.zeros(n_mom, dtype=complex)
    
    # For each momentum point, perform a cubic polynomial fit: P(f)=a f^3 + b f^2 + c f + d.
    # Then, P(0)=d (Sigma0) and P'(0)=c (the derivative).
    for m in range(n_mom):
        freqs = fgrid[indices]
        sigma_vals = Sigma[indices, m]
            
        if no_interpolate:
            Sigma0[m] = sigma_vals[0]
            dSigma0[m] = (sigma_vals[1] - sigma_vals[0])/freqs[0]
        else:
            coeffs = np.polyfit(freqs, sigma_vals, 3)
            Sigma0[m] = np.polyval(coeffs, 0)
            dSigma0[m] = coeffs[-2]  # The coefficient of f is the derivative at 0.
    
    # Identify the quasiparticle residue from the low-frequency expansion:
    #   Sigma(i f) ≈ Sigma(0) + (1 - 1/Z) i f   =>   1 - 1/Z = dSigma0 / i.
    Z = 1.0 / (1 - dSigma0 / 1j)
    # For a Fermi liquid, Z should be real.
    Z = Z
    Gamma = np.imag(Sigma0)
    
    return Z, Gamma, Sigma0

def compute_coherent_green(RE_Sigma, IM_Sigma, fgrid, momgrid, t, tp, mu, no_interpolate=False):
    """
    Compute the coherent part of the Green's function G_coh for a square lattice Hubbard model.
    
    The coherent Green's function is given by:
    
        G_coh(iω,k) = Z(k) / [ iω - ξ_coh(k) ],
    
    where the renormalized dispersion is:
    
        ξ_coh(k) = Z(k) [ ξ(k) + Re Σ(0,k) ],
    
    with ξ(k)= ε(k)-μ and the bare dispersion on the square lattice:
    
        ε(k) = -2t (cos kx + cos ky) - 4tp cos kx cos ky.
    
    This function first computes the quasiparticle properties (Z and Sigma0) using 
    `compute_quasiparticle_properties`, then calculates ξ_coh, and finally constructs G_coh.
    
    Parameters:
      RE_Sigma : numpy array of shape (n_freq, n_mom)
                 Real part of the Matsubara self-energy.
      IM_Sigma : numpy array of shape (n_freq, n_mom)
                 Imaginary part of the Matsubara self-energy.
      fgrid    : numpy array of Matsubara frequencies (real numbers).
      momgrid  : numpy array of shape (n_mom, 2)
                 Momentum coordinates [kx, ky] in the Brillouin zone.
      t        : float
                 Nearest-neighbor hopping amplitude.
      tp       : float
                 Next-nearest-neighbor hopping amplitude.
      mu       : float
                 Chemical potential.
      
    Returns:
      G_coh  : numpy array of shape (n_freq, n_mom)
               Coherent Green's function.
      Z      : numpy array of shape (n_mom,)
               Quasiparticle residue.
      xi_coh : numpy array of shape (n_mom,)
               Renormalized dispersion for the coherent quasiparticles.
    """
    # First, compute the quasiparticle residue Z and the extrapolated self-energy Sigma0.
    Z, Gamma, Sigma0 = compute_quasiparticle_properties(RE_Sigma, IM_Sigma, fgrid, no_interpolate)
    
    # Compute the bare dispersion for each momentum point.
    kx = momgrid[:, 0]
    ky = momgrid[:, 1]
    epsilon = -2 * t * (np.cos(kx) + np.cos(ky)) - 4 * tp * np.cos(kx) * np.cos(ky)
    xi = epsilon - mu  # ξ(k) = ε(k) - μ
    
    # Renormalized (coherent) dispersion:
    xi_coh = Z * (xi + np.real(Sigma0))

    
    # Construct the complex Matsubara frequencies.
    iw = 1j * fgrid  # shape: (n_freq,)
    
    # Build the coherent Green's function:
    # G_coh(iω,k) = Z(k) / (iω - ξ_coh(k))
    G_coh = Z[None, :] / (iw[:, None] - xi_coh[None, :] + 1j*Z[None, :]*Gamma[None, :])
    
    return G_coh, Z, Gamma, xi_coh
In [16]:
P_IN_K = 5
K_DIM = 16
K_DIM_refined = K_DIM * P_IN_K
n_refined = K_DIM_refined * K_DIM_refined
refined_momgrid = np.zeros((n_refined, 2))
d_refined = 2 * np.pi / K_DIM_refined
for i in range(n_refined):
    refined_momgrid[i, 0] = (i // K_DIM_refined) * d_refined
    refined_momgrid[i, 1] = (i % K_DIM_refined) * d_refined
In [17]:
import warnings
warnings.filterwarnings('ignore')


ReZs = []
ImZs = []
omegas = []
G_cohs = []
G_incohs = []
Gs = []
xi_cohs = [] # renormalised dispersion

Gammas = []

BETA = 20.0
for obj in objs_doped_lefttop:# + objs_bubdiagnostics_doped_lefttop: 
    
    omega0 = obj["Omega0"]
    print(omega0)
    #if omega0 < 1.0:
    #    continue
    omegas.append(omega0)
    #objs_doped_rightbottom
    Sig_RE = obj["RE_Sigma"][:, :, 0, 0]
    Sig_IM = obj["IM_Sigma"][:, :, 0, 0]
    momgrid = obj["Sigma_momgrid"]
    fgrid = obj["Sigma_fgrid"]
    plt.plot(fgrid, Sig_IM[:, 0], "*", label=obj["Omega0"])

    delta_mu = obj["delta_mu"]

    
    #Z, Sig_cont = compute_quasiparticle_properties(Sig_RE, Sig_IM, fgrid)
    print(delta_mu)
    mu = -1.0 + delta_mu
    tp = -0.25
    
    G_coh, Z, Gamma, xi_coh = compute_coherent_green(Sig_RE, Sig_IM, fgrid, momgrid, 1.0, tp, mu, no_interpolate= True)
    G = compute_dressed_green(Sig_RE, Sig_IM, fgrid, momgrid, 1.0, tp, mu)
    G_incoh = G - G_coh
    
    G_cohs.append(G_coh)
    Gs.append(G)
    G_incohs.append(G_incoh)
    
    xi_cohs.append(xi_coh)
    print(Sig_IM[80, :])
    ReZs.append(np.min(np.real(Z)))#[128+8])
    ImZs.append(np.max(np.imag(Z)))#[128+8])
    Gammas.append(np.min(Gamma))
    print(np.min(Gamma), np.max(Gamma), np.min(Sig_IM[80, :]))

plt.legend()
0.01
-0.04491963286221856
[-0.05036069 -0.05073875 -0.05160089 -0.05341533 -0.05636831 -0.06114103
 -0.06629531 -0.07013141 -0.07114637 -0.07013141 -0.06629531 -0.06114103
 -0.05636831 -0.05341533 -0.05160089 -0.05073875 -0.05073875 -0.05097254
 -0.05200069 -0.05382011 -0.05703162 -0.06141806 -0.06606085 -0.06873581
 -0.0696147  -0.06873581 -0.06606085 -0.06141806 -0.05703162 -0.05382011
 -0.05200069 -0.05097254 -0.05160089 -0.05200069 -0.05310981 -0.05532251
 -0.05860081 -0.06198809 -0.06396518 -0.06576273 -0.06647224 -0.06576273
 -0.06396518 -0.06198809 -0.05860081 -0.05532251 -0.05310981 -0.05200069
 -0.05341533 -0.05382011 -0.05532251 -0.05781792 -0.06022288 -0.06082875
 -0.061375   -0.06239378 -0.0631734  -0.06239378 -0.061375   -0.06082875
 -0.06022288 -0.05781792 -0.05532251 -0.05382011 -0.05636831 -0.05703162
 -0.05860081 -0.06022288 -0.05996745 -0.0594462  -0.05922777 -0.05937615
 -0.059248   -0.05937615 -0.05922777 -0.0594462  -0.05996745 -0.06022288
 -0.05860081 -0.05703162 -0.06114103 -0.06141806 -0.06198809 -0.06082875
 -0.0594462  -0.05836008 -0.05767362 -0.05640741 -0.05577426 -0.05640741
 -0.05767362 -0.05836008 -0.0594462  -0.06082875 -0.06198809 -0.06141806
 -0.06629531 -0.06606085 -0.06396518 -0.061375   -0.05922777 -0.05767362
 -0.05567375 -0.05415295 -0.05353808 -0.05415295 -0.05567375 -0.05767362
 -0.05922777 -0.061375   -0.06396518 -0.06606085 -0.07013141 -0.06873581
 -0.06576273 -0.06239378 -0.05937615 -0.05640741 -0.05415295 -0.05280159
 -0.05252102 -0.05280159 -0.05415295 -0.05640741 -0.05937615 -0.06239378
 -0.06576273 -0.06873581 -0.07114637 -0.0696147  -0.06647224 -0.0631734
 -0.059248   -0.05577426 -0.05353808 -0.05252102 -0.05206621 -0.05252102
 -0.05353808 -0.05577426 -0.059248   -0.0631734  -0.06647224 -0.0696147
 -0.07013141 -0.06873581 -0.06576273 -0.06239378 -0.05937615 -0.05640741
 -0.05415295 -0.05280159 -0.05252102 -0.05280159 -0.05415295 -0.05640741
 -0.05937615 -0.06239378 -0.06576273 -0.06873581 -0.06629531 -0.06606085
 -0.06396518 -0.061375   -0.05922777 -0.05767362 -0.05567375 -0.05415295
 -0.05353808 -0.05415295 -0.05567375 -0.05767362 -0.05922777 -0.061375
 -0.06396518 -0.06606085 -0.06114103 -0.06141806 -0.06198809 -0.06082875
 -0.0594462  -0.05836008 -0.05767362 -0.05640741 -0.05577426 -0.05640741
 -0.05767362 -0.05836008 -0.0594462  -0.06082875 -0.06198809 -0.06141806
 -0.05636831 -0.05703162 -0.05860081 -0.06022288 -0.05996745 -0.0594462
 -0.05922777 -0.05937615 -0.059248   -0.05937615 -0.05922777 -0.0594462
 -0.05996745 -0.06022288 -0.05860081 -0.05703162 -0.05341533 -0.05382011
 -0.05532251 -0.05781792 -0.06022288 -0.06082875 -0.061375   -0.06239378
 -0.0631734  -0.06239378 -0.061375   -0.06082875 -0.06022288 -0.05781792
 -0.05532251 -0.05382011 -0.05160089 -0.05200069 -0.05310981 -0.05532251
 -0.05860081 -0.06198809 -0.06396518 -0.06576273 -0.06647224 -0.06576273
 -0.06396518 -0.06198809 -0.05860081 -0.05532251 -0.05310981 -0.05200069
 -0.05073875 -0.05097254 -0.05200069 -0.05382011 -0.05703162 -0.06141806
 -0.06606085 -0.06873581 -0.0696147  -0.06873581 -0.06606085 -0.06141806
 -0.05703162 -0.05382011 -0.05200069 -0.05097254]
-0.0711463725882109 -0.05036069300109748 -0.0711463725882109
0.1
-0.0448409589710898
[-0.04974208 -0.05011778 -0.05097169 -0.0527675  -0.05568452 -0.0603843
 -0.06543733 -0.06919214 -0.0701869  -0.06919214 -0.06543733 -0.0603843
 -0.05568452 -0.0527675  -0.05097169 -0.05011778 -0.05011778 -0.050349
 -0.05136779 -0.05316749 -0.05633514 -0.0606464  -0.06520055 -0.06782533
 -0.06869162 -0.06782533 -0.06520055 -0.0606464  -0.05633514 -0.05316749
 -0.05136779 -0.050349   -0.05097169 -0.05136779 -0.05246522 -0.05464801
 -0.05786834 -0.06118644 -0.06313716 -0.0649131  -0.06561256 -0.0649131
 -0.06313716 -0.06118644 -0.05786834 -0.05464801 -0.05246522 -0.05136779
 -0.0527675  -0.05316749 -0.05464801 -0.05709664 -0.05944702 -0.06004361
 -0.06058407 -0.06159206 -0.06236167 -0.06159206 -0.06058407 -0.06004361
 -0.05944702 -0.05709664 -0.05464801 -0.05316749 -0.05568452 -0.05633514
 -0.05786834 -0.05944702 -0.0591942  -0.05867909 -0.05846271 -0.05860461
 -0.05847839 -0.05860461 -0.05846271 -0.05867909 -0.0591942  -0.05944702
 -0.05786834 -0.05633514 -0.0603843  -0.0606464  -0.06118644 -0.06004361
 -0.05867909 -0.05760539 -0.05692031 -0.05566494 -0.05503606 -0.05566494
 -0.05692031 -0.05760539 -0.05867909 -0.06004361 -0.06118644 -0.0606464
 -0.06543733 -0.06520055 -0.06313716 -0.06058407 -0.05846271 -0.05692031
 -0.05493882 -0.05343066 -0.0528219  -0.05343066 -0.05493882 -0.05692031
 -0.05846271 -0.06058407 -0.06313716 -0.06520055 -0.06919214 -0.06782533
 -0.0649131  -0.06159206 -0.05860461 -0.05566494 -0.05343066 -0.05209279
 -0.05181492 -0.05209279 -0.05343066 -0.05566494 -0.05860461 -0.06159206
 -0.0649131  -0.06782533 -0.0701869  -0.06869162 -0.06561256 -0.06236167
 -0.05847839 -0.05503606 -0.0528219  -0.05181492 -0.05136478 -0.05181492
 -0.0528219  -0.05503606 -0.05847839 -0.06236167 -0.06561256 -0.06869162
 -0.06919214 -0.06782533 -0.0649131  -0.06159206 -0.05860461 -0.05566494
 -0.05343066 -0.05209279 -0.05181492 -0.05209279 -0.05343066 -0.05566494
 -0.05860461 -0.06159206 -0.0649131  -0.06782533 -0.06543733 -0.06520055
 -0.06313716 -0.06058407 -0.05846271 -0.05692031 -0.05493882 -0.05343066
 -0.0528219  -0.05343066 -0.05493882 -0.05692031 -0.05846271 -0.06058407
 -0.06313716 -0.06520055 -0.0603843  -0.0606464  -0.06118644 -0.06004361
 -0.05867909 -0.05760539 -0.05692031 -0.05566494 -0.05503606 -0.05566494
 -0.05692031 -0.05760539 -0.05867909 -0.06004361 -0.06118644 -0.0606464
 -0.05568452 -0.05633514 -0.05786834 -0.05944702 -0.0591942  -0.05867909
 -0.05846271 -0.05860461 -0.05847839 -0.05860461 -0.05846271 -0.05867909
 -0.0591942  -0.05944702 -0.05786834 -0.05633514 -0.0527675  -0.05316749
 -0.05464801 -0.05709664 -0.05944702 -0.06004361 -0.06058407 -0.06159206
 -0.06236167 -0.06159206 -0.06058407 -0.06004361 -0.05944702 -0.05709664
 -0.05464801 -0.05316749 -0.05097169 -0.05136779 -0.05246522 -0.05464801
 -0.05786834 -0.06118644 -0.06313716 -0.0649131  -0.06561256 -0.0649131
 -0.06313716 -0.06118644 -0.05786834 -0.05464801 -0.05246522 -0.05136779
 -0.05011778 -0.050349   -0.05136779 -0.05316749 -0.05633514 -0.0606464
 -0.06520055 -0.06782533 -0.06869162 -0.06782533 -0.06520055 -0.0606464
 -0.05633514 -0.05316749 -0.05136779 -0.050349  ]
-0.07018690378530802 -0.049742079707344816 -0.07018690378530802
1.0
-0.04755701266191663
[-0.03796887 -0.03829345 -0.03898461 -0.04043374 -0.04272469 -0.04628137
 -0.04986615 -0.05250098 -0.05321953 -0.05250098 -0.04986615 -0.04628137
 -0.04272469 -0.04043374 -0.03898461 -0.03829345 -0.03829345 -0.03847339
 -0.03930932 -0.04074822 -0.04319805 -0.04637451 -0.04966204 -0.05154588
 -0.05220373 -0.05154588 -0.04966204 -0.04637451 -0.04319805 -0.04074822
 -0.03930932 -0.03847339 -0.03898461 -0.03930932 -0.04018959 -0.04188052
 -0.04424896 -0.04660494 -0.04810609 -0.04950748 -0.05004143 -0.04950748
 -0.04810609 -0.04660494 -0.04424896 -0.04188052 -0.04018959 -0.03930932
 -0.04043374 -0.04074822 -0.04188052 -0.0436632  -0.04527433 -0.04571096
 -0.04616431 -0.04699257 -0.04760187 -0.04699257 -0.04616431 -0.04571096
 -0.04527433 -0.0436632  -0.04188052 -0.04074822 -0.04272469 -0.04319805
 -0.04424896 -0.04527433 -0.04505349 -0.04466211 -0.044508   -0.04459775
 -0.04451544 -0.04459775 -0.044508   -0.04466211 -0.04505349 -0.04527433
 -0.04424896 -0.04319805 -0.04628137 -0.04637451 -0.04660494 -0.04571096
 -0.04466211 -0.04382686 -0.04323589 -0.04221457 -0.04169102 -0.04221457
 -0.04323589 -0.04382686 -0.04466211 -0.04571096 -0.04660494 -0.04637451
 -0.04986615 -0.04966204 -0.04810609 -0.04616431 -0.044508   -0.04323589
 -0.04161945 -0.04037219 -0.03987275 -0.04037219 -0.04161945 -0.04323589
 -0.044508   -0.04616431 -0.04810609 -0.04966204 -0.05250098 -0.05154588
 -0.04950748 -0.04699257 -0.04459775 -0.04221457 -0.04037219 -0.03927045
 -0.03904315 -0.03927045 -0.04037219 -0.04221457 -0.04459775 -0.04699257
 -0.04950748 -0.05154588 -0.05321953 -0.05220373 -0.05004143 -0.04760187
 -0.04451544 -0.04169102 -0.03987275 -0.03904315 -0.03866772 -0.03904315
 -0.03987275 -0.04169102 -0.04451544 -0.04760187 -0.05004143 -0.05220373
 -0.05250098 -0.05154588 -0.04950748 -0.04699257 -0.04459775 -0.04221457
 -0.04037219 -0.03927045 -0.03904315 -0.03927045 -0.04037219 -0.04221457
 -0.04459775 -0.04699257 -0.04950748 -0.05154588 -0.04986615 -0.04966204
 -0.04810609 -0.04616431 -0.044508   -0.04323589 -0.04161945 -0.04037219
 -0.03987275 -0.04037219 -0.04161945 -0.04323589 -0.044508   -0.04616431
 -0.04810609 -0.04966204 -0.04628137 -0.04637451 -0.04660494 -0.04571096
 -0.04466211 -0.04382686 -0.04323589 -0.04221457 -0.04169102 -0.04221457
 -0.04323589 -0.04382686 -0.04466211 -0.04571096 -0.04660494 -0.04637451
 -0.04272469 -0.04319805 -0.04424896 -0.04527433 -0.04505349 -0.04466211
 -0.044508   -0.04459775 -0.04451544 -0.04459775 -0.044508   -0.04466211
 -0.04505349 -0.04527433 -0.04424896 -0.04319805 -0.04043374 -0.04074822
 -0.04188052 -0.0436632  -0.04527433 -0.04571096 -0.04616431 -0.04699257
 -0.04760187 -0.04699257 -0.04616431 -0.04571096 -0.04527433 -0.0436632
 -0.04188052 -0.04074822 -0.03898461 -0.03930932 -0.04018959 -0.04188052
 -0.04424896 -0.04660494 -0.04810609 -0.04950748 -0.05004143 -0.04950748
 -0.04810609 -0.04660494 -0.04424896 -0.04188052 -0.04018959 -0.03930932
 -0.03829345 -0.03847339 -0.03930932 -0.04074822 -0.04319805 -0.04637451
 -0.04966204 -0.05154588 -0.05220373 -0.05154588 -0.04966204 -0.04637451
 -0.04319805 -0.04074822 -0.03930932 -0.03847339]
-0.053219527682040337 -0.037968868274523324 -0.053219527682040337
10.0
-0.06718957630402682
[-0.01992998 -0.02017961 -0.02066188 -0.02169719 -0.02331763 -0.02587135
 -0.02839556 -0.03031507 -0.03087156 -0.03031507 -0.02839556 -0.02587135
 -0.02331763 -0.02169719 -0.02066188 -0.02017961 -0.02017961 -0.02029538
 -0.02090113 -0.02192719 -0.02368566 -0.02592926 -0.02829088 -0.02963713
 -0.03011641 -0.02963713 -0.02829088 -0.02592926 -0.02368566 -0.02192719
 -0.02090113 -0.02029538 -0.02066188 -0.02090113 -0.02153766 -0.02276408
 -0.02446983 -0.02615064 -0.02720204 -0.02820164 -0.02857588 -0.02820164
 -0.02720204 -0.02615064 -0.02446983 -0.02276408 -0.02153766 -0.02090113
 -0.02169719 -0.02192719 -0.02276408 -0.02407803 -0.02523658 -0.02553987
 -0.02586814 -0.02643004 -0.0268409  -0.02643004 -0.02586814 -0.02553987
 -0.02523658 -0.02407803 -0.02276408 -0.02192719 -0.02331763 -0.02368566
 -0.02446983 -0.02523658 -0.0250904  -0.02483687 -0.02472523 -0.02474989
 -0.02467054 -0.02474989 -0.02472523 -0.02483687 -0.0250904  -0.02523658
 -0.02446983 -0.02368566 -0.02587135 -0.02592926 -0.02615064 -0.02553987
 -0.02483687 -0.02426369 -0.02382915 -0.02309021 -0.02272437 -0.02309021
 -0.02382915 -0.02426369 -0.02483687 -0.02553987 -0.02615064 -0.02592926
 -0.02839556 -0.02829088 -0.02720204 -0.02586814 -0.02472523 -0.02382915
 -0.02268636 -0.02183497 -0.02148491 -0.02183497 -0.02268636 -0.02382915
 -0.02472523 -0.02586814 -0.02720204 -0.02829088 -0.03031507 -0.02963713
 -0.02820164 -0.02643004 -0.02474989 -0.02309021 -0.02183497 -0.02107503
 -0.02094064 -0.02107503 -0.02183497 -0.02309021 -0.02474989 -0.02643004
 -0.02820164 -0.02963713 -0.03087156 -0.03011641 -0.02857588 -0.0268409
 -0.02467054 -0.02272437 -0.02148491 -0.02094064 -0.02066394 -0.02094064
 -0.02148491 -0.02272437 -0.02467054 -0.0268409  -0.02857588 -0.03011641
 -0.03031507 -0.02963713 -0.02820164 -0.02643004 -0.02474989 -0.02309021
 -0.02183497 -0.02107503 -0.02094064 -0.02107503 -0.02183497 -0.02309021
 -0.02474989 -0.02643004 -0.02820164 -0.02963713 -0.02839556 -0.02829088
 -0.02720204 -0.02586814 -0.02472523 -0.02382915 -0.02268636 -0.02183497
 -0.02148491 -0.02183497 -0.02268636 -0.02382915 -0.02472523 -0.02586814
 -0.02720204 -0.02829088 -0.02587135 -0.02592926 -0.02615064 -0.02553987
 -0.02483687 -0.02426369 -0.02382915 -0.02309021 -0.02272437 -0.02309021
 -0.02382915 -0.02426369 -0.02483687 -0.02553987 -0.02615064 -0.02592926
 -0.02331763 -0.02368566 -0.02446983 -0.02523658 -0.0250904  -0.02483687
 -0.02472523 -0.02474989 -0.02467054 -0.02474989 -0.02472523 -0.02483687
 -0.0250904  -0.02523658 -0.02446983 -0.02368566 -0.02169719 -0.02192719
 -0.02276408 -0.02407803 -0.02523658 -0.02553987 -0.02586814 -0.02643004
 -0.0268409  -0.02643004 -0.02586814 -0.02553987 -0.02523658 -0.02407803
 -0.02276408 -0.02192719 -0.02066188 -0.02090113 -0.02153766 -0.02276408
 -0.02446983 -0.02615064 -0.02720204 -0.02820164 -0.02857588 -0.02820164
 -0.02720204 -0.02615064 -0.02446983 -0.02276408 -0.02153766 -0.02090113
 -0.02017961 -0.02029538 -0.02090113 -0.02192719 -0.02368566 -0.02592926
 -0.02829088 -0.02963713 -0.03011641 -0.02963713 -0.02829088 -0.02592926
 -0.02368566 -0.02192719 -0.02090113 -0.02029538]
-0.030871557351376425 -0.01992997766911843 -0.030871557351376425
100.0
-0.02248272650788956
[-0.01339446 -0.0136225  -0.01405528 -0.01498552 -0.01643518 -0.01868535
 -0.02085162 -0.02253451 -0.02300314 -0.02253451 -0.02085162 -0.01868535
 -0.01643518 -0.01498552 -0.01405528 -0.0136225  -0.0136225  -0.01372431
 -0.01427096 -0.0151934  -0.01675704 -0.01872537 -0.02079541 -0.02192082
 -0.02233467 -0.02192082 -0.02079541 -0.01872537 -0.01675704 -0.0151934
 -0.01427096 -0.01372431 -0.01405528 -0.01427096 -0.01484337 -0.0159345
 -0.01744285 -0.01891561 -0.01982359 -0.02067734 -0.02098236 -0.02067734
 -0.01982359 -0.01891561 -0.01744285 -0.0159345  -0.01484337 -0.01427096
 -0.01498552 -0.0151934  -0.0159345  -0.01709922 -0.01809381 -0.01834125
 -0.01862819 -0.01914079 -0.01952279 -0.01914079 -0.01862819 -0.01834125
 -0.01809381 -0.01709922 -0.0159345  -0.0151934  -0.01643518 -0.01675704
 -0.01744285 -0.01809381 -0.01793913 -0.01770262 -0.01761289 -0.01769243
 -0.01766335 -0.01769243 -0.01761289 -0.01770262 -0.01793913 -0.01809381
 -0.01744285 -0.01675704 -0.01868535 -0.01872537 -0.01891561 -0.01834125
 -0.01770262 -0.01719837 -0.01686227 -0.0162501  -0.01593371 -0.0162501
 -0.01686227 -0.01719837 -0.01770262 -0.01834125 -0.01891561 -0.01872537
 -0.02085162 -0.02079541 -0.01982359 -0.01862819 -0.01761289 -0.01686227
 -0.01588748 -0.01513372 -0.01482132 -0.01513372 -0.01588748 -0.01686227
 -0.01761289 -0.01862819 -0.01982359 -0.02079541 -0.02253451 -0.02192082
 -0.02067734 -0.01914079 -0.01769243 -0.0162501  -0.01513372 -0.01445616
 -0.01432702 -0.01445616 -0.01513372 -0.0162501  -0.01769243 -0.01914079
 -0.02067734 -0.02192082 -0.02300314 -0.02233467 -0.02098236 -0.01952279
 -0.01766335 -0.01593371 -0.01482132 -0.01432702 -0.01409093 -0.01432702
 -0.01482132 -0.01593371 -0.01766335 -0.01952279 -0.02098236 -0.02233467
 -0.02253451 -0.02192082 -0.02067734 -0.01914079 -0.01769243 -0.0162501
 -0.01513372 -0.01445616 -0.01432702 -0.01445616 -0.01513372 -0.0162501
 -0.01769243 -0.01914079 -0.02067734 -0.02192082 -0.02085162 -0.02079541
 -0.01982359 -0.01862819 -0.01761289 -0.01686227 -0.01588748 -0.01513372
 -0.01482132 -0.01513372 -0.01588748 -0.01686227 -0.01761289 -0.01862819
 -0.01982359 -0.02079541 -0.01868535 -0.01872537 -0.01891561 -0.01834125
 -0.01770262 -0.01719837 -0.01686227 -0.0162501  -0.01593371 -0.0162501
 -0.01686227 -0.01719837 -0.01770262 -0.01834125 -0.01891561 -0.01872537
 -0.01643518 -0.01675704 -0.01744285 -0.01809381 -0.01793913 -0.01770262
 -0.01761289 -0.01769243 -0.01766335 -0.01769243 -0.01761289 -0.01770262
 -0.01793913 -0.01809381 -0.01744285 -0.01675704 -0.01498552 -0.0151934
 -0.0159345  -0.01709922 -0.01809381 -0.01834125 -0.01862819 -0.01914079
 -0.01952279 -0.01914079 -0.01862819 -0.01834125 -0.01809381 -0.01709922
 -0.0159345  -0.0151934  -0.01405528 -0.01427096 -0.01484337 -0.0159345
 -0.01744285 -0.01891561 -0.01982359 -0.02067734 -0.02098236 -0.02067734
 -0.01982359 -0.01891561 -0.01744285 -0.0159345  -0.01484337 -0.01427096
 -0.0136225  -0.01372431 -0.01427096 -0.0151934  -0.01675704 -0.01872537
 -0.02079541 -0.02192082 -0.02233467 -0.02192082 -0.02079541 -0.01872537
 -0.01675704 -0.0151934  -0.01427096 -0.01372431]
-0.023003144283594342 -0.013394461916307799 -0.023003144283594342
1000.0
-0.015724553090266123
[-0.01228551 -0.01251153 -0.01294056 -0.01386249 -0.015299   -0.01753128
 -0.01967858 -0.02135612 -0.02182337 -0.02135612 -0.01967858 -0.01753128
 -0.015299   -0.01386249 -0.01294056 -0.01251153 -0.01251153 -0.01261249
 -0.01315414 -0.01406865 -0.0156189  -0.01756993 -0.01962771 -0.02074449
 -0.0211574  -0.02074449 -0.01962771 -0.01756993 -0.0156189  -0.01406865
 -0.01315414 -0.01261249 -0.01294056 -0.01315414 -0.01372177 -0.01480319
 -0.01629967 -0.01776217 -0.01866247 -0.01950926 -0.01981119 -0.01950926
 -0.01866247 -0.01776217 -0.01629967 -0.01480319 -0.01372177 -0.01315414
 -0.01386249 -0.01406865 -0.01480319 -0.01595955 -0.01694653 -0.01719146
 -0.01747519 -0.01798269 -0.01836233 -0.01798269 -0.01747519 -0.01719146
 -0.01694653 -0.01595955 -0.01480319 -0.01406865 -0.015299   -0.0156189
 -0.01629967 -0.01694653 -0.01679228 -0.01655686 -0.01646646 -0.01654561
 -0.01651659 -0.01654561 -0.01646646 -0.01655686 -0.01679228 -0.01694653
 -0.01629967 -0.0156189  -0.01753128 -0.01756993 -0.01776217 -0.01719146
 -0.01655686 -0.0160552  -0.01572278 -0.01511444 -0.01480044 -0.01511444
 -0.01572278 -0.0160552  -0.01655686 -0.01719146 -0.01776217 -0.01756993
 -0.01967858 -0.01962771 -0.01866247 -0.01747519 -0.01646646 -0.01572278
 -0.01475479 -0.01400747 -0.01369805 -0.01400747 -0.01475479 -0.01572278
 -0.01646646 -0.01747519 -0.01866247 -0.01962771 -0.02135612 -0.02074449
 -0.01950926 -0.01798269 -0.01654561 -0.01511444 -0.01400747 -0.01333618
 -0.01320799 -0.01333618 -0.01400747 -0.01511444 -0.01654561 -0.01798269
 -0.01950926 -0.02074449 -0.02182337 -0.0211574  -0.01981119 -0.01836233
 -0.01651659 -0.01480044 -0.01369805 -0.01320799 -0.01297466 -0.01320799
 -0.01369805 -0.01480044 -0.01651659 -0.01836233 -0.01981119 -0.0211574
 -0.02135612 -0.02074449 -0.01950926 -0.01798269 -0.01654561 -0.01511444
 -0.01400747 -0.01333618 -0.01320799 -0.01333618 -0.01400747 -0.01511444
 -0.01654561 -0.01798269 -0.01950926 -0.02074449 -0.01967858 -0.01962771
 -0.01866247 -0.01747519 -0.01646646 -0.01572278 -0.01475479 -0.01400747
 -0.01369805 -0.01400747 -0.01475479 -0.01572278 -0.01646646 -0.01747519
 -0.01866247 -0.01962771 -0.01753128 -0.01756993 -0.01776217 -0.01719146
 -0.01655686 -0.0160552  -0.01572278 -0.01511444 -0.01480044 -0.01511444
 -0.01572278 -0.0160552  -0.01655686 -0.01719146 -0.01776217 -0.01756993
 -0.015299   -0.0156189  -0.01629967 -0.01694653 -0.01679228 -0.01655686
 -0.01646646 -0.01654561 -0.01651659 -0.01654561 -0.01646646 -0.01655686
 -0.01679228 -0.01694653 -0.01629967 -0.0156189  -0.01386249 -0.01406865
 -0.01480319 -0.01595955 -0.01694653 -0.01719146 -0.01747519 -0.01798269
 -0.01836233 -0.01798269 -0.01747519 -0.01719146 -0.01694653 -0.01595955
 -0.01480319 -0.01406865 -0.01294056 -0.01315414 -0.01372177 -0.01480319
 -0.01629967 -0.01776217 -0.01866247 -0.01950926 -0.01981119 -0.01950926
 -0.01866247 -0.01776217 -0.01629967 -0.01480319 -0.01372177 -0.01315414
 -0.01251153 -0.01261249 -0.01315414 -0.01406865 -0.0156189  -0.01756993
 -0.01962771 -0.02074449 -0.0211574  -0.02074449 -0.01962771 -0.01756993
 -0.0156189  -0.01406865 -0.01315414 -0.01261249]
-0.02182336623312078 -0.012285505995762735 -0.02182336623312078
10000.0
-0.015623802460115415
[-0.01225491 -0.01248094 -0.01290996 -0.01383191 -0.01526845 -0.01750101
 -0.01964874 -0.02132691 -0.02179439 -0.02132691 -0.01964874 -0.01750101
 -0.01526845 -0.01383191 -0.01290996 -0.01248094 -0.01248094 -0.01258189
 -0.01312354 -0.01403806 -0.01558842 -0.01753968 -0.01959798 -0.02071515
 -0.02112826 -0.02071515 -0.01959798 -0.01753968 -0.01558842 -0.01403806
 -0.01312354 -0.01258189 -0.01290996 -0.01312354 -0.01369119 -0.01477266
 -0.01626931 -0.01773214 -0.01863266 -0.01947968 -0.01978171 -0.01947968
 -0.01863266 -0.01773214 -0.01626931 -0.01477266 -0.01369119 -0.01312354
 -0.01383191 -0.01403806 -0.01477266 -0.01592918 -0.01691642 -0.0171615
 -0.01744527 -0.01795277 -0.01833243 -0.01795277 -0.01744527 -0.0171615
 -0.01691642 -0.01592918 -0.01477266 -0.01403806 -0.01526845 -0.01558842
 -0.01626931 -0.01691642 -0.01676228 -0.01652689 -0.0164364  -0.01651539
 -0.01648625 -0.01651539 -0.0164364  -0.01652689 -0.01676228 -0.01691642
 -0.01626931 -0.01558842 -0.01750101 -0.01753968 -0.01773214 -0.0171615
 -0.01652689 -0.01602511 -0.01569255 -0.01508396 -0.01476989 -0.01508396
 -0.01569255 -0.01602511 -0.01652689 -0.0171615  -0.01773214 -0.01753968
 -0.01964874 -0.01959798 -0.01863266 -0.01744527 -0.0164364  -0.01569255
 -0.0147243  -0.01397689 -0.01366744 -0.01397689 -0.0147243  -0.01569255
 -0.0164364  -0.01744527 -0.01863266 -0.01959798 -0.02132691 -0.02071515
 -0.01947968 -0.01795277 -0.01651539 -0.01508396 -0.01397689 -0.01330556
 -0.01317738 -0.01330556 -0.01397689 -0.01508396 -0.01651539 -0.01795277
 -0.01947968 -0.02071515 -0.02179439 -0.02112826 -0.01978171 -0.01833243
 -0.01648625 -0.01476989 -0.01366744 -0.01317738 -0.01294404 -0.01317738
 -0.01366744 -0.01476989 -0.01648625 -0.01833243 -0.01978171 -0.02112826
 -0.02132691 -0.02071515 -0.01947968 -0.01795277 -0.01651539 -0.01508396
 -0.01397689 -0.01330556 -0.01317738 -0.01330556 -0.01397689 -0.01508396
 -0.01651539 -0.01795277 -0.01947968 -0.02071515 -0.01964874 -0.01959798
 -0.01863266 -0.01744527 -0.0164364  -0.01569255 -0.0147243  -0.01397689
 -0.01366744 -0.01397689 -0.0147243  -0.01569255 -0.0164364  -0.01744527
 -0.01863266 -0.01959798 -0.01750101 -0.01753968 -0.01773214 -0.0171615
 -0.01652689 -0.01602511 -0.01569255 -0.01508396 -0.01476989 -0.01508396
 -0.01569255 -0.01602511 -0.01652689 -0.0171615  -0.01773214 -0.01753968
 -0.01526845 -0.01558842 -0.01626931 -0.01691642 -0.01676228 -0.01652689
 -0.0164364  -0.01651539 -0.01648625 -0.01651539 -0.0164364  -0.01652689
 -0.01676228 -0.01691642 -0.01626931 -0.01558842 -0.01383191 -0.01403806
 -0.01477266 -0.01592918 -0.01691642 -0.0171615  -0.01744527 -0.01795277
 -0.01833243 -0.01795277 -0.01744527 -0.0171615  -0.01691642 -0.01592918
 -0.01477266 -0.01403806 -0.01290996 -0.01312354 -0.01369119 -0.01477266
 -0.01626931 -0.01773214 -0.01863266 -0.01947968 -0.01978171 -0.01947968
 -0.01863266 -0.01773214 -0.01626931 -0.01477266 -0.01369119 -0.01312354
 -0.01248094 -0.01258189 -0.01312354 -0.01403806 -0.01558842 -0.01753968
 -0.01959798 -0.02071515 -0.02112826 -0.02071515 -0.01959798 -0.01753968
 -0.01558842 -0.01403806 -0.01312354 -0.01258189]
-0.021794386534542548 -0.012254910251988162 -0.021794386534542548
Out[17]:
<matplotlib.legend.Legend at 0x70e80c0cfe80>
No description has been provided for this image
In [21]:
ReZs = []
ImZs = []
omegas = []
G_cohs = []
G_incohs = []
Gs = []
xi_cohs = [] # renormalised dispersion

Gammas = []

GG_bubs = []
GG_bubs_refined = []

GG_cohcoh_bubs = []
GG_incohincoh_bubs = []
GG_cohincoh_bubs = []
GG_incohcoh_bubs = []

GGs_integrated = []

susc_sc_bubs = []
susc_dsc_bubs = []

BETA = 20.0
for obj in objs_doped_lefttop:# + objs_bubdiagnostics_doped_lefttop: 
    
    omega0 = obj["Omega0"]
    print(omega0)
    if omega0 < 1.0:
        continue
    omegas.append(omega0)
    #objs_doped_rightbottom
    Sig_RE = obj["RE_Sigma"][:, :, 0, 0]
    Sig_IM = obj["IM_Sigma"][:, :, 0, 0]
    momgrid = obj["Sigma_momgrid"]
    fgrid = obj["Sigma_fgrid"]
    plt.plot(fgrid, Sig_IM[:, 0], "*", label=obj["Omega0"])

    delta_mu = obj["delta_mu"]

    
    #Z, Sig_cont = compute_quasiparticle_properties(Sig_RE, Sig_IM, fgrid)
    print(delta_mu)
    mu = -1.0 + delta_mu
    tp = -0.25
    G_coh, Z, Gamma, xi_coh = compute_coherent_green(Sig_RE, Sig_IM, fgrid, momgrid, 1.0, tp, mu, no_interpolate= True)
    G = compute_dressed_green(Sig_RE, Sig_IM, fgrid, momgrid, 1.0, tp, mu)
    G_incoh = G - G_coh
    
    G_cohs.append(G_coh)
    Gs.append(G)
    G_incohs.append(G_incoh)
    
    xi_cohs.append(xi_coh)
    ReZs.append(np.max(np.real(Z)))#[128+8])
    ImZs.append(np.max(np.imag(Z)))#[128+8])
    Gammas.append(np.min(Gamma))

    GG_bub = compute_particle_particle_bubble(G, G, fgrid, momgrid, BETA, 1, tp, mu, extra_freq=1)
    GG_bub_refined = compute_particle_particle_bubble_refined(G, G, fgrid, momgrid, refined_momgrid,
                                                              BETA, 1, tp, mu, extra_freq=1)
    
    GG_bubs.append(GG_bub)
    GG_bubs_refined.append(GG_bub_refined)

    GG_cohcoh = compute_particle_particle_bubble_refined(G_coh, G_coh, fgrid, momgrid, refined_momgrid, BETA, 1, tp, mu, extra_freq=1)
    GG_incohincoh = compute_particle_particle_bubble_refined(G_incoh, G_incoh, fgrid, momgrid, refined_momgrid, BETA, 1, tp, mu, extra_freq=1)
    GG_cohincoh = compute_particle_particle_bubble_refined(G_coh, G_incoh, fgrid, momgrid, refined_momgrid,  BETA, 1, tp, mu, extra_freq=1)
    GG_incohcoh = compute_particle_particle_bubble_refined(G_incoh, G_coh, fgrid, momgrid, refined_momgrid, BETA, 1, tp, mu, extra_freq=1)

    GG_cohcoh_bubs.append(GG_cohcoh)
    GG_cohincoh_bubs.append(GG_cohincoh)
    GG_incohcoh_bubs.append(GG_incohcoh)
    GG_incohincoh_bubs.append(GG_incohincoh)

    #GG_integrated = compute_particle_particle_bubble_q0_direct(G, G, fgrid, momgrid, BETA, 1, tp, mu, extra_freq=1)
    #GGs_integrated.append(GG_integrated)
    
    susc_sc_bubs.append(obj["chi_split"]["chi_sc_bubble"])
    print(susc_sc_bubs)
    #print(obj["chi_split"].keys())
    susc_dsc_bubs.append(obj["chi_split"]["chi_dsc_bubble"])

plt.legend()
0.01
0.1
1.0
-0.04755701266191663
0
[0.7205328620027146]
10.0
-0.06718957630402682
0
[0.7205328620027146, 0.8004798364625794]
100.0
-0.02248272650788956
0
[0.7205328620027146, 0.8004798364625794, 0.8418950398120483]
1000.0
-0.015724553090266123
0
[0.7205328620027146, 0.8004798364625794, 0.8418950398120483, 0.8490972678435513]
10000.0
-0.015623802460115415
0
[0.7205328620027146, 0.8004798364625794, 0.8418950398120483, 0.8490972678435513, 0.8492915240329632]
Out[21]:
<matplotlib.legend.Legend at 0x70e803f41ae0>
No description has been provided for this image
In [396]:
omegas_reordered = omegas[7:] + omegas[2:3] + omegas[3:7]
ReZs_reordered = ReZs[7:] + ReZs[2:3] + ReZs[3:7]
ImZs_reordered = ImZs[7:] + ImZs[2:3] + ImZs[3:7]
#omegas_reordered
In [334]:
objs_doped_lefttop[0]['filling']
Out[334]:
0.39167883741726095
In [31]:
plt.plot(omegas[:], ReZs[:], "*-")
plt.xlabel(r"$\omega_0$")
plt.ylabel(r"Re Z")
plt.xscale("log")
#plt.yscale("log")
No description has been provided for this image
In [32]:
plt.plot(omegas[:], ImZs[:], "*-")
plt.ylim(0, 0.1)
plt.xlabel(r"$\omega_0$")
plt.ylabel(r"Im Z")
plt.xscale("log")
No description has been provided for this image
In [33]:
plt.figure()
plt.plot(omegas[:], Gammas[:], "*-")
plt.ylim(-0.07, 0)
plt.xlabel(r"$\omega_0$")
plt.ylabel(r"$\Gamma$")
plt.xscale("log")
Gammas
Out[33]:
[-0.053219527682040337,
 -0.030871557351376425,
 -0.023003144283594342,
 -0.02182336623312078,
 -0.021794386534542548]
No description has been provided for this image
In [402]:
GammaXM_path_coarse = []

for idx in GammaXM_path:
    if idx < 256:
        GammaXM_path_coarse.append(idx)
GammaXM_path_coarse = list(dict.fromkeys(GammaXM_path_coarse))
GammaXM_path_coarse.append(0)
#print(GammaXM_path_coarse)
#print(momgrid[np.array(GammaXM_path_coarse)])

#plt.plot(xi_cohs[0][np.array(GammaXM_path_coarse)], "*-", label=omegas[2])


plt.plot(xi_cohs[1][np.array(GammaXM_path_coarse)], "*-", label=omegas[2])

plt.plot(xi_cohs[2][np.array(GammaXM_path_coarse)], "*-", label=omegas[2])

plt.plot(xi_cohs[3][np.array(GammaXM_path_coarse)], "*-")

plt.plot(xi_cohs[4][np.array(GammaXM_path_coarse)], "*-")

plt.plot(xi_cohs[5][np.array(GammaXM_path_coarse)], "*-")

plt.plot(xi_cohs[6][np.array(GammaXM_path_coarse)], "*-")
plt.legend()
Out[402]:
<matplotlib.legend.Legend at 0x7dc754f2f490>
No description has been provided for this image
In [19]:
def get_G_value_by_n(n, G_array, N0, BETA, momentum_index, momentum_coord, t, tp, mu, fgrid):
    """
    Retrieve the Green's function value corresponding to the Matsubara label n.
    
    The provided G_array is defined for frequency labels n in the range [-N0, N0),
    accessible at index n + N0. If n is within that range, return the value from G_array.
    Otherwise, compute the bare Green's function for ω_n = (2n+1)*π/BETA.
    
    Parameters:
      n              : int
                       Matsubara frequency label such that ω_n = (2n+1)*π/BETA.
      G_array        : numpy array of shape (n_freq, n_mom) with the Green's function.
      N0             : int, equal to n_freq//2.
      BETA           : float, inverse temperature.
      momentum_index : int, index for momentum in G_array.
      momentum_coord : array-like, the momentum coordinate corresponding to momentum_index.
      t, tp, mu      : floats, parameters for the bare Green's function.
      fgrid          : numpy array of the available Matsubara frequencies (for n in [-N0, N0)).
      
    Returns:
      value          : complex, G(iω_n, momentum_coord).
    """
    # Check if n is within the provided window
    if -N0 <= n < N0:
        # Map frequency label n to array index:
        idx = n + N0
        return G_array[idx, momentum_index]
    else:
        # Compute ω_n = (2n+1)*π/BETA
        omega = (2*n + 1) * np.pi / BETA
        return compute_bare_green(1j * omega, momentum_coord, t, tp, mu)

def compute_particle_particle_bubble(G1, G2, fgrid, momgrid, BETA, t, tp, mu, extra_freq=10):
    """
    Compute the particle-particle bubble Π(q, Ω=0, k) defined by:
    
        Π(q,0,k) = (1/BETA) ∑_n  G1(iω_n, k) * G2(iω_{-n-1}, p)
    
    where the sum runs over an extended set of Matsubara frequency labels n. Here,
    p = (q - k) mod (2π) is determined by momentum conservation.
    
    The provided Green's functions G1 and G2 are defined for frequency labels n in 
    the range [-N0, N0), where N0 = n_freq//2, with the ordering that the index
    n = -1 corresponds to index N0-1 and n = 0 corresponds to index N0.
    
    If a frequency label required in the extended sum is not available in G1 or G2,
    the bare Green's function is used.
    
    Momentum arithmetic is performed using momgrid which is arranged as:
        momgrid[i] = ((i//K_DIM)*2π/K_DIM, (i % K_DIM)*2π/K_DIM)
    
    Parameters:
      G1, G2    : numpy arrays of shape (n_freq, n_mom) containing the Green's functions.
      fgrid     : numpy array of available Matsubara frequencies (covers n in [-N0, N0)).
      momgrid   : numpy array of shape (K_DIM*K_DIM, 2) containing momentum coordinates.
      BETA      : float, inverse temperature.
      t, tp, mu : floats, parameters for the bare Green's function.
      extra_freq: int, additional frequency labels (beyond the provided window) to integrate over.
      
    Returns:
      bubble    : numpy array of shape (n_mom, n_mom)
                  The particle-particle bubble with the first index corresponding to external momentum q,
                  and the second to internal momentum k.
    """
    n_freq = len(fgrid)
    N0 = n_freq // 2  # Provided frequency window covers n in [-N0, N0)
    # Define the extended frequency integration range
    n_ext = N0 + extra_freq  # sum over n from -n_ext to n_ext - 1
    
    n_mom = len(momgrid)
    # Determine K_DIM from the fact that momgrid contains K_DIM*K_DIM points.
    K_DIM = int(np.sqrt(n_mom))
    delta = 2 * np.pi / K_DIM

    P_IN_K = 5.0
    K_DIM_REFINED = K_DIM * P_IN_K
    delta_refined = 2*np.pi/K_DIM_REFINED
    n_mom_refined = K_DIM_REFINED*K_DIM_REFINED

    # Initialize the bubble array.
    bubble = np.zeros((1, n_mom), dtype=complex)
    
    # Loop over external momentum indices q.
    for q_index in range(1):
        print(q_index)
        q = momgrid[q_index]  # external momentum coordinate
        
        # Loop over internal momentum indices k.
        for k_index in range(n_mom):
            k_coord = momgrid[k_index]
            # Compute partner momentum p = (q - k) modulo 2π (componentwise).
            p_coord = ((q[0] - k_coord[0]) % (2*np.pi),
                       (q[1] - k_coord[1]) % (2*np.pi))
            # Find the index corresponding to p_coord.
            i_x = int((p_coord[0] / delta)) % K_DIM
            i_y = int((p_coord[1] / delta)) % K_DIM
            p_index = i_x * K_DIM + i_y
            
            # Initialize the frequency sum.
            sum_over_n = 0.0 + 0.0j
            # Sum over extended frequency labels n.
            for n in range(-n_ext, n_ext):
                # For G1, use frequency label n at momentum k.
                G1_val = get_G_value_by_n(n, G1, N0, BETA, k_index, momgrid[k_index], t, tp, mu, fgrid)
                # For G2, use frequency label -n-1 (since -ω_n = ω_{-n-1}) at momentum p.
                G2_val = get_G_value_by_n(-n-1, G2, N0, BETA, p_index, momgrid[p_index], t, tp, mu, fgrid)
                sum_over_n += G1_val * G2_val
            # Divide by BETA as prescribed.
            bubble[q_index, k_index] = sum_over_n / BETA
            
    return bubble
In [20]:
def get_G_value_refined(n, G_array, N0, BETA, fine_mom, coarse_momgrid, K_DIM, t, tp, mu, d_coarse):
    """
    For a given Matsubara label n and a momentum coordinate fine_mom (on the refined grid),
    return the appropriate Green's function value:
    
      - If –N₀ ≤ n < N₀, then the interacting Green's function is available only on the coarse grid.
        In that case we project the fine momentum to the coarse grid by rounding to the nearest
        multiple of d_coarse = 2π/K_DIM, and then return G_array[n+N0, coarse_index].
      - Otherwise (i.e. for high frequencies), return the bare Green's function computed using
        the fine momentum coordinate.
    
    Parameters:
      n           : int
                    Matsubara label (ωₙ = (2n+1)π/BETA).
      G_array     : numpy array of shape (n_freq, n_coarse) containing the interacting Green's function.
      N0          : int, equal to n_freq//2.
      BETA        : float, inverse temperature.
      fine_mom    : 2-element array-like, the fine momentum coordinate.
      coarse_momgrid : numpy array of shape (K_DIM*K_DIM, 2) with the coarse momentum coordinates.
      K_DIM       : int, the linear dimension of the coarse grid.
      t, tp, mu   : floats, model parameters.
      d_coarse    : float, grid step on the coarse grid (2π/K_DIM).
    
    Returns:
      value       : complex, G(iωₙ, fine_mom) evaluated either via projection (if |n| < N0)
                    or via the bare Green's function (if |n| ≥ N0).
    """
    if -N0 <= n < N0:
        # Project fine_mom onto the coarse grid.
        kx, ky = fine_mom
        proj_kx = (np.round(kx / d_coarse) * d_coarse) % (2 * np.pi)
        proj_ky = (np.round(ky / d_coarse) * d_coarse) % (2 * np.pi)
        # Determine coarse indices (using the same ordering as in coarse_momgrid):
        i_x = int(np.round(proj_kx / d_coarse)) % K_DIM
        i_y = int(np.round(proj_ky / d_coarse)) % K_DIM
        coarse_index = i_x * K_DIM + i_y
        return G_array[n + N0, coarse_index]
    else:
        # For high frequencies, use the bare Green's function computed at the fine momentum.
        omega = (2 * n + 1) * np.pi / BETA
        return compute_bare_green(1j * omega, fine_mom, t, tp, mu)

def compute_particle_particle_bubble_refined(G1, G2, fgrid, coarse_momgrid, refined_momgrid, 
                                             BETA, t, tp, mu, extra_freq=10):
    """
    Compute the particle-particle bubble as a function of two momenta on a refined grid.
    
    The refined momentum grid has size (K_DIM*P_IN_K)², where K_DIM is the size of the coarse grid.
    For a pair of refined momenta (q, k), the bubble (at Ω = 0) is defined as:
    
        Π(q,0,k) = (1/β) ∑ₙ G₁(iωₙ, k_fine) · G₂(iω₋ₙ₋₁, p_fine),
    
    where the partner momentum is given by p_fine = (q – k) mod 2π (evaluated on the refined grid).
    
    Since the interacting Green's functions (which include the self‐energy) are only defined on the
    coarse momentum grid, when |n| < N₀ (with N₀ = n_freq//2) the fine momentum is projected onto
    the coarse grid (by rounding to the nearest multiple of 2π/K_DIM). For high frequencies, the bare
    Green's function is used and the fine momentum is employed directly.
    
    Parameters:
      G1, G2         : numpy arrays of shape (n_freq, n_coarse) containing the interacting Green's functions
                       on the coarse grid.
      fgrid          : numpy array of available Matsubara frequencies (for labels n in [–N₀, N₀)).
      coarse_momgrid : numpy array of shape (K_DIM², 2) containing the coarse momentum coordinates.
      refined_momgrid: numpy array of shape (n_refined, 2) containing the refined momentum coordinates,
                       where n_refined = (K_DIM * P_IN_K)².
      BETA           : float, inverse temperature.
      t, tp, mu      : floats, model parameters.
      extra_freq     : int, extra frequency labels (beyond the provided window) to extend the sum.
      
    Returns:
      bubble         : numpy array of shape (n_refined, n_refined) representing the bubble as a function
                       of the two refined momenta (q and k).
    """
    n_freq = len(fgrid)
    N0 = n_freq // 2  # interacting frequencies are available for n in [–N₀, N₀)
    n_ext = N0 + extra_freq  # extend the frequency sum to n ∈ [–n_ext, n_ext)
    
    n_refined = refined_momgrid.shape[0]
    K_DIM = int(np.sqrt(coarse_momgrid.shape[0]))
    d_coarse = 2 * np.pi / K_DIM  # spacing of the coarse grid

    bubble = np.zeros((n_refined, n_refined), dtype=complex)
    
    # Loop over refined external momentum q and internal momentum k.
    for iq, q in enumerate([(0.0, 0.0), ]):
        for ik, k in enumerate(refined_momgrid):
            # Compute partner momentum on the refined grid: p = (q - k) mod 2π (componentwise)
            p = ( (q[0] - k[0]) % (2 * np.pi), (q[1] - k[1]) % (2 * np.pi) )
            
            freq_sum = 0.0 + 0.0j
            # Sum over extended Matsubara labels.
            for n in range(-n_ext, n_ext):
                # For G₁, use momentum k (fine coordinate).
                G1_val = get_G_value_refined(n, G1, N0, BETA, k, coarse_momgrid, K_DIM, t, tp, mu, d_coarse)
                # For G₂, the frequency pairing gives label –n–1 and the momentum is p (fine coordinate).
                G2_val = get_G_value_refined(-n - 1, G2, N0, BETA, p, coarse_momgrid, K_DIM, t, tp, mu, d_coarse)
                freq_sum += G1_val * G2_val
            bubble[iq, ik] = freq_sum / BETA

    return bubble
In [725]:
import numpy as np

def compute_particle_particle_bubble_q0_fft(G1, G2, fgrid, momgrid, BETA, t, tp, mu, extra_freq=10):
    """
    Compute the particle-particle bubble at q=0 and Ω=0, integrated over momentum,
    using the convolution theorem (via FFT).
    
    The bubble is defined as:
    
      \[
      \Pi(0,0)=\frac{1}{\beta}\sum_n\;\sum_k G_1(i\omega_n,k)\,G_2(i\omega_{-n-1},-k)
      \]
    
    Here the sum over momentum k is computed as a convolution using FFT.
    The Green's functions G1 and G2 are assumed to be defined on a momentum grid with 
    \(K\_DIM\times K\_DIM\) points (flattened into an array of length \(n_{mom}\)). The grid is
    assumed to be ordered as:
    
      \[
      \text{momgrid}[i] = \Bigl(\frac{i//K\_DIM\cdot 2\pi}{K\_DIM},\,\frac{i \% K\_DIM\cdot 2\pi}{K\_DIM}\Bigr)
      \]
    
    and the frequency labels follow \(n\in[-N_0, N_0)\) with \(N_0=\texttt{n_freq}//2\).
    When a frequency label required in the extended sum is out of the provided window,
    the bare Green's function is used.
    
    Parameters:
      G1, G2    : numpy arrays of shape (n_freq, n_mom) containing the Green's functions.
      fgrid     : numpy array of Matsubara frequencies corresponding to labels in [-N0, N0).
      momgrid   : numpy array of shape (n_mom, 2) with momentum coordinates.
      BETA      : float, inverse temperature.
      t, tp, mu : floats, model parameters.
      extra_freq: int, additional frequency labels (beyond the provided window) to sum over.
    
    Returns:
      bubble_q0 : complex, the particle-particle bubble at q=0, Ω=0.
    """
    n_freq = len(fgrid)
    N0 = n_freq // 2   # Provided labels: n in [-N0, N0)
    n_ext = N0 + extra_freq  # Extended frequency summation: n from -n_ext to n_ext-1
    
    n_mom = len(momgrid)
    K_DIM = int(np.sqrt(n_mom))
    total_mom_points = K_DIM * K_DIM  # Should equal n_mom
    
    bubble_sum = 0.0 + 0.0j
    
    # Loop over extended Matsubara frequency labels.
    for n in range(-n_ext, n_ext):
        # Get G1 at frequency label n (iωₙ) as a momentum array.
        G1_n = get_G_array_by_n(n, G1, N0, BETA, momgrid, t, tp, mu, fgrid)
        # Get G2 at frequency label -n-1 (since -ωₙ = ω₋ₙ₋₁).
        G2_n = get_G_array_by_n(-n-1, G2, N0, BETA, momgrid, t, tp, mu, fgrid)
        
        # Reshape these 1D arrays (of length n_mom) into 2D arrays of shape (K_DIM, K_DIM).
        G1_n_2d = G1_n.reshape(K_DIM, K_DIM)
        G2_n_2d = G2_n.reshape(K_DIM, K_DIM)
        
        # For the partner momentum -k, we flip the array G2_n_2d.
        G2_n_flipped = np.flip(np.flip(G2_n_2d, axis=0), axis=1)
        
        # Compute the circular convolution using FFT:
        # By the convolution theorem, the sum over momentum k is given by:
        #      S = total_mom_points * [ifft2(fft2(G1_n_2d)*fft2(G2_n_flipped))]_{(0,0)}
        conv = np.fft.ifft2(np.fft.fft2(G1_n_2d) * np.fft.fft2(G2_n_flipped))
        momentum_sum = total_mom_points * conv[0, 0]
        
        bubble_sum += momentum_sum
        
    bubble_q0 = bubble_sum / BETA
    return bubble_q0

import numpy as np

def compute_bare_green(freq, k, t, tp, mu):
    """
    Compute the bare Green's function G0 for a given momentum coordinate and frequency.
    
    Parameters:
      freq : complex or float
             Frequency at which to evaluate the Green's function.
             For Matsubara frequencies, pass freq = 1j * omega.
      k    : array-like of length 2
             Momentum coordinate [kx, ky] in the Brillouin zone.
      t    : float
             Nearest-neighbor hopping amplitude.
      tp   : float
             Next-nearest-neighbor hopping amplitude.
      mu   : float
             Chemical potential.
             
    Returns:
      G0   : complex
             The bare Green's function, i.e. \(G_0(i\omega,k)=\frac{1}{i\omega-(\epsilon(k)-\mu)}\).
    """
    kx, ky = k
    epsilon = -2 * t * (np.cos(kx) + np.cos(ky)) - 4 * tp * np.cos(kx) * np.cos(ky)
    xi = epsilon - mu
    return 1.0 / (freq - xi)

def get_G_array_by_n(n, G_array, N0, BETA, momgrid, t, tp, mu, fgrid):
    """
    Return the momentum-dependent Green's function at Matsubara label n.
    
    The provided G_array is defined for labels n in [-N0, N0) (accessible as index n+N0).
    If n is out of this range, the bare Green's function is computed for each momentum.
    
    Parameters:
      n       : int
                Matsubara label such that \(\omega_n = (2n+1)\pi/\beta\).
      G_array : numpy array of shape (n_freq, n_mom) containing the Green's function.
      N0      : int, equal to n_freq//2.
      BETA    : float, inverse temperature.
      momgrid : numpy array of shape (n_mom, 2) with momentum coordinates.
      t, tp, mu: floats, parameters for the bare Green's function.
      fgrid   : numpy array of available Matsubara frequencies (for labels in [-N0, N0)).
      
    Returns:
      result  : numpy array of shape (n_mom,) corresponding to \(G(i\omega_n,k)\) for each momentum.
    """
    n_mom = len(momgrid)
    result = np.zeros(n_mom, dtype=complex)
    if -N0 <= n < N0:
        result[:] = G_array[n + N0, :]
    else:
        omega = (2 * n + 1) * np.pi / BETA
        for i in range(n_mom):
            result[i] = compute_bare_green(1j * omega, momgrid[i], t, tp, mu)
    return result


def compute_particle_particle_bubble_q0_direct(G1, G2, fgrid, momgrid, BETA, t, tp, mu, extra_freq=10):
    """
    Compute the particle-particle bubble at q=0 and Ω=0, integrated over momentum,
    by directly summing over momentum indices (without using FFT).
    
    The bubble is defined as:
    
        \[
        \Pi(0,0) = \frac{1}{\beta}\sum_{n}\,\sum_{k} G_1(i\omega_n,k)\,G_2(i\omega_{-n-1},-k)
        \]
    
    Here, for each momentum k the partner momentum is computed as:
    
        \[
        -k \equiv \bigl( (-k_x)\bmod 2\pi,\; (-k_y)\bmod 2\pi \bigr).
        \]
    
    The momentum grid is assumed to be a regular \(K\_DIM \times K\_DIM\) grid (flattened
    to an array of length n_mom), with
    
        \[
        \text{momgrid}[i] = \Bigl(\frac{i//K\_DIM\cdot 2\pi}{K\_DIM},\,\frac{i \% K\_DIM\cdot 2\pi}{K\_DIM}\Bigr).
        \]
    
    If a given Matsubara label is not available in G1 or G2, the bare Green's function is used.
    
    Parameters:
      G1, G2    : numpy arrays of shape (n_freq, n_mom) containing the Green's functions.
      fgrid     : numpy array of Matsubara frequencies corresponding to labels in [-N0, N0).
      momgrid   : numpy array of shape (n_mom, 2) with momentum coordinates.
      BETA      : float, inverse temperature.
      t, tp, mu : floats, model parameters.
      extra_freq: int, additional frequency labels (beyond the provided window) to sum over.
      
    Returns:
      bubble_q0 : complex, the particle-particle bubble at q=0, Ω=0 computed directly.
    """
    n_freq = len(fgrid)
    N0 = n_freq // 2  # Provided labels: n in [-N0, N0)
    n_ext = N0 + extra_freq  # Extended frequency summation: n from -n_ext to n_ext-1

    n_mom = len(momgrid)
    # Determine K_DIM from momgrid (assuming a square grid)
    K_DIM = int(np.sqrt(n_mom))
    delta = 2 * np.pi / K_DIM

    bubble_sum = 0.0 + 0.0j

    # Loop over extended Matsubara frequency labels.
    for n in range(-n_ext, n_ext):
        # Loop over momentum indices k.
        for k_index in range(n_mom):
            k_coord = momgrid[k_index]
            # Compute partner momentum: -k modulo 2π.
            p_coord = ( (-k_coord[0]) % (2 * np.pi), (-k_coord[1]) % (2 * np.pi) )
            # Determine the index corresponding to p_coord.
            i_x = int(round(p_coord[0] / delta)) % K_DIM
            i_y = int(round(p_coord[1] / delta)) % K_DIM
            p_index = i_x * K_DIM + i_y

            # Retrieve Green's function values:
            # G1 at frequency label n for momentum k.
            G1_val = get_G_array_by_n(n, G1, N0, BETA, momgrid, t, tp, mu, fgrid)[k_index]
            # G2 at frequency label -n-1 for momentum p.
            G2_val = get_G_array_by_n(-n-1, G2, N0, BETA, momgrid, t, tp, mu, fgrid)[p_index]

            bubble_sum += G1_val * G2_val

    bubble_q0 = bubble_sum / BETA
    return bubble_q0


def compute_particle_particle_bubble_q0_fft(G1, G2, fgrid, momgrid, BETA, t, tp, mu, extra_freq=10):
    """
    Compute the particle-particle bubble at q=0 and Ω=0, integrated over momentum,
    using the convolution theorem (via FFT).
    
    The bubble is defined as:
    
      \[
      \Pi(0,0)=\frac{1}{\beta}\sum_n\;\sum_k G_1(i\omega_n,k)\,G_2(i\omega_{-n-1},-k)
      \]
    
    Here the sum over momentum k is computed as a convolution using FFT.
    The Green's functions G1 and G2 are assumed to be defined on a momentum grid with 
    \(K\_DIM\times K\_DIM\) points (flattened into an array of length \(n_{mom}\)). The grid is
    assumed to be ordered as:
    
      \[
      \text{momgrid}[i] = \Bigl(\frac{i//K\_DIM\cdot 2\pi}{K\_DIM},\,\frac{i \% K\_DIM\cdot 2\pi}{K\_DIM}\Bigr)
      \]
    
    and the frequency labels follow \(n\in[-N_0, N_0)\) with \(N_0=\texttt{n_freq}//2\).
    When a frequency label required in the extended sum is out of the provided window,
    the bare Green's function is used.
    
    Parameters:
      G1, G2    : numpy arrays of shape (n_freq, n_mom) containing the Green's functions.
      fgrid     : numpy array of Matsubara frequencies corresponding to labels in [-N0, N0).
      momgrid   : numpy array of shape (n_mom, 2) with momentum coordinates.
      BETA      : float, inverse temperature.
      t, tp, mu : floats, model parameters.
      extra_freq: int, additional frequency labels (beyond the provided window) to sum over.
    
    Returns:
      bubble_q0 : complex, the particle-particle bubble at q=0, Ω=0.
    """
    n_freq = len(fgrid)
    N0 = n_freq // 2   # Provided labels: n in [-N0, N0)
    n_ext = N0 + extra_freq  # Extended frequency summation: n from -n_ext to n_ext-1
    
    n_mom = len(momgrid)
    K_DIM = int(np.sqrt(n_mom))
    total_mom_points = K_DIM * K_DIM  # Should equal n_mom
    
    bubble_sum = 0.0 + 0.0j
    
    # Loop over extended Matsubara frequency labels.
    for n in range(-n_ext, n_ext):
        # Get G1 at frequency label n (iωₙ) as a momentum array.
        G1_n = get_G_array_by_n(n, G1, N0, BETA, momgrid, t, tp, mu, fgrid)
        # Get G2 at frequency label -n-1 (since -ωₙ = ω₋ₙ₋₁).
        G2_n = get_G_array_by_n(-n-1, G2, N0, BETA, momgrid, t, tp, mu, fgrid)
        
        # Reshape these 1D arrays (of length n_mom) into 2D arrays of shape (K_DIM, K_DIM).
        G1_n_2d = G1_n.reshape(K_DIM, K_DIM)
        G2_n_2d = G2_n.reshape(K_DIM, K_DIM)
        
        # For the partner momentum -k, we flip the array G2_n_2d.
        G2_n_flipped = np.flip(np.flip(G2_n_2d, axis=0), axis=1)
        
        # Compute the circular convolution using FFT:
        # By the convolution theorem, the sum over momentum k is given by:
        #      S = total_mom_points * [ifft2(fft2(G1_n_2d)*fft2(G2_n_flipped))]_{(0,0)}
        conv = np.fft.ifft2(np.fft.fft2(G1_n_2d) * np.fft.fft2(G2_n_flipped))
        momentum_sum = total_mom_points * conv[0, 0]
        
        bubble_sum += momentum_sum
        
    bubble_q0 = bubble_sum / BETA
    return bubble_q0

# === Example Usage ===
if __name__ == "__main__":
    import matplotlib.pyplot as plt
    # Model parameters.
    t = 1.0
    tp = 0.3
    mu = 0.0
    BETA = 10.0
    # Frequency grid: assume n_freq frequencies with labels n in [-N0, N0)
    n_freq = 50  # For example, n in [-25, 25)
    N0 = n_freq // 2
    n_labels = np.arange(-N0, N0)
    fgrid = (2 * n_labels + 1) * np.pi / BETA  # Matsubara frequencies.
    
    # Momentum grid parameters: K_DIM x K_DIM grid.
    K_DIM = 20
    n_mom = K_DIM * K_DIM
    momgrid = np.zeros((n_mom, 2))
    for i in range(n_mom):
        momgrid[i, 0] = (i // K_DIM) * (2 * np.pi / K_DIM)
        momgrid[i, 1] = (i % K_DIM) * (2 * np.pi / K_DIM)
    
    # For testing, create synthetic G1 and G2 arrays.
    # Here, for simplicity, we use the bare Green's functions.
    G1 = np.zeros((n_freq, n_mom), dtype=complex)
    G2 = np.zeros((n_freq, n_mom), dtype=complex)
    for i, n in enumerate(n_labels):
        omega = (2 * n + 1) * np.pi / BETA
        for m in range(n_mom):
            G1[i, m] = compute_bare_green(1j * omega, momgrid[m], t, tp, mu)
            G2[i, m] = compute_bare_green(1j * omega, momgrid[m], t, tp, mu)
    
    bubble_q0 = compute_particle_particle_bubble_q0_fft(G1, G2, fgrid, momgrid, BETA, t, tp, mu, extra_freq=10)
    bubble_q02 = compute_particle_particle_bubble_q0_direct(G1, G2, fgrid, momgrid, BETA, t, tp, mu, extra_freq=10)
    print("Particle-particle bubble at q=0, Ω=0:", bubble_q0, bubble_q02)
---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
/tmp/ipykernel_190305/1736176749.py in <module>
    305 
    306     bubble_q0 = compute_particle_particle_bubble_q0_fft(G1, G2, fgrid, momgrid, BETA, t, tp, mu, extra_freq=10)
--> 307     bubble_q02 = compute_particle_particle_bubble_q0_direct(G1, G2, fgrid, momgrid, BETA, t, tp, mu, extra_freq=10)
    308     print("Particle-particle bubble at q=0, Ω=0:", bubble_q0, bubble_q02)
    309 

/tmp/ipykernel_190305/1736176749.py in compute_particle_particle_bubble_q0_direct(G1, G2, fgrid, momgrid, BETA, t, tp, mu, extra_freq)
    194             G1_val = get_G_array_by_n(n, G1, N0, BETA, momgrid, t, tp, mu, fgrid)[k_index]
    195             # G2 at frequency label -n-1 for momentum p.
--> 196             G2_val = get_G_array_by_n(-n-1, G2, N0, BETA, momgrid, t, tp, mu, fgrid)[p_index]
    197 
    198             bubble_sum += G1_val * G2_val

/tmp/ipykernel_190305/1736176749.py in get_G_array_by_n(n, G_array, N0, BETA, momgrid, t, tp, mu, fgrid)
    126         omega = (2 * n + 1) * np.pi / BETA
    127         for i in range(n_mom):
--> 128             result[i] = compute_bare_green(1j * omega, momgrid[i], t, tp, mu)
    129     return result
    130 

/tmp/ipykernel_190305/1736176749.py in compute_bare_green(freq, k, t, tp, mu)
     95     """
     96     kx, ky = k
---> 97     epsilon = -2 * t * (np.cos(kx) + np.cos(ky)) - 4 * tp * np.cos(kx) * np.cos(ky)
     98     xi = epsilon - mu
     99     return 1.0 / (freq - xi)

KeyboardInterrupt: 
In [34]:
the_bubs = []
In [35]:
del the_bubs
the_bubs = []
the_bubs_refined = []

for bub in GG_bubs:
    GG_bub = 0.0
    for k_idx in range(256):
        kx, ky = momgrid[k_idx]
        ff = np.power(np.cos(kx) - np.cos(ky), 2.0)
        GG_bub += ff*bub[0, k_idx]/(16.0*16.0)
    the_bubs.append(GG_bub)

for bub in GG_bubs_refined:
    GG_bub = 0.0
    for k_idx in range(256*25):
        kx, ky = refined_momgrid[k_idx]
        ff = np.power(np.cos(kx) - np.cos(ky), 2.0)
        GG_bub += ff*bub[0, k_idx]/(16.0*16.0*5.0*5.0)
    the_bubs_refined.append(GG_bub)


the_GG_cohcoh_bubs = []
for bub in GG_cohcoh_bubs:
    the_GG_cohcoh_bub = 0.0
    for k_idx in range(256*25):
        kx, ky = refined_momgrid[k_idx]
        ff = np.power(np.cos(kx) - np.cos(ky), 2.0)
        the_GG_cohcoh_bub += ff*bub[0, k_idx]/(16.0*16.0*5.0*5.0)
    the_GG_cohcoh_bubs.append(the_GG_cohcoh_bub)


the_GG_cohincoh_bubs = []
for bub in GG_cohincoh_bubs:
    the_GG_cohincoh_bub = 0.0
    for k_idx in range(256*25):
        kx, ky = refined_momgrid[k_idx]
        ff = np.power(np.cos(kx) - np.cos(ky), 2.0)
        the_GG_cohincoh_bub += 2.0*ff*bub[0, k_idx]/(16.0*16.0*5.0*5.0)
    the_GG_cohincoh_bubs.append(the_GG_cohincoh_bub)


the_GG_incohincoh_bubs = []
for bub in GG_incohincoh_bubs:
    the_GG_incohincoh_bub = 0.0
    for k_idx in range(256*25):
        kx, ky = refined_momgrid[k_idx]
        ff = np.power(np.cos(kx) - np.cos(ky), 2.0)
        the_GG_incohincoh_bub += ff*bub[0, k_idx]/(16.0*16.0*5.0*5.0)
    the_GG_incohincoh_bubs.append(the_GG_incohincoh_bub)
In [ ]:
 
In [38]:
omg_array = np.array(omegas[0:-1]).astype('int').astype('str')
omg_array
Out[38]:
array(['1', '10', '100', '1000'], dtype='<U21')
In [39]:
#fig, axes = plt.subplots(nrows=3, ncols=2, figsize=(4.0*2*0.9, 4.2*3*0.9))  # Adjust figsize as needed


#plt.plot(np.array(omegas[2:-1]).astype('str'), the_bubs[2:-1], "*-", label=r"$\Pi^{dSC}$")
plt.plot(omg_array, the_bubs_refined[0:-1], "*-", label=r"$\Pi^{dSC}$")

plt.plot(omg_array, the_GG_cohcoh_bubs[0:-1], "*", label=r"$\Pi^{dSC}_{coh,coh}$")
plt.plot(omg_array, the_GG_incohincoh_bubs[0:-1], ".", label=r"$\Pi^{dSC}_{incoh,incoh}$")
plt.plot(omg_array, the_GG_cohincoh_bubs[0:-1], "o", label=r"$\Pi^{dSC}_{coh,incoh}$")
#plt.plot(np.array(omegas[2:-1]).astype('str'), susc_dsc_bubs[2:-1], "*-", label=r"$\Pi^{dSC}pp$")
plt.axhline(y=0, color='grey', linestyle='--')
#plt.plot(np.array(omegas[2:-1]).astype('str'), np.array(GGs_integrated[2:-1])/296.0)
plt.ylabel(r"$\Pi^{dSC}(q= 0)t$")
plt.xlabel(r"$\omega_0/t$")
#plt.xscale("log")
plt.legend()
Out[39]:
<matplotlib.legend.Legend at 0x70e7f4bf7d60>
No description has been provided for this image
In [ ]:
 
In [51]:
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec

# Create a figure
fig = plt.figure(figsize=(3.8*2*0.9, 3.4*1*0.9))

# Define the GridSpec layout
gs = GridSpec(2, 3, width_ratios=[3, 1, 1], height_ratios=[1.0, 1])  # 2 rows, 3 columns

# Left plot (big one)
ax1 = fig.add_subplot(gs[:, 0])  # Occupy both rows in the first column
#ax1.set_title(' Left Plot')


ax1.plot(omg_array, the_bubs_refined[0:-1], "*--", label=r"$\Pi^{\mathrm{dSC}}$", markerfacecolor='white', markeredgecolor='black', markersize=12)

ax1.plot(omg_array, the_GG_cohcoh_bubs[0:-1], "*", label=r"$\Pi^{\mathrm{dSC}}_{\mathrm{coh-coh}}$")
ax1.plot(omg_array, the_GG_incohincoh_bubs[0:-1], ".", label=r"$\Pi^{\mathrm{dSC}}_{\mathrm{incoh-incoh}}$")
ax1.plot(omg_array, the_GG_cohincoh_bubs[0:-1], "o", label=r"$\Pi^{\mathrm{dSC}}_{\mathrm{coh-incoh}}$")
#plt.plot(np.array(omegas[2:-1]).astype('str'), susc_dsc_bubs[2:-1], "*-", label=r"$\Pi^{dSC}pp$")
ax1.axhline(y=0, color='grey', linestyle='--')
#plt.plot(np.array(omegas[2:-1]).astype('str'), np.array(GGs_integrated[2:-1])/296.0)
ax1.set_ylabel(r"$\Pi^{\mathrm{dSC}}t$")
ax1.set_xlabel(r"$\omega_0/t$")
ax1.legend()

# Right plots (smaller ones stacked vertically)
ax2 = fig.add_subplot(gs[0, 1])  # Top right
ax2.set_ylim([0.6, 1.0])
ax2.plot(ReZs[0:-1], "*-", color="black")  # Example plot
ax2.set_xticks([])
ax2.set_title(r'$Z$')

ax3 = fig.add_subplot(gs[1, 1])  # Bottom right
ax3.set_ylim([-0.07, 0.0])
ax3.plot(Gammas[0:-1], "*-", color="red")  # Example plot
ax3.set_xticks([])
ax3.set_title(r'$\Gamma/t$')

plt.subplots_adjust(wspace=0.5, hspace=0.35)


# Display the plots
#plt.tight_layout()
#plt.show()
plt.savefig('dwave_bub_fluctdiag_Z_and_Gamma.pdf', dpi=300, bbox_inches='tight', pad_inches=0.05)  # Save the figure with higher DPI for better resolution
No description has been provided for this image
In [663]:
np.array(GGs_integrated[2:-1])/susc_sc_bubs[2:-1]
Out[663]:
array([280.65145026+0.j, 291.24692267+0.j, 294.56971592+0.j,
       295.21260249+0.j])
In [149]:
def test_polynomial_interpolation(fgrid, IM_Sigma, momentum_index=0):
    """
    Test the cubic polynomial interpolation on the imaginary part of the self-energy
    for a given momentum index.

    Parameters:
      fgrid          : numpy array of Matsubara frequencies (real numbers).
      IM_Sigma       : numpy array of shape (n_freq, n_mom) containing the imaginary part
                       of the self-energy.
      momentum_index : int, optional (default=0)
                       The momentum index on which to perform the test.

    This function:
      - Selects three Matsubara frequency points starting from index n_freq//2.
      - Performs a cubic interpolation using np.polyfit.
      - Plots the interpolated polynomial curve over a fine grid and compares it with
        the original discrete data points.
      
    Returns:
      p : numpy.poly1d
          The polynomial object representing the cubic interpolation.
    """
    n_freq = len(fgrid)
    # Assume the first Matsubara frequency is at index n_freq//2.
    idx0 = n_freq // 2
    # Use the three points: idx0, idx0+1, idx0+2.
    indices = [idx0, idx0+1, idx0+2]
    indices_more = [idx0, idx0+1, idx0+2, idx0+3, idx0+4, idx0+5, idx0+6, idx0+7, idx0+8, idx0+9, idx0+10, idx0+11, idx0+12, idx0+13, idx0+14, idx0+15, idx0+16, idx0+17]
    # Extract the corresponding frequencies and imaginary part of Sigma for the given momentum.
    f_data = fgrid[indices]
    f_data_more = fgrid[indices_more]
    print(f_data_more)
    sigma_data = IM_Sigma[indices, momentum_index]
    
    # Perform a cubic (degree 3) polynomial fit.
    coeffs = np.polyfit(f_data, sigma_data, 3)
    p = np.poly1d(coeffs)
    
    # Create a fine frequency grid for plotting the interpolated polynomial.
    f_fit = np.linspace(0, f_data_more[-1], 200)
    sigma_fit = p(f_fit)

    sig_data_to_plot = IM_Sigma[indices_more, momentum_index]
    sig_data_fit = p(f_fit)
    
    # Plot the interpolated polynomial and the original data points.
    plt.figure(figsize=(8, 6))
    plt.plot(f_fit, sig_data_fit, label='Cubic Polynomial Fit', color='blue')
    plt.scatter(f_data_more, sig_data_to_plot, label='Data Points', color='red', zorder=5)
    plt.xlabel('Matsubara frequency')
    plt.ylabel('Imaginary part of Sigma')
    plt.title(f'Cubic Polynomial Interpolation (Momentum index {momentum_index})')
    plt.legend()
    plt.show()
    
    print("Cubic polynomial coefficients (highest degree first):", coeffs)
    return p
In [272]:
test_polynomial_interpolation(fgrid, Sig_IM)
plt.plot(fgrid, Sig_IM[:, 0], "*")
[0.15707963 0.4712389  0.78539816 1.09955743 1.41371669 1.72787596
 2.04203522 2.35619449 2.67035376 2.98451302 3.29867229 3.61283155
 3.92699082 4.24115008 4.55530935 4.86946861 5.18362788 5.49778714]
No description has been provided for this image
Cubic polynomial coefficients (highest degree first): [ 0.00276551 -0.00227387 -0.00430614 -0.00027125]
Out[272]:
[<matplotlib.lines.Line2D at 0x78faa641d2d0>]
No description has been provided for this image
In [13]:
plot_inv_sucs(objs_finitedoping_vh2p5_u3, title ="$U = 3t, V_h = 2.5t$")
No description has been provided for this image
In [14]:
plot_fluct_diag_chi('sc', objs_=objs_finitedoping_vh2p5_u3, title ="$U = 3t, V_h = 2.5t$")
No description has been provided for this image
In [15]:
plot_fluct_diag_chi('d', objs_=objs_finitedoping_vh2p5_u3, title ="$U = 3t, V_h = 2.5t$")
No description has been provided for this image
In [16]:
plot_fluct_diag_chi('m', objs_=objs_finitedoping_vh2p5_u3, title ="$U = 3t, V_h = 2.5t$")
No description has been provided for this image
In [49]:
plot_fluct_diag_chi('m', objs_=objs_half_filling_no_SE_Vh_1p5, title =r"$U = 2.5t, V_h = 2.5t, {\Sigma} = 0$")
No description has been provided for this image
In [104]:
plt.plot(-objs_half_filling_no_SE_Vh_1p5[1]["w_d"], "*")
Out[104]:
[<matplotlib.lines.Line2D at 0x7df44f1f5150>]
No description has been provided for this image
In [108]:
objs_half_filling_no_SE_Vh_1p5[1]["w_d"][320]
Out[108]:
1.7531939280049903e-14
In [ ]:
from scipy.optimize import curve_fit

def linear(x, c):
    return  -x + c

def plot_d_susc_vs_g0(objs, title_ = ""):
    objs_ = sorted(objs, key=lambda o: o["Vh"] )
    plt.grid(True)
    #plt.ylim([2, 5])
    #plt.xlim([0.0, 3.5])
    plt.title(r"$\Omega = "+str(objs[0]['Omega0'])+r"$")
    plt.xlabel(r"$2g_0^2/\Omega_0$")
    plt.ylabel(r"$\chi_D^{-1}(\pi, \pi)$")
    #plt.xscale('log')
    chi_vals = []
    Vh_vals = []
    for o in objs_:
        if o["max_d"] != o["max_d"] or math.isinf(o["max_d"]):
            continue
        if o["max_d"] == 0:
            continue
        else:
            chi_vals.append(1.0/o["max_d"])
        Vh_vals.append(o["Vh"])
    #print(chi_vals)
    popt, pcov = curve_fit(linear, Vh_vals, chi_vals, p0=[0])
    print(round(pcov[0][0], 4))
    
    fitted_y_vals = [linear(x, popt[0]) for x in Vh_vals]
    
    plt.plot(Vh_vals, chi_vals, "*-", label=r"$U$ = "+str(objs[0]['U']))
    plt.plot(Vh_vals, fitted_y_vals, "-.")
    
In [75]:
fname = r"/home/aiman/final_beta20_hubbardholstein/doping_lefttop_beta20Vh1p0U2p5/dat__g00p070711_OMEGA00p01_U2p5_V0_TP-0p2_Mu-0p8_KDIM16_FineMoms6400_RefdMoms410_FFShellCount1p5_BETA20_C8_T_START5_Square Hubbard-Holstein_OMFL_FLOWEQN_MULTI1LOOP_1SELOOP_FIXFILLING_RESTFUNC_ALLSYMM_PRECOMPPROJ_SELFEN_FLOW/final.h5"

f = h5py.File(fname)
In [111]:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# --- PARAMETRI CONFIGURABILI ---
Lx, Ly = 3, 3

# Occupazioni: 0 = vuoto, '1u' = spin up, '1d' = spin down, 2 = doppia occupazione, '0_'=occupato in precedenza
occupazioni = [
    '1u', 0,    2,
    '1d', '1u', '0_green',
    '0_red',    2,    '1u'
]

# Siti con interazione U attiva (solo se il sito è doppiamente occupato)
sites_with_U = [(0, 2), (2, 1)]  # coordinate (i, j)

# --- FUNZIONE PER PAIRING INTERNO ---
def draw_internal_pairing(ax, x0, y0, z0=0.2, amp=0.05, n_waves=4, color='purple'):
    x_start = x0 - 0.4
    x_end = x0 + 0.4
    t = np.linspace(0, 1, 100)
    x = x_start + (x_end - x_start) * t
    y = np.full_like(t, y0)
    z = z0 + amp * np.sin(4 * np.pi * n_waves * t)
    ax.plot(x, y, z, color=color, linewidth=2)
    
def draw_hopping_arrow(ax, x1, y1, x2, y2, z_base=0.25, z_peak=0.6, 
                       color='blue', linestyle='--', n_points=100):
    t = np.linspace(0, 1, n_points)
    x = x1 + 0.1 + (x2 - x1 - 0.3) * t
    y = y1 - 0.1 + (y2 - y1 - 0.1) * t
    # arco in z: parte e finisce a z_base, raggiunge z_peak in mezzo
    z = z_base + (+ 2 * (z_peak - z_base)) * t * (1 - t)
    
    # Corpo della curva (freccia spezzata)
    ax.plot(x, y, z, color=color, linestyle=linestyle, linewidth=2)
    
    # Punta della freccia in fondo (direzione tangente)
    i_arrow = -2  # penultimo e ultimo punto
    dx = x[i_arrow+1] - x[i_arrow]
    dy = y[i_arrow+1] - y[i_arrow]
    dz = z[i_arrow+1] - z[i_arrow]
    ax.quiver(x[i_arrow], y[i_arrow], z[i_arrow],
              dx, dy, dz, color=color, arrow_length_ratio=0.2, linewidth=1)


# --- CODICE GRAFICO ---
x = np.linspace(-1, 1, 30)
y = np.linspace(-1, 1, 30)
X, Y = np.meshgrid(x, y)
Z = -np.exp(-10 * (X**2 + Y**2))

fig = plt.figure(figsize=(10, 10))
ax = fig.add_subplot(111, projection='3d')

# Griglia di sotto
for i in range(Lx):
    ax.plot([i * 3, i * 3], [0, Ly * 3], [-1.1]*2, color='black', linewidth=1.5)
for j in range(Ly):
    ax.plot([0, Lx * 3], [j * 3, j * 3], [-1.1]*2, color='black', linewidth=1.5)

# Siti
site_list = [(i, j) for j in range(Ly) for i in range(Lx)]  # ordine riga per riga
for idx, (i, j) in enumerate(site_list):
    x0, y0 = i * 3, j * 3
    occ = occupazioni[idx]

    # Pozzo
    ax.plot_surface(X + x0, Y + y0, Z, color='blue', alpha=0.1, linewidth=0)

    # Elettroni
    if occ == '1u':
        ax.scatter(x0, y0, 0.2, color='red', s=500)
        ax.quiver(x0, y0, 0.2, 0, 0, 0.25, color='red', arrow_length_ratio=0.5, lw=4)
    elif occ == '1d':
        ax.scatter(x0, y0, 0.2, color='green', s=500)
        ax.quiver(x0, y0, 0.2, 0, 0, -0.25, color='green', arrow_length_ratio=0.5, lw=4)
    elif occ == 2:
        ax.scatter(x0 - 0.4, y0, 0.2, color='red', s=500)
        ax.quiver(x0 - 0.4, y0, 0.2, 0, 0, 0.25, color='red', arrow_length_ratio=0.5, lw=4)
        ax.scatter(x0 + 0.4, y0, 0.2, color='green', s=500)
        ax.quiver(x0 + 0.4, y0, 0.2, 0, 0, -0.25, color='green', arrow_length_ratio=0.5, lw=4)
        draw_internal_pairing(ax, x0, y0, z0=0.2)
    elif occ == '0_red':
        ax.scatter(x0 - 0.2, y0, 0.2, color='red', alpha=0.2, s=500)
        ax.quiver(x0 - 0.2, y0, 0.2, 0, 0, 0.25, color='red', alpha=0.2, arrow_length_ratio=0.5, lw=4)
    elif occ == '0_green':
        ax.scatter(x0 - 0.2, y0, 0.2, color='green', alpha=0.2, s=500)
        ax.quiver(x0 - 0.2, y0, 0.2, 0, 0, -0.25, color='green', alpha=0.2, arrow_length_ratio=0.5, lw=4)

# testo
ax.text(3, 6.5, 0.3, "U", fontsize=20, color='purple', ha='center', weight='bold')
ax.text(0.75, 6.5, 0.35, "-t", fontsize=20, color='blue', ha='center', weight='bold')

# hopping
x1, y1 = 0 * 3, 2 * 3
x2, y2 = 1 * 3, 2 * 3
draw_hopping_arrow(ax, x1, y1, x2, y2)


# Setup
ax.set_xlim(0, Lx*3)
ax.set_ylim(0, Ly*3)
ax.set_zlim(-1.2, 1)
ax.axis('off')
plt.tight_layout()
plt.show()
/tmp/ipykernel_13027/2535438097.py:55: UserWarning: cmr10 font should ideally be used with mathtext, set axes.formatter.use_mathtext to True
  ax = fig.add_subplot(111, projection='3d')
No description has been provided for this image
In [ ]: