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)
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