Ejemplo n.º 1
0
def run(renorm, beta, S0, PI0):
    params['renormalized'] = True if renorm == 1 else False
    params['beta'] = beta

    migdal = Migdal(params, basedir)

    savedir, mu, G, D, S, GG = migdal.selfconsistency(sc_iter=200,
                                                      frac=0.4,
                                                      cont=True,
                                                      S0=S0,
                                                      PI0=PI0)
    print('compute jjcorr ivn')
    migdal.compute_jjcorr(savedir, G, D)
    PI = params['g0']**2 * GG

    migdal = RealAxisMigdal(params, basedir)
    migdal.selfconsistency(sc_iter=35, frac=0.8, cont=False)

    print('compute jjcorr w')
    path = os.path.join(savedir, 'G.npy')
    G = np.load(path)
    path = os.path.join(savedir, 'GR.npy')
    GR = np.load(path)
    migdal.compute_jjcorr(savedir, G, GR)

    return S, PI
Ejemplo n.º 2
0
def compute_single_particle(basedir):

    lambs = [0.2, 0.4, 0.5]
    S0, PI0 = None, None
    fracs = [0., 0.8, 0.2]

    for i, lamb in enumerate(lambs):

        print('2D Renormalized Migdal')

        W = 8.0
        params['g0'] = lamb2g0_ilya(lamb, params['omega'], W)
        print('g0 is ', params['g0'])

        migdal = Migdal(params, basedir)

        sc_iter = 800
        savedir, mu, G, D, S, GG = migdal.selfconsistency(sc_iter,
                                                          S0=S0,
                                                          PI0=PI0,
                                                          frac=fracs[i],
                                                          cont=True)
        PI = params['g0']**2 * GG

        save(savedir + 'S.npy', S)
        save(savedir + 'PI.npy', PI)
        save(savedir + 'G.npy', G)
        save(savedir + 'D.npy', D)

        #sc_iter = 300
        #Xsc, Xcdw = migdal.susceptibilities(sc_iter, G, D, PI, frac=0.7)
        #save(savedir + 'Xsc.npy',  [Xsc])
        #save(savedir + 'Xcdw.npy', [Xcdw])

        S0, PI0 = S, PI
Ejemplo n.º 3
0
def imag_axis():
    interp = None
    if False:
        interp_folder = '/scratch/users/bln/elph/data/2d/data/data_{}renormalized_nk120_abstp0.300_dim2_g00.33665_nw128_omega0.170_dens0.800_beta16.0000_QNone'.format(
            '' if renorm == 1 else 'un')
        interp = Interp(interp_folder, params['nk'])

    migdal = Migdal(params, basedir)
    migdal.selfconsistency(sc_iter=1, frac=0.9, cont=True, interp=interp)
Ejemplo n.º 4
0
def compute_susceptibilities(basedir):
    shutil.rmtree(basedir + 'data/')

    S0, PI0 = None, None
    lambs = linspace(0.01, 0.6, 20)
    fracs = linspace(0.8, 0.2, len(lambs))
    Xscs = []
    Xcdws = []

    for i, lamb in enumerate(lambs):

        print('2D Renormalized Migdal')

        W = 8.0
        params['g0'] = lamb2g0_ilya(lamb, params['omega'], W)
        print('g0 is ', params['g0'])

        migdal = Migdal(params, basedir)

        sc_iter = 400
        savedir, mu, G, D, S, GG = migdal.selfconsistency(savedir,
                                                          sc_iter,
                                                          S0=S0,
                                                          PI0=PI0,
                                                          frac=0.2)
        PI = params['g0']**2 * GG

        if G is None: break

        sc_iter = 300
        Xsc, Xcdw = migdal.susceptibilities(savedir,
                                            sc_iter,
                                            G,
                                            D,
                                            GG,
                                            frac=0.7)

        save(savedir + 'Xsc.npy', [Xsc])
        save(savedir + 'Xcdw.npy', [Xcdw])

        if Xsc is None or Xcdw is None: break

        Xscs.append(Xsc)
        Xcdws.append(amax(Xcdw))

        save(basedir + 'Xscs.npy', Xscs)
        save(basedir + 'Xcdws.npy', Xcdws)
        save(basedir + 'lambs.npy', lambs)

        S0, PI0 = S, PI
