def compute(fname):
    print "loading", fname
    data = load_raw_data.loadEigenstateMeasurements(
        [fname], what=["pair field 1", "pair field 2", "pair field 3", "pair field 4"]
    )
    flat_data = pyalps_dset.flatten(data)
    flat_data = filter(lambda d: type(d) != list or (len(d) > 0 and type(d[0]) != list), flat_data)
    if len(flat_data) < 4:
        print "WARNING:", "Not enough datasets loaded in", fname
        return None

    common_props = pyalps_dset.dict_intersect([d.props for d in pyalps_dset.flatten(data)])

    L = int(common_props["L"])
    W = int(common_props["W"]) if "W" in common_props else 2
    idx = index_map(L, W)

    try:
        pairfield_1 = select_to_nd(data, "pair field 1", idx, dims=4)
        pairfield_2 = select_to_nd(data, "pair field 2", idx, dims=4)
        pairfield_3 = select_to_nd(data, "pair field 3", idx, dims=4)
        pairfield_4 = select_to_nd(data, "pair field 4", idx, dims=4)
    except ObservableNotFound:
        print "WARNING:", "Measurement not found in", fname
        return None

    ix_lower = idx[:, 0].reshape(L, 1)
    ix_upper = idx[:, 1].reshape(L, 1)
    jx_lower = idx[:, 0].reshape(1, L)
    jx_upper = idx[:, 1].reshape(1, L)

    corr = np.zeros((L, L))

    corr += +pairfield_1[ix_lower, ix_upper, jx_lower, jx_upper]
    corr += -pairfield_2[ix_lower, ix_upper, jx_lower, jx_upper]
    corr += -pairfield_3[ix_lower, ix_upper, jx_lower, jx_upper]
    corr += +pairfield_4[ix_lower, ix_upper, jx_lower, jx_upper]

    d = pyalps_dset.DataSet()
    d.props = deepcopy(common_props)
    d.props["observable"] = "Pairfield Correlation"
    d.y = corr
    d.idx = idx

    return d
예제 #2
0
def compute(fname, nup_name='Local density up', ndown_name='Local density down'):
    data = load_raw_data.loadEigenstateMeasurements([fname], what=[nup_name, ndown_name])
    d = get_density(data)
    return d
def compute(fname):
    data = load_raw_data.loadEigenstateMeasurements([fname],
                    what=[
                          'dens corr up-up',
                          'dens corr up-down',
                          'dens corr down-up',
                          'dens corr down-down',
                          'Local density up',
                          'Local density down',
                          ])
    flat_data = pyalps_dset.flatten(data)
    flat_data = filter(lambda d: type(d) != list or (len(d) > 0 and type(d[0]) != list), flat_data)
    if len(flat_data) < 6:
        print 'WARNING:', 'Not enough datasets loaded in', fname
        return None
    
    common_props = pyalps_dset.dict_intersect([d.props for d in pyalps_dset.flatten(data)])
    
    L = int(common_props['L'])
    W = int(common_props['W']) if 'W' in common_props else 2
    idx = index_map(L, W)
    
    try:
        dcor_up_up     = select_to_2d(data, 'dens corr up-up'    , idx)
        dcor_up_down   = select_to_2d(data, 'dens corr up-down'  , idx)
        dcor_down_up   = select_to_2d(data, 'dens corr down-up'  , idx)
        dcor_down_down = select_to_2d(data, 'dens corr down-down', idx)
        dens_up        = select_to_1d(data, 'Local density up'   , idx)
        dens_down      = select_to_1d(data, 'Local density down' , idx)
    except ObservableNotFound:
        print 'WARNING:', 'Measurement not found in', fname
        return None
    
    ix_lower_chain = idx[:,0]
    ix_upper_chain = idx[:,1]
    
    total_dens = dens_up + dens_down
    dens_on_rungs = total_dens[ix_lower_chain] + total_dens[ix_upper_chain]
    
    
    dcor = np.zeros((L,L))
    ## combine density correlators for <N(i)*N(j)> between rungs
    dcor += dcor_up_up    [np.ix_(ix_lower_chain, ix_lower_chain)]
    dcor += dcor_up_down  [np.ix_(ix_lower_chain, ix_lower_chain)]
    dcor += dcor_down_up  [np.ix_(ix_lower_chain, ix_lower_chain)]
    dcor += dcor_down_down[np.ix_(ix_lower_chain, ix_lower_chain)]
    
    dcor += dcor_up_up    [np.ix_(ix_lower_chain, ix_upper_chain)]
    dcor += dcor_up_down  [np.ix_(ix_lower_chain, ix_upper_chain)]
    dcor += dcor_down_up  [np.ix_(ix_lower_chain, ix_upper_chain)]
    dcor += dcor_down_down[np.ix_(ix_lower_chain, ix_upper_chain)]
    
    dcor += dcor_up_up    [np.ix_(ix_upper_chain, ix_lower_chain)]
    dcor += dcor_up_down  [np.ix_(ix_upper_chain, ix_lower_chain)]
    dcor += dcor_down_up  [np.ix_(ix_upper_chain, ix_lower_chain)]
    dcor += dcor_down_down[np.ix_(ix_upper_chain, ix_lower_chain)]
    
    dcor += dcor_up_up    [np.ix_(ix_upper_chain, ix_upper_chain)]
    dcor += dcor_up_down  [np.ix_(ix_upper_chain, ix_upper_chain)]
    dcor += dcor_down_up  [np.ix_(ix_upper_chain, ix_upper_chain)]
    dcor += dcor_down_down[np.ix_(ix_upper_chain, ix_upper_chain)]
    
    ## connected correlator
    dcor += -np.outer(dens_on_rungs, dens_on_rungs)
    
    
    d = pyalps_dset.DataSet()
    d.props = deepcopy(common_props)
    d.props['observable'] = 'Density Correlation'
    d.y = dcor
    d.idx = idx
    
    return d
예제 #4
0
def compute(fname):
    data = load_raw_data.loadEigenstateMeasurements([fname], what='Energy')
    return data[0][0]