def compute_extrap(L, filling, bond_dim, correlation_type, at_x=None):
    ## Load all bond dimensions
    sets = map(lambda parms: to_dataset(*utils.load_or_evaluate('densdens', evaluate, **parms)),
               utils.iter_bond_dim(L=L, filling=filling, correlation_type=correlation_type))
    sets = filter(lambda d: d.props is not None, sets)
    
    ## Extrapolate
    return extrapolate_local.extrapolate(sets, 'Density Correlation', foreach=['L', 't\'', 'Nup_total', 'Ndown_total'], extrap_type=bond_dim.type, deg=bond_dim.deg, num_points=bond_dim.num_points, full_output_at=[at_x])
def compute_extrap(L, filling, bond_dim, correlation_type, at_x=None):
    ## Load all bond dimensions
    sets = map(
        lambda parms: to_dataset(*utils.load_or_evaluate("pairfield", evaluate, **parms)),
        utils.iter_bond_dim(L=L, filling=filling, correlation_type=correlation_type),
    )
    sets = filter(lambda d: d.props is not None, sets)

    ## Extrapolate
    return extrapolate_local.extrapolate(
        sets,
        "Pairfield Correlation",
        foreach=["L", "t'", "Nup_total", "Ndown_total"],
        extrap_type=bond_dim.type,
        deg=bond_dim.deg,
        num_points=bond_dim.num_points,
        full_output_at=[at_x],
    )
예제 #3
0
def compute_extrap(L, filling, bond_dim, at_x=None):
    ## Load all bond dimensions
    sets = map(lambda parms: to_dataset(*utils.load_or_evaluate('density', evaluate, **parms)),
               utils.iter_bond_dim(L=L, filling=filling))
    sets = filter(lambda d: d.props is not None, sets)
    
    # check that particle density in the middle is symmetric, otherwise exclude dataset
    # for L=192 it is better to use only M > 2000
    def symm_middle_filter(d):
        x = int(d.props['L'] / 2)
        delta = abs(d.y[x] - d.y[x-1]) if d.props['L']%2==0 else abs(d.y[x+1] - d.y[x-1])
        if delta > 5e-5:
            print '# Discard L={L:.0f}, n={filling}, tperp={t\'}, M={max_bond_dimension:.0f} : middle density not symmetry, delta={delta}'.format(delta=delta, **d.props)
            return False
        return True
    sets = filter(symm_middle_filter, sets)
    
    
    ## Extrapolate
    return extrapolate_local.extrapolate(sets, 'Rung density', foreach=['L', 't\'', 'Nup_total', 'Ndown_total'], extrap_type=bond_dim.type, deg=bond_dim.deg, num_points=bond_dim.num_points, full_output_at=[at_x])