Ejemplo n.º 5
0
def x_vs_t_interp():

    if not params['renormalized']:    
        params['beta'] = 1.0
        dbeta = 1.0
        dbeta_min = 0.8
    else:
        params['beta'] = 73.0
        dbeta = 9.0
        dbeta_min = 2.5

    S0, PI0 = None, None
    
    while dbeta > dbeta_min and params['beta'] < 90:

        #interp_folder = basedir+'data/data_renormalized_nk16_abstp0.300_dim2_g00.33665_nw256_omega0.170_dens0.800_beta{:.4f}_QNone'.format(params['beta'])

        interp = None
        interp_folder = basedir+'data/data_{}_nk32_abstp0.300_dim2_g00.33665_nw256_omega0.170_dens0.800_beta{:.4f}_QNone'.format('renormalized' if params['renormalized'] else 'unrenormalized', params['beta'])
        if not os.path.exists(interp_folder):
            print('performing interp')
            interp = Interp(interp_folder, params['nk'])
        else:
            print('no interp')

        migdal = Migdal(params, basedir)
        savedir, mu, G, D, S, GG = migdal.selfconsistency(sc_iter=1000, frac=0.2, S0=S0, PI0=PI0, cont=True, interp=interp)
        
        if G is not None:
            params['beta'] += dbeta
            S0 = S
            PI0 = GG * params['g0']**2
            
            Xsc, Xcdw = migdal.susceptibilities(savedir, 1000, G, D, GG, frac=1)
            
            if Xcdw is None:
                print('Xcdw blew up. Decrease beta')
                dbeta /= 2
                params['beta'] -= dbeta
                continue

            print('Xsc', Xsc)
            np.save(savedir + 'Xsc.npy', [Xsc])
            np.save(savedir + 'Xcdw.npy', Xcdw)

        else:
            print('G is None')
            return
Ejemplo n.º 6
0
def run_imag_axis():
    params = read_params(basedir, rfolder)
    migdal = Migdal(params, basedir)
    G = np.load(basedir + 'data/' + rfolder + 'G.npy')
    D = np.load(basedir + 'data/' + rfolder + 'D.npy')
    print(G.shape)
    migdal.compute_jjcorr(G, D)

    params = read_params(basedir, ufolder)
    migdal = Migdal(params, basedir)
    G = np.load(basedir + 'data/' + ufolder + 'G.npy')
    D = np.load(basedir + 'data/' + ufolder + 'D.npy')
    print(G.shape)
    migdal.compute_jjcorr(G, D)
Ejemplo n.º 7
0
def x_vs_t():

    if not params['renormalized']:    
        params['beta'] = 1.0
        dbeta = 1.0
        dbeta_min = 0.8
    else:
        params['beta'] = 1.0
        dbeta = 9.0
        dbeta_min = 2.5
    

    S0, PI0 = None, None
    
    while dbeta > dbeta_min and params['beta'] < 90:
        
        migdal = Migdal(params, basedir)
        savedir, mu, G, D, S, GG = migdal.selfconsistency(sc_iter=1000, frac=0.2, S0=S0, PI0=PI0, cont=True)
        
        if G is not None:
            params['beta'] += dbeta
            S0 = S
            PI0 = GG * params['g0']**2
            
            Xsc, Xcdw = migdal.susceptibilities(savedir, 1000, G, D, GG, frac=1)
            
            if Xcdw is None:
                print('Xcdw blew up. Decrease beta')
                dbeta /= 2
                params['beta'] -= dbeta
                continue

            print('Xsc', Xsc)
            np.save(savedir + 'Xsc.npy', [Xsc])
            np.save(savedir + 'Xcdw.npy', Xcdw)

        else:
            print('G is None')
            return
Ejemplo n.º 8
0
basedir = '/scratch/users/bln/migdal_check_vs_ilya/single_particle_unrenorm/'
if os.path.exists(basedir):
    shutil.rmtree(basedir)

lamb = 0.4
frac = 0.8
S0, PI0 = None, None

print('2D unrenormalized Migdal')

params['g0'] = lamb2g0_ilya(lamb, omega, 8.0)
print('g0 = ', params['g0'])

time0 = time.time()
migdal = Migdal(params, basedir)

sc_iter = 2000
savedir, mu, G, D, S, GG = migdal.selfconsistency(sc_iter,
                                                  S0=S0,
                                                  PI0=PI0,
                                                  frac=frac)

print('savedir : ', savedir)
#save(savedir+'G.npy', G)
#save(savedir+'D.npy', D)
save(savedir + 'S.npy', S)
save(savedir + 'GG.npy', GG)

#------------------------------------------------
# reproduce the selfenergy plots
Ejemplo n.º 9
0
params['beta'] = 16.0
params['dim'] = 2
params['g0'] = mylamb2g0(lamb=1 / 6, omega=params['omega'], W=8.0)
params['Q'] = None

params['dw'] = 0.005
params['idelta'] = 0.010j
params['wmin'] = -5.0
params['wmax'] = 9.0

#params['wmin'] = -1.9
#params['wmax'] =  6.5
#params['wmin']   = -4.2
#params['wmax']   = +4.2
#params['idelta'] = 0.002j
migdal = Migdal(params, basedir)


