def get_zeros(shape, num_charges, dtype=np.float64):
    R = len(shape)
    charges = [
        BaseCharge(np.random.randint(-5, 6, (num_charges, shape[n])),
                   charge_types=[U1Charge] * num_charges) for n in range(R)
    ]
    flows = list(np.full(R, fill_value=False, dtype=np.bool))
    indices = [Index(charges[n], flows[n]) for n in range(R)]
    return BlockSparseTensor.zeros(indices=indices, dtype=dtype)
Exemplo n.º 2
0
def eye_sym(charges, flows, pivot=1):

    ind_temp = [Index(charges[n], flows[n]) for n in range(len(flows))]
    arr = BT.zeros(ind_temp)

    sparse_blocks, cs, dims = _find_transposed_diagonal_sparse_blocks(
        charges, flows, pivot, list(range(len(charges))))
    for k in range(len(cs)):
        arr.data[sparse_blocks[k]] = np.eye(N=dims[0, k], M=dims[1,
                                                                 k]).flatten()
    return arr