def imag_axis():
    interp = None
    if True:
        interp_folder = '/scratch/users/bln/elph/data/2d/data/data_{}renormalized_nk120_abstp0.300_dim2_g00.33665_nw128_omega0.170_dens0.800_beta16.0000_QNone'.format(
            '' if renorm == 1 else 'un')
        interp = Interp(interp_folder, params['nk'])

    migdal.selfconsistency(sc_iter=200, frac=0.9, cont=True, interp=interp)


def real_axis():
    interp = None
    if True:
Ejemplo n.º 10
0
def test1():
    migdal = Migdal(params, basedir)
    savedir, mu, G, D, S, GG = migdal.selfconsistency(sc_iter=200, frac=0.6, cont=True)
    Xsc, Xcdw = migdal.susceptibilities(500, G, D, GG, frac=0.7)
    print('Xsc', Xsc)
Ejemplo n.º 11
0
def test_single_iteration():

    basedir = '/scratch/users/bln/elph/debug/'

    lamb = 0.6
    W    = 8.0
    params['g0'] = sqrt(0.5 * lamb / 2.4 * params['omega'] * W)
    params['nk'] = 2
    params['nw'] = 512
    params['beta'] = 16.0
    params['dens'] = 0.8
    params['omega'] = 0.5
    omega = params['omega']
    
    migdal = Migdal(params, basedir)
    S0, PI0, sc_iter  = None, None, 1
    savedir, G, D, S, GG = migdal.selfconsistency(sc_iter, S0=S0, PI0=PI0, frac=1.0)
    PI = params['g0']**2 * GG
    S = fourier.t2w(S, params['beta'], 2, 'fermion')[0]
    PI = fourier.t2w(PI, params['beta'], 2, 'boson')
    print('S from migdal')
    print(shape(S))

    savedir, wn, vn, ek, mu, deriv, dndmu = migdal.setup()

    print('E = ', params['band'](params['nk'], 1.0, params['tp']))    
    nk = params['nk']
    nw = params['nw']
    beta = params['beta']
    wn = (2.0*arange(nw)+1.0) * pi / beta
    vn = (2.0*arange(nw+1)) * pi / beta
    ekmu = params['band'](nk, 1.0, params['tp']) - mu

    Dv0 = -2.0*omega/(vn**2 + omega**2)
    nB  = 1.0/(exp(beta*omega)-1.0)
    
    S_ = zeros((nk,nk,nw), dtype=complex)
    for ik1 in range(nk):
        for ik2 in range(nk):
            for iq1 in range(nk):
                for iq2 in range(nk):

                    E = ekmu[iq1,iq2]
                    nF = 1.0/(exp(beta*E)+1.0)
                    
                    S_[ik1,ik2,:] += (nB + nF)/(1j*wn - E + omega) + (nB + 1 - nF)/(1j*wn - E - omega) 

    S_ *= params['g0']**2 / nk**2
    
    print('S-S_', mean(abs(S-S_)))

    figure()
    plot(ravel(S).imag-ravel(S_).imag)
    plot(ravel(S).real-ravel(S_).real)
    title('diff Skw')
    #savefig('figs/diff Skw.png')

    figure()
    plot(ravel(S).imag)
    plot(ravel(S_).imag)
    plot(ravel(S).real)
    plot(ravel(S_).real)
    title('Skw')
    #savefig('figs/Skw.png')    
    show()
    
    PI_ = zeros((nk,nk,nw+1), dtype=complex)
    for ik1 in range(nk):
        for ik2 in range(nk):
            for iq1 in range(nk):
                for iq2 in range(nk):
                    ip1 = ((ik1+iq1)-nk//2)%nk
                    ip2 = ((ik2+iq2)-nk//2)%nk
                    
                    E1 = ekmu[ik1,ik2]
                    E2 = ekmu[ip1,ip2]

                    nF1 = 1.0/(exp(beta*E1)+1.0)
                    nF2 = 1.0/(exp(beta*E2)+1.0)

                    if abs(E1-E2)<1e-14:
                        PI_[iq1,iq2,0] += -beta * nF1 * (1-nF1)     
                        PI_[iq1,iq2,1:] += (nF1 - nF2)/(1j*vn[1:] + E1 - E2)
                    else:
                        PI_[iq1,iq2,:] += (nF1 - nF2)/(1j*vn + E1 - E2)         

    PI_ *= 2.0 * params['g0']**2 / nk**2

    print('PI-PI_', mean(abs(PI-PI_)))

    '''
    figure()
    plot(ravel(PI).imag-ravel(PI_).imag)
    plot(ravel(PI).real-ravel(PI_).real)
    title('re diff PIkw')
    #savefig('figs/diff_PIkw.png')
    '''

    figure()
    plot(ravel(PI).imag)
    plot(ravel(PI_).imag)
    title('Im PIkw')

    figure()
    plot(ravel(PI).real)
    plot(ravel(PI_).real)
    title('Re PIkw')
    show()